Freigeben über


Empfangen von Abrufnachrichten mithilfe von SELECT-Anweisungen mit der FOR XML-Klausel von SQL mithilfe von BizTalk Server

Sie können den SQL-Adapter so konfigurieren, dass er regelmäßige Datenänderungsmeldungen für SQL Server Tabellen oder Sichten empfängt, indem Sie SELECT-Anweisungen oder gespeicherte Prozeduren verwenden, die eine FOR XML-Klausel enthalten. Sie können diese Anweisungen als Abrufanweisungen angeben, die der Adapter ausführt, um die Datenbank abzufragen. Die Abruf-Anweisung kann eine SELECT-Anweisung oder eine gespeicherte Prozedur sein, die ein Resultset zurückgibt.

Weitere Informationen dazu, wie der Adapter Abrufe unterstützt, finden Sie unter Unterstützung für Abrufe. Informationen zur Struktur der SOAP-Nachricht für Abrufvorgänge finden Sie unter Nachrichtenschemas für die Polling- und TypedPolling-Vorgänge. Die SQL FOR XML-Klausel enthält weitere Details.

Hinweis

In diesem Thema wird veranschaulicht, wie Sie den eingehenden XmlPolling-Vorgang verwenden, um Abrufnachrichten zu empfangen. Der XmlPolling-Vorgang wird verwendet, um eine SQL Server-Datenbank mithilfe von SELECT-Anweisungen oder gespeicherten Prozeduren abzufragen, die eine FOR XML-Klausel enthalten. Die Nachricht für den XmlPolling-Vorgang enthält die XML-Nachricht, die beim Ausführen der SELECT-Anweisung oder der gespeicherten Prozedur in SQL Server Management Studio empfangen wird.

Sie können den Adapter auch verwenden, um verschiedene Arten von Abrufnachrichten zu empfangen.

Wichtig

Wenn Sie mehrere Abrufvorgänge in einer einzelnen BizTalk-Anwendung verwenden möchten, müssen Sie eine InboundID-Verbindungseigenschaft als Teil des Verbindungs-URI angeben, um sie eindeutig zu machen. Mit einem eindeutigen Verbindungs-URI können Sie mehrere Empfangsports erstellen, die dieselbe Datenbank oder sogar dieselbe Tabelle in einer Datenbank abfragen. Weitere Informationen finden Sie unter Empfangen von Abrufnachrichten über mehrere Empfangsports von SQL mithilfe von BizTalk Server.

In diesem Thema wird die Abfrage veranschaulicht.

Um zu veranschaulichen, wie der SQL-Adapter den Empfang von Datenänderungsmeldungen unterstützt, verwenden wir in diesem Thema eine SELECT-Anweisung mit der FOR XML-Klausel, um die SQL Server-Datenbank abzufragen. Wenn Sie eine solche Anweisung in SQL Server Management Studio aufrufen, erfolgt die Ausgabe in Form einer XML-Nachricht. Um solche Anweisungen zum Abfragen einer SQL Server-Datenbank verwenden zu können, müssen Sie über das Schema der XML-Antwortnachricht verfügen. Der SQL-Adapter erfordert, dass dieses Schema nach dem Ausführen einer SELECT-Anweisung mit der FOR XML-Klausel eine Abrufmeldung empfängt. Wenn Sie also eine SELECT-Anweisung mit der FOR XML-Klausel verwenden möchten, um die SQL Server-Datenbank abzufragen, müssen Sie die folgenden Aufgaben ausführen.

  1. Generieren Sie das Schema für die XML-Antwortnachricht für die SELECT-Anweisung mit der FOR XML-Klausel.

  2. Erstellen Sie ein BizTalk-Projekt, und fügen Sie dem Projekt das generierte Schema hinzu.

  3. Erstellen Sie im BizTalk-Projekt eine Nachricht zum Empfangen von XML-Antwortnachrichten aus der SQL Server-Datenbank.

  4. Erstellen Sie eine Orchestrierung, um Nachrichten aus der SQL Server-Datenbank zu empfangen und in einem Ordner zu speichern.

  5. Erstellen sie das BizTalk-Projekt, und stellen Sie es bereit.

  6. Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.

    Wichtig

    Für Szenarien mit eingehenden Abfragen müssen Sie immer einen unidirektionale WCF-Custom oder WCF-SQL-Empfangsport konfigurieren. Bidirektionale WCF-Custom oder WCF-SQL-Empfangsports werden für eingehende Vorgänge nicht unterstützt.

  7. Starten Sie die BizTalk-Anwendung.

Generieren eines Schemas für die Antwortnachricht für select-Anweisung

