Share via


Überlegungen zum Empfangen von Abfragebenachrichtigungen mithilfe des SQL-Adapters

Dieses Thema enthält einige Überlegungen und bewährte Methoden, die Sie bei der Verwendung des SQL-Adapters zum Empfangen von Abfragebenachrichtigungen von einer SQL Server-Datenbank beachten sollten.

Überlegungen zur Verwendung des Adapters zum Empfangen von Benachrichtigungen

Beachten Sie Folgendes, wenn Sie den SQL-Adapter verwenden, um Abfragebenachrichtigungen zu empfangen:

  • Der SQL-Adapter empfängt die Abfragebenachrichtigung von SQL Server und übergibt die Benachrichtigung dann einfach an die Adapterclients. Der Adapter unterscheidet nicht zwischen den Benachrichtigungen für verschiedene Vorgänge (d. h., der Adapter verfügt nicht über Informationen, ob eine bestimmte Benachrichtigung für einen Einfügevorgang oder einen Updatevorgang gilt).

  • Die Benachrichtigung für einen Vorgang wird von der Anzahl der datensätzen, die von diesem Vorgang betroffen sind, nicht beeinflusst. Beispielsweise empfängt der Adapterclient unabhängig von der Anzahl der Datensätze, die in einer SQL Server Datenbanktabelle eingefügt, aktualisiert oder gelöscht wurden, nur eine Benachrichtigung.

  • Es wird empfohlen, dass die Adapterclientanwendung die Logik enthält, um den Typ der von SQL Server empfangenen Benachrichtigung zu interpretieren. Der Benachrichtigungstyp kann durch Extrahieren der Informationen aus dem <Info-Element> der empfangenen Benachrichtigung bestimmt werden. Hier sehen Sie ein Beispiel für eine Benachrichtigung, die für einen Insert-Vorgang empfangen wurde:

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

    Beachten Sie den Wert im <Info-Element> . Dieser Wert enthält Informationen zu dem Vorgang, für den die Benachrichtigung empfangen wurde. Ihre Anwendung sollte über die Funktionalität verfügen, den Wert innerhalb des <Info-Elements> zu extrahieren und anschließend basierend auf dem Wert nachfolgende Aufgaben auszuführen. Das Thema Verarbeiten von Benachrichtigungen zum Ausführen bestimmter Aufgaben in SQL mit BizTalk Server enthält Anweisungen zum Extrahieren des Werts innerhalb des <Info-Elements>. Ein ausführliches Tutorial, in dem ähnliche Aufgaben ausgeführt werden, finden Sie auch unter Tutorial 2: Employee – Purchase Order Process using the SQL adapter ( Tutorial 2: Employee – Purchase Order Process using the SQL adapter).

  • Im Idealfall sollte dieser Datensatz aktualisiert werden, nachdem die Clientanwendung eine Benachrichtigung für einen bestimmten Datensatz erhalten hat, sodass keine zusätzlichen Benachrichtigungen empfangen werden. Betrachten Sie beispielsweise eine Employee-Tabelle , die über eine Statusspalte verfügt. Für alle neuen Datensätze, die in die Tabelle Employee eingefügt werden, ist der Wert in der Spalte Status immer "0", sodass die Tabelle wie folgt aussieht:

    Employee Name Status
    John 0

    Um Benachrichtigungen für den neu eingefügten Datensatz zu erhalten, legt der Adapterclient die NotificationStatement-Bindungseigenschaft wie folgt fest:

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

    Hinweis

    Sie müssen die Spaltennamen in der Anweisung speziell angeben, wie in dieser SELECT-Anweisung gezeigt. Außerdem müssen Sie immer den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel: dbo. Mitarbeiter.

    Nachdem die Benachrichtigung empfangen wurde, muss die Clientanwendung den Wert der Spalte Status auf "1" zurücksetzen, damit die Benachrichtigungsanweisung nicht erneut für den Datensatz ausgeführt wird. Um dies zu erreichen, muss die Clientanwendung einen Updatevorgang für die Tabelle Employee ausführen. Nach dem Update-Vorgang sieht derselbe Datensatz in der Tabelle Employee wie folgt aus:

    Employee Name Status
    John 1

    Interessanterweise sendet der Updatevorgang erneut eine Benachrichtigung an den Adapterclient, und der gesamte Prozess wird erneut wiederholt. Daher muss die Clientanwendung über die erforderliche Logik verfügen, um solche unerwünschten Benachrichtigungen zu verwerfen.

  • Wenn die NotifyOnListenerStart-Bindungseigenschaft true ist, erhält der Adapterclient bei jedem Start des Empfangsspeicherorts eine Benachrichtigung. Weitere Informationen zur Verwendung der Bindungseigenschaft und zum Interpretieren der Benachrichtigung finden Sie unter Empfangen von Abfragebenachrichtigungen nach einer Aufschlüsselung des Empfangsspeicherorts in SQL mit BizTalk Server.

Typische Orchestrierung für den Empfang von Benachrichtigungen

In diesem Abschnitt wird der typische Orchestrierungsablauf für den Empfang von Benachrichtigungen mithilfe des SQL-Adapters beschrieben.

  1. Die Orchestrierung muss zunächst den Typ der empfangenen Benachrichtigung bestimmen, einschließlich:

    • Gibt an, ob die Benachrichtigung empfangen wurde, nachdem ein Empfangsspeicherort neu gestartet wurde.

    • Gibt an, ob die Benachrichtigung für einen Vorgang für eine Datenbanktabelle empfangen wurde, z. B. Einfügen, Aktualisieren oder Löschen.

      Die Orchestrierung muss ein Ausdrucks-Shape und darin eine xpath-Abfrage enthalten, um zu entscheiden, welche Art von Nachricht empfangen wird.

  2. Nachdem der Benachrichtigungstyp bestimmt wurde, muss die Orchestrierung einen Entscheidungsblock enthalten, um bestimmte Aktionen basierend auf dem Typ der empfangenen Benachrichtigung auszuführen. Um dies zu erreichen, muss die Orchestrierung eine Decide-Form enthalten, die einen Regelblock und einen Else-Block enthält:

    • Innerhalb des Regelblocks müssen Sie die Bedingung angeben und dann Orchestrierungsformen einschließen, um bestimmte Vorgänge auszuführen, wenn die Bedingung erfüllt ist.

    • Im Else-Block müssen Sie Orchestrierungs-Shapes einschließen, um bestimmte Vorgänge auszuführen, wenn die Bedingung nicht erfüllt ist.

    Details zu den vorherigen Anforderungen werden unter Verarbeiten von Benachrichtigungen zum Ausführen bestimmter Aufgaben in SQL mithilfe von BizTalk Server beschrieben. Ein ausführliches Tutorial finden Sie auch in Tutorial 2: Employee – Purchase Order Process using the SQL adapter (Tutorial 2: Employee – Purchase Order Process using the SQL adapter).