다음을 통해 공유


BizTalk Server를 사용하여 SQL에서 FOR XML 절과 함께 SELECT 문을 사용하여 폴링 메시지 받기

SELECT 문 또는 FOR XML 절이 포함된 저장 프로시저를 사용하여 SQL Server 테이블 또는 뷰에 대한 주기적인 데이터 변경 메시지를 받도록 SQL 어댑터를 구성할 수 있습니다. 이러한 문을 어댑터가 데이터베이스를 폴링하기 위해 실행하는 폴링 문으로 지정할 수 있습니다. 폴링 문은 SELECT 문 또는 결과 집합을 반환하는 저장 프로시저일 수 있습니다.

어댑터가 폴링을 지원하는 방법에 대한 자세한 내용은 폴링 지원을 참조하세요. 폴링 작업에 대한 SOAP 메시지의 구조에 대한 자세한 내용은 폴링 및 TypedPolling 작업에 대한 메시지 스키마를 참조하세요. SQL FOR XML 절 은 자세한 내용을 제공합니다.

비고

이 항목에서는 XmlPolling 인바운드 작업을 사용하여 폴링 메시지를 받는 방법을 보여 줍니다. XmlPolling 작업은 SELECT 문 또는 FOR XML 절을 포함하는 저장 프로시저를 사용하여 SQL Server 데이터베이스를 폴링하는 데 사용됩니다. XmlPolling 작업에 대한 메시지에는 SELECT 문을 실행하여 받은 xml 메시지 또는 SQL Server Management Studio의 저장 프로시저가 포함됩니다.

어댑터를 사용하여 다양한 유형의 폴링 메시지를 받을 수도 있습니다.

중요합니다

단일 BizTalk 애플리케이션에서 둘 이상의 폴링 작업을 수행하려면 연결 URI의 일부로 InboundID 연결 속성을 지정하여 고유하게 만들어야 합니다. 고유한 연결 URI를 사용하면 동일한 데이터베이스 또는 데이터베이스에서 동일한 테이블을 폴링하는 여러 수신 포트를 만들 수 있습니다. 자세한 내용은 BizTalk Server를 사용하여 SQL에서 여러 수신 포트에서 폴링 메시지 받기를 참조하세요.

이 주제가 폴링을 어떻게 보여주는지

이 항목에서는 SQL 어댑터가 데이터 변경 메시지 수신을 지원하는 방법을 설명하기 위해 FOR XML 절과 함께 SELECT 문을 사용하여 SQL Server 데이터베이스를 폴링합니다. SQL Server Management Studio에서 이러한 문을 호출하면 출력은 xml 메시지 형식입니다. 이러한 문을 사용하여 SQL Server 데이터베이스를 폴링하려면 응답 xml 메시지의 스키마가 있어야 합니다. SQL 어댑터는 FOR XML 절을 사용하여 SELECT 문을 실행한 후 이 스키마가 폴링 메시지를 수신하도록 요구합니다. 따라서 FOR XML 절과 함께 SELECT 문을 사용하여 SQL Server 데이터베이스를 폴링하려면 다음 작업 집합을 수행해야 합니다.

  1. FOR XML 절을 사용하여 SELECT 문의 XML 응답 메시지에 대한 스키마를 생성합니다.

  2. BizTalk 프로젝트를 만들고 생성된 스키마를 프로젝트에 추가합니다.

  3. SQL Server 데이터베이스에서 XML 응답 메시지를 수신하기 위한 메시지를 BizTalk 프로젝트에 만듭니다.

  4. SQL Server 데이터베이스에서 메시지를 수신하고 폴더에 저장하는 오케스트레이션을 만듭니다.

  5. BizTalk 프로젝트를 빌드하고 배포합니다.

  6. 물리적 송신 및 수신 포트를 만들어 BizTalk 애플리케이션을 구성합니다.

    중요합니다

    인바운드 폴링 시나리오의 경우 항상 단방향 WCF-Custom 또는 WCF-SQL 수신 포트를 구성해야 합니다. 양방향 WCF-Custom 또는 WCF-SQL 수신 포트는 인바운드 작업에 지원되지 않습니다.

  7. BizTalk 애플리케이션을 시작합니다.

SELECT 문에 대한 응답 메시지에 대한 스키마 생성

xmlschema 절과 for xml 절을 포함하여 SELECT 문에 대한 응답 메시지의 스키마를 생성할 수 있습니다. 이 항목에서는 SELECT 문을 사용하여 지정된 직원 ID에 대한 직원 세부 정보를 검색합니다. SELECT 문을 실행하여 스키마를 검색하려면 SELECT 문을 다음과 같은 방식으로 작성해야 합니다.

SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto, xmlschema