Sie können das Schema für die Antwortnachricht für die SELECT-Anweisung generieren, indem Sie die xmlschema -Klausel in die for xml -Klausel einschließen. In diesem Thema verwenden wir eine SELECT-Anweisung, um Mitarbeiterdetails für eine bestimmte Mitarbeiter-ID abzurufen. Um das Schema durch Ausführen einer SELECT-Anweisung abzurufen, muss die SELECT-Anweisung wie folgt geschrieben werden:

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

Führen Sie diese SELECT-Anweisung aus, um das Schema für die Antwortnachricht abzurufen. Speichern Sie das Schema. Sie müssen nun ein BizTalk-Projekt in Visual Studio erstellen und dieses Schema dem Projekt hinzufügen. In diesem Beispiel können Sie dieses Schema als PollingResponse.xsd benennen.

Wichtig

Stellen Sie sicher, dass Sie die xmlschema -Klausel entfernen, nachdem Sie die SELECT-Anweisung ausgeführt haben, um das Schema zu generieren. Wenn Sie dies nicht tun, generieren Sie das Schema erneut in der Antwortnachricht, wenn Sie die SELECT-Anweisung im Rahmen des XmlPolling-Vorgangs über BizTalk ausführen. Um die Antwortnachricht als XML abzurufen, müssen Sie also die xmlschema -Klausel entfernen.

So fügen Sie einem BizTalk-Projekt das Schema hinzu

  1. Erstellen Sie ein BizTalk-Projekt in Visual Studio.

  2. Fügen Sie das Antwortschema, das Sie für die gespeicherte Prozedur generiert haben, dem BizTalk-Projekt hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das BizTalk-Projekt, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element. Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zu dem Speicherort, an dem Sie das Schema gespeichert haben, und klicken Sie auf Hinzufügen.

  3. Öffnen Sie das Schema in Visual Studio, und nehmen Sie die folgenden Änderungen vor.

    1. Fügen Sie dem Schema einen Knoten hinzu, und verschieben Sie den vorhandenen Stammknoten unter diesem neu hinzugefügten Knoten. Geben Sie dem Stammknoten einen Namen. Benennen Sie für dieses Thema den Stammknoten in Stamm um.

    2. Das für die SELECT-Anweisung generierte Antwortschema verweist auf sqltypes.xsd. Sie können das Sqltypes.xsd-Schema von https://go.microsoft.com/fwlink/?linkid=31850abrufen. Fügen Sie dem BizTalk-Projekt das Schema sqltypes.xsd hinzu. Weitere Informationen zu diesem Schema findest du unter:

    3. Ändern Sie im für die SELECT-Anweisung generierten Schema den Wert von import schemaLocation wie folgt.

      import schemaLocation=”sqltypes.xsd”
      

      Dies geschieht, weil Sie ihrem BizTalk-Projekt bereits das Schema sqltypes.xsd hinzugefügt haben.

    4. Geben Sie einen Zielnamespace für das Schema an. Klicken Sie auf den <Knoten Schema> , und geben Sie im Eigenschaftenbereich einen Namespace in der Eigenschaft Zielnamespace an . Geben Sie für dieses Thema den Namespace als an http://ForXmlPolling/namespace.

Definieren von Nachrichten und Nachrichtentypen

Das Schema, das Sie zuvor generiert haben, beschreibt die "Typen", die für die Nachrichten in der Orchestrierung erforderlich sind. Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Nachdem das Schema generiert wurde, müssen Sie es mit den Meldungen aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie eine Nachricht erstellen, um Nachrichten aus der SQL Server-Datenbank zu empfangen.

Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und mit dem Schema zu verknüpfen.

  1. Fügen Sie dem BizTalk-Projekt eine Orchestrierung hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen des BizTalk-Projekts, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element. Geben Sie einen Namen für die BizTalk-Orchestrierung ein, und klicken Sie dann auf Hinzufügen.

  2. Öffnen Sie das Fenster "Orchestrierungsansicht" des BizTalk-Projekts, wenn es noch nicht geöffnet ist. Klicken Sie auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie dann auf Orchestrierungsansicht.

  3. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Nachrichten, und klicken Sie dann auf Neue Nachricht.

  4. Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann Eigenschaftenfenster aus.

  5. Gehen Sie im Bereich Eigenschaften für Message_1 wie folgt vor:

    Option Aufgabe
    Bezeichner Geben Sie PollingMessage ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie ForXMLPolling.PollingResponse aus, wobei ForXMLPolling der Name Ihres BizTalk-Projekts ist. PollingResponse ist der Name des Antwortschemas, das durch Ausführen der SELECT-Anweisung generiert wird, wie unter Empfangen von Abrufnachrichten mithilfe von SELECT-Anweisungen mit FOR XML-Klausel von SQL mithilfe von BizTalk Server beschrieben.

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Empfangen abrufbasierter Datenänderungsmeldungen aus der SQL Server-Datenbank zu verwenden. Bei dieser Orchestrierung empfängt der Adapter die Antwort der select-Anweisung, die für die Bindungseigenschaft PollingStatement angegeben ist. Die Antwort für die SELECT-Anweisung wird an einem FILE-Speicherort gespeichert. Eine typische Orchestrierung zum Abrufen einer SQL Server Datenbank enthält Folgendes:

  • Empfangen und Senden von Shapes, um Nachrichten von SQL Server bzw. an einen FILE-Port zu senden.

  • Ein unidirektionale Empfangsport zum Empfangen von Nachrichten von SQL Server.

    Wichtig

    Für Szenarien für eingehende Abrufe müssen Sie immer einen unidirektionale Empfangsport konfigurieren. Bidirektionale Empfangsports werden für eingehende Vorgänge nicht unterstützt.

  • Ein unidirektionale Sendeport zum Senden von Abrufantworten aus einer SQL Server-Datenbank an einen Ordner.

    Eine Beispielorchestrierung sieht wie folgt aus.

    Orchestrierung zum Abrufen einer SQL Server Datenbank

