2017-01-23 12 views
1

나는 두 개의 데이터베이스2 개의 다른 데이터베이스에서 2 개의 프로 시저가 이름을 공유 할 때 BizTalk 메시지 유형 충돌을 해결하는 방법은 무엇입니까?

  1. DB1
  2. DB2

내가 그 데이터베이스 모두에서 절차 dbo.Procedure을 가지고 있습니다.

BizTalk에서 이러한 절차를 실행하려면 "어댑터 서비스 소비"를 사용하고 있습니다.

A response message sent to adapter "WCF-Custom" on Receive Location: xxx... Reason: Cannot locate document specification because multiple schemas matched the message type http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#Procedure ".

가 어떻게 DB1 또는 DB2에서 절차의 이름을 변경하지 않고이 문제를 해결할 수 있습니다 : 실행에

나는 오류를 받고 있어요?

+0

래퍼를 만들거나 출력 유형을 변경할 필요가 없습니다. 그것은 단지 일을 더욱 복잡하게 만듭니다. 각 수신 위치에 대한 사용자 지정 파이프 라인 만 있으면됩니다. 그것이 올바른 절차입니다. –

답변

0

나도 같은 targetNamespace 및 루트 노드 이름으로 배포 된 스키마를 피하기 것 -하지만 당신이 할 수없는 당신은 WCF-SQL/사용자 정의 어댑터 (들)와 TypedProcedure 유형을 사용해야합니다.

작업 방법 :

  • 는 당신이 실제로 다시 결과 집합을 입력 받고하지 않는 두 경우에 TypedProcedure를 사용하지 마십시오. 특히 반환 코드가 있거나 프로 시저에서 실제로 XML을 반환하는 경우 (예 : SELECT ... FOR XML ...) 결과 집합을 처리하지 않는 경우 Procedure 또는 XmlProcedure을 적절하게 사용할 수 있습니다. 사실, proc (s)에서 XML을 반환하는 경우 해당 결과에 대해 강력한 형식 스키마가있는 XmlProcedure을 사용하는 것이 가장 좋을 수 있습니다. 그들은 둘 다 반환 값을 반환하는 경우 그냥하고 싶습니다 ...
  • 그래도 작동하지 않으면 하나 또는 둘 다에 대한 몇 가지 래퍼 프로 시저를 만듭니다. 예 : bts.Db1Procedure이라는 DB1에 새로운 proc를 작성하십시오. (DBA가 bts이라는 스키마에 BizTalk 특정 프로 시저를 두는 것이 좋으므로 DBA는이를 실현합니다. 그러나 이것은 dbo도 사용할 수 있습니다). 이 절차에 동일한 매개 변수를 사용하고 dbo.Procedure으로 전달하십시오. 충돌하는 대신이 절차를 가리 키도록 스키마를 다시 생성/수정하십시오.

명심해야 할 것은 어댑터가 절차의

  • 이름으로

    1. proc 디렉토리는 스키마를 파악하기 위해 targetNamespace 루트 노드 이름을 사용한다는 것입니다
    2. 결과 집합 (generic, typed 또는 xml)의 모양
  • 1

    동일한 루트 + 네임 스페이스를 사용하여 스키마를 배포하는 데 문제가 있으며 언젠가는이 경우와 같이 피할 수 없습니다.

    1. 각각 XmlDisassembler를 사용하여 두 개의 사용자 지정 파이프 라인을 만듭니다.
    2. 각 XmlDisassembler에서 해당 포트에서 처리 할 것으로 예상되는 문서 사양을 설정하십시오.
    3. 배포.
    4. 수신 파이프 라인을 해당 위치의 사용자 지정 파이프 라인으로 설정하십시오.
    0

    간단한 BizTalk 시나리오의 경우 다른 방법으로는 CompositeO peration-schema. 이렇게하면 저장 프로 시저에서 스키마를 배포하지 않아도됩니다.

    "합성"- 스키마 내에서 지원되는 다른 모든 SQL 조작을 추가 할 수 있습니다. 송신 포트의 조작은 "CompositeOperation"입니다.

    귀하의 복합 스키마는 다음과 같이 보일 것 : 그것은 당신의 XSLT를 완료하는 데 도움 줘야로 개발 목적 Composite Operation

    , 당신은 여전히 ​​당신의 저장 프로 시저에 대한 스키마를 생성 할 수 있습니다,하지만 당신은 더 이상 할 BizTalk에서 배포해야합니다.

    또한이 방법은 사용자 지정 XSLT 대신 BizTalk 매퍼를 사용할 때 작동하지 않습니다.