이 SELECT 문을 실행하여 응답 메시지의 스키마를 가져옵니다. 스키마를 저장합니다. 이제 Visual Studio에서 BizTalk 프로젝트를 만들고 이 스키마를 프로젝트에 추가해야 합니다. 이 예제에서는 이 스키마의 이름을 PollingResponse.xsd로 지정할 수 있습니다.

중요합니다

SELECT 문을 실행하여 xmlschema 스키마를 생성한 후에 절을 제거해야 합니다. 이 작업을 수행하지 못한 경우 XmlPolling 작업의 일부로 BizTalk를 통해 SELECT 문을 실행하면 응답 메시지에 스키마가 다시 생성됩니다. 따라서 응답 메시지를 xml로 가져오려면 절을 xmlschema 제거해야 합니다.

BizTalk 프로젝트에 스키마를 추가하려면

  1. Visual Studio에서 BizTalk 프로젝트를 만듭니다.

  2. 저장 프로시저에 대해 생성한 응답 스키마를 BizTalk 프로젝트에 추가합니다. 솔루션 탐색기에서 BizTalk 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기존 항목을 클릭합니다. 기존 항목 추가 대화 상자에서 스키마를 저장한 위치로 이동하고 추가를 클릭합니다.

  3. Visual Studio에서 스키마를 열고 다음을 변경합니다.

    1. 스키마에 노드를 추가하고 새로 추가된 이 노드에서 기존 루트 노드를 이동합니다. 루트 노드에 이름을 지정합니다. 이 항목의 경우 루트 노드의 이름을 Root로 바꿉니다.

    2. SELECT 문에 대해 생성된 응답 스키마는 sqltypes.xsd를 참조합니다. sqltypes.xsd 스키마를 https://go.microsoft.com/fwlink/?linkid=31850에서 가져올 수 있습니다. BizTalk 프로젝트에 sqltypes.xsd 스키마를 추가합니다. 이 스키마에 대한 자세한 내용은 다음을 참조하십시오.

    3. SELECT 문에 대해 생성된 스키마에서 값을 import schemaLocation 다음으로 변경합니다.

      import schemaLocation=”sqltypes.xsd”
      

      BizTalk 프로젝트에 sqltypes.xsd 스키마를 이미 추가했으므로 이 작업을 수행합니다.

    4. 스키마에 대한 대상 네임스페이스를 제공합니다. <스키마> 노드를 클릭하고, 속성 창에서 대상 네임스페이스 속성에 네임스페이스를 지정합니다. 이 항목의 경우 네임스페이스를 .로 http://ForXmlPolling/namespace지정합니다.

메시지 및 메시지 형식 정의

이전에 생성한 스키마는 오케스트레이션의 메시지에 필요한 "형식"을 설명합니다. 메시지는 일반적으로 해당 스키마에 의해 정의된 형식인 변수입니다. 스키마가 생성되면 BizTalk 프로젝트의 오케스트레이션 보기에서 메시지에 연결해야 합니다.

이 항목의 경우 SQL Server 데이터베이스에서 메시지를 받을 메시지를 하나 만들어야 합니다.

다음 단계를 수행하여 메시지를 만들고 스키마에 연결합니다.

  1. BizTalk 프로젝트에 오케스트레이션을 추가합니다. 솔루션 탐색기에서 BizTalk 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다. BizTalk 오케스트레이션의 이름을 입력한 다음 추가를 클릭합니다.

  2. 아직 열려 있지 않은 경우 BizTalk 프로젝트의 오케스트레이션 보기 창을 엽니다. 보기를 클릭하고 다른 창을 가리킨 다음 오케스트레이션 보기를 클릭합니다.

  3. 오케스트레이션 보기에서 메시지를 마우스 오른쪽 단추로 클릭한 다음 새 메시지를 클릭합니다.

  4. 새로 만든 메시지를 마우스 오른쪽 단추로 클릭한 다음 속성 창을 선택합니다.

  5. Message_1속성 창에서 다음을 수행합니다.

    이것을 사용하세요 이 작업을 수행하려면
    식별자 PollingMessage를 입력합니다.
    메시지 유형 드롭다운 목록에서 스키마를 확장하고 ForXMLPolling.PollingResponse를 선택합니다. 여기서 ForXMLPolling 은 BizTalk 프로젝트의 이름입니다. PollingResponseBizTalk Server를 사용하여 SQL에서 FOR XML 절과 함께 SELECT 문을 사용하여 수신 폴링 메시지에 설명된 대로 SELECT 문을 실행하여 생성된 응답 스키마의 이름입니다.

오케스트레이션 설정