Hinzufügen von Nachrichten-Shapes

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichtenformen angeben. Die in der Spalte Shape aufgeführten Namen sind die Namen der Nachrichtenformen, die in der gerade erwähnten Orchestrierung angezeigt werden.

Form Shape-Typ Eigenschaften
ReceiveMessage Empfangen – Legen Sie Name auf ReceiveMessage fest.

– Legen Sie Activate auf True fest.
SaveMessage Send Name aufSaveMessage festlegen

Hinzufügen von Ports

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für jeden der logischen Ports angeben. Die in der Spalte Port aufgeführten Namen sind die Namen der Ports, wie in der Orchestrierung angezeigt.

Port Eigenschaften
SQLReceivePort Bezeichner auf SQLReceivePort festlegen

– Legen Sie Type auf SQLReceivePortType fest.

– Festlegen des Kommunikationsmusters auf Unidirektionale

– Festlegen der Kommunikationsrichtung auf "Empfangen"
SaveMessagePort Bezeichner auf SaveMessagePort festlegen

– Legen Sie Type auf SaveMessagePortType fest.

– Festlegen des Kommunikationsmusters auf Unidirektionale

Kommunikationsrichtung auf Senden festlegen

Angeben von Nachrichten für Aktions-Shapes und Herstellen einer Verbindung mit Ports

In der folgenden Tabelle sind die Eigenschaften und deren Werte angegeben, die Sie festlegen sollten, um Meldungen für Aktionsformen anzugeben und die Nachrichten mit den Ports zu verknüpfen. Die in der Spalte Shape aufgeführten Namen sind die Namen der Meldungs-Shapes, die in der zuvor erwähnten Orchestrierung angezeigt werden.

Form Eigenschaften
ReceiveMessage – Festlegen, dass Nachrichtempfangen werden soll

– Legen Sie Operation auf SQLReceivePort.XmlPolling.Request fest.
SaveMessage – Festlegen, dass Nachrichtempfangen werden soll

– Legen Sie Operation auf SaveMessagePort.XmlPolling.Request fest.

Nachdem Sie diese Eigenschaften angegeben haben, werden die Nachrichtenformen und Ports verbunden, und Die Orchestrierung ist abgeschlossen.

Sie müssen nun die BizTalk-Lösung erstellen und in einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Erstellen und Ausführen von Orchestrierungen.

Konfigurieren der BizTalk-Anwendung

Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung in der BizTalk Server Verwaltungskonsole im Bereich Orchestrierungen aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Eine exemplarische Vorgehensweise finden Sie unter Exemplarische Vorgehensweise: Bereitstellen einer einfachen BizTalk-Anwendung.

