다음을 통해 공유


SQL 어댑터를 사용하여 쿼리 알림 받기에 대한 고려 사항

이 항목에서는 SQL 어댑터를 사용하여 SQL Server 데이터베이스에서 쿼리 알림을 받는 동안 유의해야 할 몇 가지 고려 사항 및 모범 사례를 제공합니다.

어댑터를 사용하여 알림을 받는 동안 고려 사항

쿼리 알림을 받으려면 SQL 어댑터를 사용하는 동안 다음을 고려해야 합니다.

  • SQL 어댑터는 SQL Server 쿼리 알림을 받은 다음 어댑터 클라이언트에 알림을 전달합니다. 어댑터는 다른 작업에 대한 알림을 구분하지 않습니다(즉, 어댑터에 삽입 작업 또는 업데이트 작업에 대한 특정 알림인지에 대한 정보가 없습니다).

  • 작업에 대한 알림 메시지는 해당 작업의 영향을 받는 레코드 수의 영향을 받지 않습니다. 예를 들어 SQL Server 데이터베이스 테이블에 삽입, 업데이트 또는 삭제된 레코드 수에 관계없이 어댑터 클라이언트는 하나의 알림 메시지만 수신합니다.

  • 어댑터 클라이언트 애플리케이션에는 SQL Server 받은 알림 유형을 해석하는 논리가 포함되어 있는 것이 좋습니다. 알림 유형은 받은 알림 메시지의 Info> 요소에서< 정보를 추출하여 확인할 수 있습니다. 다음은 삽입 작업에 대해 받은 알림 메시지의 예입니다.

    <Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/">  
      <Info>Insert</Info>  
      <Source>Data</Source>  
      <Type>Change</Type>  
    </Notification>  
    

    Info 요소 내의 값을 확인<합니다.> 이 값은 알림 메시지가 수신된 작업에 대한 정보를 제공합니다. 애플리케이션에는 Info> 요소 내에서< 값을 추출한 다음, 값에 따라 후속 작업을 수행하는 기능이 있어야 합니다. BizTalk Server 사용하여 SQL에서 특정 작업을 완료하기 위한 알림 메시지 처리 항목에는 Info> 요소 내에서 값을 추출하는 방법에 대한 지침이< 있습니다. 비슷한 작업을 수행하는 자세한 자습서는 자습서 2: 직원 - SQL 어댑터를 사용한 구매 주문 프로세스에서도 사용할 수 있습니다.

  • 이상적으로는 클라이언트 애플리케이션이 특정 레코드에 대한 알림을 받은 후 추가 알림을 받지 않도록 해당 레코드를 업데이트해야 합니다. 예를 들어 상태 열이 있는 Employee 테이블을 생각해 보세요. Employee 테이블에 삽입된 모든 새 레코드의 경우 Status 열의 값은 항상 "0"이므로 테이블은 다음과 같이 표시됩니다.

    Employee Name 상태
    John 0

    새로 삽입된 레코드에 대한 알림을 수신하기 위해 어댑터 클라이언트는 NotificationStatement 바인딩 속성을 다음과 같이 설정합니다.

    SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0  
    

    참고

    이 SELECT 문에 표시된 대로 문에서 열 이름을 구체적으로 지정해야 합니다. 또한 항상 스키마 이름과 함께 테이블 이름을 지정해야 합니다. 예를 들어 dbo입니다. 직원.

    알림을 받은 후 클라이언트 애플리케이션은 알림 문이 레코드에서 다시 작동하지 않도록 상태 열의 값을 "1"로 다시 설정해야 합니다. 이를 위해 클라이언트 애플리케이션은 Employee 테이블에서 업데이트 작업을 수행해야 합니다. 업데이트 작업 후에 Employee 테이블의 동일한 레코드는 다음과 같습니다.

    Employee Name 상태
    John 1

    흥미롭게도 업데이트 작업은 다시 어댑터 클라이언트에 알림을 보내고 전체 프로세스가 다시 반복되므로 클라이언트 애플리케이션에는 이러한 원치 않는 알림을 삭제하는 데 필요한 논리가 있어야 합니다.

  • NotifyOnListenerStart 바인딩 속성이 true이면 어댑터 클라이언트는 수신 위치가 시작될 때마다 알림 메시지를 받습니다. 바인딩 속성을 사용하고 알림 메시지를 해석하는 방법에 대한 자세한 내용은 BizTalk Server 사용하여 SQL에서 수신 위치 분석 후 쿼리 알림 받기를 참조하세요.

알림을 받기 위한 일반적인 오케스트레이션

이 섹션에서는 SQL 어댑터를 사용하여 알림을 받기 위한 일반적인 오케스트레이션 흐름을 간략하게 설명합니다.

  1. 오케스트레이션에서 가장 먼저 해야 할 일은 다음을 포함하여 수신된 알림 유형을 결정하는 것입니다.

    • 수신 위치가 다시 시작된 후 알림이 수신되었는지 여부입니다.

    • 삽입, 업데이트 또는 삭제와 같은 데이터베이스 테이블에 대한 작업에 대한 알림을 받았는지 여부입니다.

      오케스트레이션에는 셰이프가 포함되어야 하며, 그 안에는 수신되는 메시지 종류를 결정하는 xpath 쿼리가 포함되어야 합니다.

  2. 알림 유형이 결정되면 오케스트레이션에는 수신된 알림 유형에 따라 특정 작업을 수행하기 위한 의사 결정 블록이 포함되어야 합니다. 이를 위해 오케스트레이션에는 규칙 블록과 Else 블록이 포함된 Decide 셰이프가 포함되어야 합니다.

    • 규칙 블록 내에서 조건을 지정한 다음, 조건이 충족되는 경우 특정 작업을 수행하기 위해 오케스트레이션 셰이프를 포함해야 합니다.

    • Else 블록 내에서 조건이 충족되지 않는 경우 특정 작업을 수행하려면 오케스트레이션 셰이프를 포함해야 합니다.

    이전 요구 사항에 대한 자세한 내용은 프로세스 알림 메시지에 설명되어 BizTalk Server 사용하여 SQL의 특정 작업을 완료합니다. 자세한 자습서는 자습서 2: 직원 - SQL 어댑터를 사용한 구매 주문 프로세스에서도 사용할 수 있습니다.