BIzTalk Server를 사용하여 SQL Server 데이터베이스에서 폴링 기반 데이터 변경 메시지를 수신하려면 BizTalk 오케스트레이션을 만들어야 합니다. 이 오케스트레이션에서 어댑터는 PollingStatement 바인딩 속성에 지정된 select 문의 응답을 받습니다. SELECT 문에 대한 응답은 FILE 위치에 저장됩니다. SQL Server 데이터베이스 폴링에 대한 일반적인 오케스트레이션에는 다음이 포함됩니다.

  • SQL Server에서 메시지를 수신하고 각각 FILE 포트로 보낼 셰이프를 수신하고 보냅니다.

  • SQL Server에서 메시지를 수신하는 단방향 수신 포트입니다.

    중요합니다

    인바운드 폴링 시나리오의 경우 항상 단방향 수신 포트를 구성해야 합니다. 양방향 수신 포트는 인바운드 작업에 지원되지 않습니다.

  • SQL Server 데이터베이스에서 폴더로 폴링 응답을 보내는 단방향 송신 포트입니다.

    샘플 오케스트레이션은 다음과 유사합니다.

    SQL Server 데이터베이스 폴링을 위한 오케스트레이션

메시지 셰이프 추가

각 메시지 셰이프에 대해 다음 속성을 지정해야 합니다. 셰이프 열에 나열된 이름은 방금 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.

모양 도형 종류 속성
메시지 받기 받다 - NameReceiveMessage로 설정

- 활성화True로 설정
메시지 저장 전송 - SaveMessage이름 설정

포트 추가

각 논리 포트에 대해 다음 속성을 지정해야 합니다. 포트 열에 나열된 이름은 오케스트레이션에 표시된 포트의 이름입니다.

항구 속성
SQLReceivePort - 식별자를SQLReceivePort로 설정

- 형식SQLReceivePortType으로 설정

- 통신 패턴을단방향으로 설정

- 통신 방향수신으로 설정
SaveMessagePort - SaveMessagePort식별자 설정

- 형식SaveMessagePortType으로 설정

- 통신 패턴을단방향으로 설정

- 통신 방향 설정을 전송으로

작업 셰이프에 대한 메시지 지정 및 포트에 연결

다음 표에서는 작업 셰이프에 대한 메시지를 지정하고 메시지를 포트에 연결하도록 설정해야 하는 속성과 해당 값을 지정합니다. 셰이프 열에 나열된 이름은 앞에서 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.

모양 속성
메시지 받기 - 메시지수신으로 설정.

- SQLReceivePort.XmlPolling.Request작업 설정
메시지 저장 - 메시지수신으로 설정.

- SaveMessagePort.XmlPolling.Request작업 설정

이러한 속성을 지정하면 메시지 셰이프와 포트가 연결되고 오케스트레이션이 완료됩니다.

이제 BizTalk 솔루션을 빌드하고 BizTalk Server에 배포해야 합니다. 자세한 내용은 오케스트레이션 빌드 및 실행을 참조하세요.

BizTalk 애플리케이션 구성

BizTalk 프로젝트를 배포한 후에는 이전에 만든 오케스트레이션이 BizTalk Server 관리 콘솔의 오케스트레이션 창 아래에 나열됩니다. BizTalk Server 관리 콘솔을 사용하여 애플리케이션을 구성해야 합니다. 절차에 대해 알아보려면 기본 BizTalk 애플리케이션 배포: 연습을 참조하세요.