Das Konfigurieren einer Anwendung umfasst Folgendes:

  • Auswählen eines Hosts für die Anwendung.

  • Zuordnen der Ports, die Sie in Ihrer Orchestrierung erstellt haben, zu physischen Ports in der BizTalk Server-Verwaltungskonsole. Für diese Orchestrierung müssen Sie:

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Nachrichten aus der SQL Server-Datenbank ablöscht. Diese Meldungen werden als Reaktion auf die Abruf-Anweisung ausgeführt, die Sie für den Empfangsport angeben.

    • Definieren Sie einen physischen WCF-Custom oder unidirektionale WCF-SQL-Empfangsport. Dieser Port ruft die SQL Server-Datenbank mit der Abfrage-Anweisung ab, die Sie für den Port angeben. Informationen zum Erstellen von Ports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den SQL-Adapter. Stellen Sie sicher, dass Sie die folgenden Bindungseigenschaften für den Empfangsport angeben.

      Wichtig

      Sie müssen diesen Schritt nicht ausführen, wenn Sie die Bindungseigenschaften zur Entwurfszeit angegeben haben. In diesem Fall können Sie einen benutzerdefinierten WCF- oder WCF-SQL-Empfangsport erstellen, wobei die erforderlichen Bindungseigenschaften festgelegt sind, indem Sie die bindungsdatei importieren, die vom Add-In Consume Adapter Service erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei für die Verwendung des SQL-Adapters.

      Binding-Eigenschaft Wert
      InboundOperationType Stellen Sie sicher, dass Sie dies auf XmlPolling festlegen.
      PolledDataAvailableStatement Stellen Sie sicher, dass Sie eine SQL-Anweisung angeben. Geben Sie für dieses Thema Folgendes an:

      SELECT COUNT(*) FROM Employee
      PollingStatement Stellen Sie sicher, dass Sie die gleiche Anweisung ohne die xmlschema -Klausel angeben, die Sie beim Generieren des Schemas angegeben haben, wie unter Empfangen von Abrufnachrichten mithilfe von SELECT-Anweisungen mit FOR XML-Klausel von SQL mithilfe von BizTalk Server beschrieben.

      SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto

      Hinweis: Beachten Sie, dass die SELECT-Anweisung die xmlschema -Klausel nicht enthält.
      XmlStoredProcedureRootNodeName Geben Sie den Namen des Stammknotens an, den Sie dem Antwortschema hinzugefügt haben, das Sie für die SELECT-Anweisung generiert haben, wie unter Generieren eines Schemas für die Antwortnachricht für SELECT-Anweisung beschrieben. Legen Sie für dieses Thema diesen Wert auf Stamm fest.
      XmlStoredProcedureRootNodeNamespace Geben Sie den Zielnamespace für das Antwortschema an, das Sie für die SELECT-Anweisung generiert haben, wie unter Generieren eines Schemas für die Antwortnachricht für SELECT-Anweisung beschrieben. Legen Sie für dieses Thema dies auf fest http://ForXmlPolling/namespace.

      Weitere Informationen zu den verschiedenen Bindungseigenschaften finden Sie unter Informationen zum BizTalk-Adapter für SQL Server Adapterbindungseigenschaften.

      Hinweis

      Es wird empfohlen, die Transaktionsisolationsstufe und das Transaktionstimeout zu konfigurieren, während eingehende Vorgänge mithilfe des SQL-Adapters ausgeführt werden. Dazu können Sie das Dienstverhalten beim Konfigurieren des WCF-Custom- oder WCF-SQL-Empfangsports hinzufügen. Anweisungen zum Hinzufügen des Dienstverhaltens finden Sie unter Konfigurieren der Transaktionsisolationsstufe und des Transaktionstimeouts mit SQL.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung starten, um Nachrichten aus der SQL Server-Datenbank zu empfangen. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung.

Stellen Sie in dieser Phase Folgendes sicher:

  • Der WCF-Custom oder unidirektionale WCF-SQL-Empfangsport, der die SQL Server-Datenbank mithilfe der für die PollingStatement-Bindungseigenschaft angegebenen Anweisungen abruft, wird ausgeführt.

  • Der FILE-Sendeport, der Nachrichten von SQL Server empfängt, wird ausgeführt.

  • Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, werden die folgenden Aktionen in derselben Reihenfolge ausgeführt:

  • Der Adapter führt polledDataAvailableStatement für die Tabelle Employee aus und bestimmt, dass die Tabelle Datensätze für den Abruf enthält.

  • Der Adapter führt die Abruf-Anweisung aus und empfängt eine Abrufmeldung aus der SQL Server-Datenbank. Da die Abruf-Anweisung aus einer SELECT-Anweisung mit einer FOR XML-Klausel besteht, sieht die vom Adapter empfangene Abrufmeldung wie folgt aus:

    <?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>
    

    Beachten Sie, dass die Abrufnachricht im selben Schema empfangen wird, das durch Ausführen der SELECT-Anweisung mit der xmlschema-Klausel generiert wird. Beachten Sie außerdem, dass der Stammknoten und der Namespace identisch sind, die Sie als Werte für die Bindungseigenschaften XmlStoredProcedureRootNodeName bzw . XmlStoredProcedureRootNodeNamespace angegeben haben.

Hinweis

Der SQL-Adapter ruft weiterhin ab, bis Sie den Empfangsport über die BizTalk Server-Verwaltungskonsole explizit deaktivieren.

Bewährte Methoden

Nachdem Sie das BizTalk-Projekt bereitgestellt und konfiguriert haben, können Sie Konfigurationseinstellungen in eine XML-Datei exportieren, die als Bindungsdatei bezeichnet wird. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie nicht die Sendeports und Empfangsports für dieselbe Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Adapterbindungen.

Weitere Informationen

Abfragen von SQL Server mithilfe des SQL-Adapters mit BizTalk Server