Freigeben über


Abfragen in SQL Server mithilfe des SQL-Adapters

Mit dem Microsoft BizTalk-Adapter für SQL Server können Adapterclients Datenänderungsmeldungen aus der SQL Server-Datenbank empfangen. Der SQL-Adapter unterstützt den Empfang "abrufbasierter" Nachrichten, bei denen der Adapter eine angegebene SQL-Anweisung (SELECT-Anweisung oder gespeicherte Prozedur) ausführt, die Daten abruft oder aktualisiert und das Ergebnis in regelmäßigen Abständen dem Adapterclient zur Verfügung stellt.

Der SQL-Adapter macht die folgenden Vorgänge für die Abfrage verfügbar:

  • Abfrage: Ermöglicht das Empfangen regelmäßiger Datenänderungsmeldungen für SQL Server Tabellen oder Ansichten. Die Nachrichten sind nicht stark typisiert.

  • TypedPolling: Ermöglicht es Ihnen, stark typisierte Nachrichten aus der SQL Server-Datenbank zu empfangen. Sie müssen diesen Vorgang verwenden, wenn Sie die Elemente in der Abrufnachricht einem anderen Schema zuordnen möchten.

  • XmlPolling. Ermöglicht die Verwendung von SELECT-Anweisungen oder gespeicherten Prozeduren, die eine FOR XML-Klausel verwenden und Daten als XML-Nachrichten zurückgeben. Dieser Vorgang gibt die Abrufnachricht als XML-Nachricht zurück.

    Weitere Informationen zur FOR XML-Klausel finden Sie unter https://go.microsoft.com/fwlink/?LinkId=131402.

    Weitere Informationen zum Abfragen im SQL-Adapter finden Sie unter Empfangen von abrufbasierten datenveränderten Nachrichten von SQL Server mithilfe von BizTalk Server.

Abruf

Ein typischer Abfragevorgang mit dem SQL-Adapter umfasst Folgendes:

  1. Die Adapterclients müssen als eingehender Vorgang in der InboundOperationType-Bindungseigenschaft angebenPolling. Der Standardwert für diese Bindungseigenschaft ist Polling.

  2. Die Adapterclients müssen eine SQL-Anweisung für die PolledDataAvailableStatement-Bindungseigenschaft angeben, die bestimmt, ob Daten für die Abfrage verfügbar sind. Die erste Spalte der ersten Zeile des ersten Resultsets, die beim Ausführen dieser Anweisung zurückgegeben wird, enthält einen ganzzahligen Wert. Wenn keine Daten für die Abfrage verfügbar sind, ist der Rückgabewert 0 (null). Wenn Daten verfügbar sind, ist der Rückgabewert größer als 00.

  3. Die Adapterclients müssen ein Abrufintervall für die PollingIntervalInSeconds-Bindungseigenschaft angeben, um das Intervall zu definieren, in dem die Anweisung in der Eigenschaft PolledDataAvailableStatement ausgeführt wird. Am Ende jedes Abfrageintervalls wird die verfügbare Anweisung für die abgerufenen Daten ausgeführt, und das Resultset wird zurückgegeben.

  4. Die Adapterclients müssen eine abrufende SQL-Anweisung (SELECT-Anweisung oder gespeicherte Prozedur) für die Eigenschaft PollingStatement-Bindung angeben. Wenn Daten für die Abfrage verfügbar sind (bestimmt durch die PolledDataAvailableStatement-Bindungseigenschaft), führt der Adapter die Abfrageanweisung aus, um die Daten in der SQL Server-Datenbank abzurufen und (falls zutreffend) zu aktualisieren. Wenn der SQL-Adapter mit BizTalk Server verwendet wird, wird dieselbe Transaktion auch verwendet, um die Nachricht an BizTalk Server zu übermitteln.

  5. Die Adapterclients können die PollWhileDataFound-Bindungseigenschaft verwenden, um das Abrufintervall zu ignorieren und kontinuierlich Daten abzurufen, sofern verfügbar.

  6. Die Resultsets, die als Ergebnis der Ausführung der Abfrage-Anweisung zurückgegeben werden, werden als eingehende Nachricht an den Adapterclient gesendet.

Hinweis

Wenn UseAmbientTransaction auf False festgelegt ist, wird polledDataAvailableStatement nicht aufgerufen. Stattdessen ruft der Adapter direkt das PollingStatement auf.

Hinweis

Ein XmlPolling-Vorgang umfasst die gleichen Schritte wie der Abfragevorgang.