애플리케이션 구성에는 다음이 포함됩니다.

  • 애플리케이션에 대한 호스트를 선택합니다.

  • 오케스트레이션에서 만든 포트를 BizTalk Server 관리 콘솔의 실제 포트에 매핑합니다. 이 오케스트레이션을 위해, 당신은 다음을 수행해야 합니다.

    • 하드 디스크의 위치와 BizTalk 오케스트레이션이 SQL Server 데이터베이스에서 메시지를 삭제하는 해당 파일 포트를 정의합니다. 수신 포트에 대해 지정한 폴링 명령문에 대한 응답으로 이러한 메시지가 생성됩니다.

    • 물리적 WCF-Custom 또는 WCF-SQL 단방향 수신 포트를 정의하십시오. 이 포트는 포트에 대해 지정한 폴링 문을 사용하여 SQL Server 데이터베이스를 폴링합니다. 포트를 만드는 방법에 대한 자세한 내용은 SQL 어댑터에 대한 물리적 포트 바인딩 수동 구성을 참조하세요. 수신 포트에 대해 다음 바인딩 속성을 지정해야 합니다.

      중요합니다

      디자인 타임에 바인딩 속성을 지정한 경우에는 이 단계를 수행할 필요가 없습니다. 이 경우 어댑터 서비스 사용 추가 기능에서 만든 바인딩 파일을 가져와 필요한 바인딩 속성이 설정된 WCF 사용자 지정 또는 WCF-SQL 수신 포트를 만들 수 있습니다. 자세한 내용은 SQL 어댑터를 사용하도록 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.

      바인딩 속성 가치
      InboundOperationType 이를 XmlPolling으로 설정해야 합니다.
      수집된 데이터 사용 가능 선언문 SQL 문을 지정해야 합니다. 이 항목의 경우 다음을 지정합니다.

      SELECT COUNT(*) FROM Employee
      PollingStatement 스키마를 생성하는 동안 지정한 xmlschema 절을 제외하고 동일한 문을 제공해야 합니다. 이는 BizTalk Server를 사용하여 SQL에서 FOR XML 절과 함께 SELECT 문을 사용하여 수신 폴링 메시지에 설명된 방법을 따릅니다.

      SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto

      메모: SELECT 문에는 절이 xmlschema 포함되어 있지 않습니다.
      XmlStoredProcedureRootNodeName SELECT 문에 대한 응답 메시지에 대한 스키마 생성에 설명된 대로 SELECT 문에 대해 생성한 응답 스키마에 추가한 루트 노드의 이름을 지정합니다. 이 항목의 경우 이를 Root로 설정합니다.
      XmlStoredProcedureRootNodeNamespace SELECT 문에 대한 응답 메시지에 대한 스키마 생성에 설명된 대로 SELECT 문 에 대해 생성한 응답 스키마의 대상 네임스페이스를 지정합니다. 이 항목의 경우 이 항목을 으로 http://ForXmlPolling/namespace설정합니다.

      다양한 바인딩 속성에 대한 자세한 내용은 BIzTalk Adapter for SQL Server 어댑터 바인딩 속성에 대한 읽기를 참조하세요.

      비고

      SQL 어댑터를 사용하여 인바운드 작업을 수행하는 동안 트랜잭션 격리 수준 및 트랜잭션 시간 제한을 구성하는 것이 좋습니다. 수신 포트를 구성할 때 WCF-Custom 또는 WCF-SQL에 서비스 동작을 추가하여 수행할 수 있습니다. 서비스 동작을 추가하는 방법에 대한 지침은 SQL을 사용하여 트랜잭션 격리 수준 및 트랜잭션 시간 제한 구성을 참조하세요.

애플리케이션 시작

SQL Server 데이터베이스에서 메시지를 수신하려면 BizTalk 애플리케이션을 시작해야 합니다. BizTalk 애플리케이션 시작에 대한 지침은 오케스트레이션을 시작하는 방법을 참조하세요.

이 단계에서는 다음을 확인합니다.

  • PollingStatement 바인딩 속성에 지정된 문을 사용하여 SQL Server 데이터베이스를 폴링하는 WCF-Custom 또는 WCF-SQL 단방향 수신 포트가 실행 중입니다.

  • SQL Server에서 메시지를 수신하는 FILE 송신 포트가 실행 중입니다.

  • 작업에 대한 BizTalk 오케스트레이션이 실행 중입니다.

작업 실행

애플리케이션을 실행한 후 동일한 순서로 다음 작업 집합이 수행됩니다.

  • 어댑터는 Employee 테이블에서 PolledDataAvailableStatement 를 실행하고 테이블에 폴링 레코드가 있는지 확인합니다.

  • 어댑터는 폴링 문을 실행하고 SQL Server 데이터베이스에서 폴링 메시지를 받습니다. 폴링 문은 FOR XML 절이 있는 SELECT 문으로 구성되므로 어댑터에서 받은 폴링 메시지는 다음과 유사합니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <Root xmlns="http://ForXmlPolling/namespace">
      <Employee Employee_ID="10765" Name="John" Designation="Tester" xmlns="" />
      <Employee Employee_ID="10766" Name="Sam" Designation="Manager" xmlns="" />
      .....
      .....
    </Root>
    

    xmlschema 절을 사용하여 SELECT 문을 실행하여 생성된 것과 동일한 스키마에서 폴링 메시지가 수신됩니다. 또한 루트 노드와 네임스페이스는 각각 XmlStoredProcedureRootNodeNameXmlStoredProcedureRootNodeNamespace 바인딩 속성에 대한 값으로 지정한 것과 동일합니다.

비고

BIzTalk Server 관리 콘솔에서 수신 포트를 명시적으로 사용하지 않도록 설정할 때까지 SQL 어댑터는 계속 폴링됩니다.

모범 사례

BizTalk 프로젝트를 배포하고 구성한 후에는 구성 설정을 바인딩 파일이라는 XML 파일로 내보낼 수 있습니다. 바인딩 파일을 생성한 후에는 파일에서 구성 설정을 가져올 수 있으므로 송신 포트를 만들고 동일한 오케스트레이션에 대한 수신 포트를 만들 필요가 없습니다. 바인딩 파일에 대한 자세한 내용은 어댑터 바인딩 재사용을 참조하세요.

또한 참조하십시오

BizTalk Server에서 SQL 어댑터를 사용하여 SQL Server 폴링