Strongly-Typed-Abfrage

Ein typischer stark typisierter Abrufvorgang mit dem SQL-Adapter umfasst Folgendes:

  1. Die Adapterclients müssen als eingehender Vorgang in der InboundOperationType-Bindungseigenschaft angebenTypedPolling. Der Standardwert für diese Bindungseigenschaft ist Polling.

  2. Die Adapterclients müssen eine eingehende ID als Teil des Verbindungs-URI angeben. Die eingehende ID kann eine beliebige Zeichenfolge sein und wird an den Standardnamespace des TypedPolling-Vorgangs angefügt, um Namespacekollisionen zu verhindern.

  3. Die restlichen Schritte sind identisch mit den Schritten 2 bis 6, die im im vorherigen Abschnitt beschriebenen Abfragevorgang aufgeführt sind.

    Ausführliche Informationen zu den Bindungseigenschaften im Zusammenhang mit Abrufen und stark typisierten Abfragen finden Sie unter Informationen zum BizTalk-Adapter für SQL Server Adapterbindungseigenschaften.

Hinweis

Mehrere Resultsets können als Ergebnis der Ausführung der Abfrage-Anweisung zurückgegeben werden. Wenn die Resultsets keine Zeilen enthalten, werden keine Nachrichten an den Adapterclient gesendet.

Die folgende Abbildung enthält Informationen zum Abfrageworkflow im SQL-Adapter. Zwei Szenarien für den Abfrageworkflow werden veranschaulicht:

  1. Wenn der Wert von PollWhileDataFound auf "False" (Standardeinstellung) festgelegt ist.

  2. Wenn der Wert von PollWhileDataFound auf "True" festgelegt ist.

    Polling Workflow (PollWhileDataFound = False)Polling Workflow (PollWhileDataFound = True)

Unterschiede zwischen Abruf und Abfragebenachrichtigung

Obwohl Abfrage- und Abfragebenachrichtigungen sowohl eingehende Vorgänge sind als auch die Adapterclients über die Datenänderungen in der SQL Server-Datenbank informieren, werden in der folgenden Tabelle einige Unterschiede zwischen den beiden aufgeführt. Die folgenden Unterschiede helfen Ihnen bei der Entscheidung für einen Vorgang je nach Ihren Anforderungen:

Abruf Abfragebenachrichtigung
Die Abfrage wird vom Adapter initiiert. Der Adapter führt eine Anweisung aus, um zu überprüfen, ob Daten für die Abfrage verfügbar sind, und initiiert dann die Abfrage, indem die Abfrage-Anweisung ausgeführt wird, wenn einige Daten für die Abfrage verfügbar sind. Die Abfragebenachrichtigung wird von SQL Server initiiert. Die vom Adapter ausgegebene Benachrichtigungsanweisung weist die Datenbank lediglich an, eine Benachrichtigung zu initiieren, falls sich das Resultset der Anweisung ändert.
Sie können die Abfrage-Anweisung verwenden, um Daten in einer SQL Server Datenbanktabelle zu lesen oder zu aktualisieren. Sie können die Abfragebenachrichtigungsanweisung verwenden, um nur Daten in einer SQL Server Datenbanktabelle zu lesen.
Die Abfrage informiert Sie über die tatsächlichen Daten, die sich geändert haben. Abfragebenachrichtigungen informieren nur über den Typ der Änderung in den Daten, z. B. Einfügen, Aktualisieren und Löschen.
Die Datenänderungsbenachrichtigung hängt vom Abrufintervall ab, und die Adapterclients werden am Ende jedes Abrufintervalls über die Datenänderungen informiert. Tipp: Die Abfrage kann Ihnen einen besseren Durchsatz in Szenarien bieten, in denen die Datenänderungen kontinuierlich erfolgen, und Sie möchten nicht über jede Änderung benachrichtigt werden, wenn sie geschieht. Stattdessen geben Sie ein Abfrageintervall an, nach dem Sie über alle Änderungen benachrichtigt werden möchten, die seit der letzten Datenänderungsbenachrichtigung aufgetreten sind. Die Datenänderungsbenachrichtigung erfolgt sofort.

Weitere Informationen zur Abfragebenachrichtigung in Microsoft BizTalk Adapter für SQL Server finden Sie unter Empfangen von SQL-Abfragebenachrichtigungen mithilfe von BizTalk Server.

Weitere Informationen

Welche Vorgänge können mit dem Adapter ausgeführt werden?