Freigeben über


Ausführen gespeicherter Prozeduren mit einem einzelnen XML-Parameter in SQL Server mithilfe von BizTalk Server

Das Ausführen einer gespeicherten Prozedur, die einen einzelnen Parameter verwendet, ähnelt der Ausführung einer anderen gespeicherten Prozedur, wie unter Ausführen gespeicherter Prozeduren in SQL Server mit BizTalk Server beschrieben. Für den im vorherigen Link beschriebenen Ansatz müssen Sie jedoch zur Entwurfszeit Metadaten für die gespeicherte Prozedur generieren und eine Orchestrierung erstellen, um die Prozedur zur Laufzeit aufzurufen.

Betrachten Sie ein Szenario, in dem Sie nur einen einzelnen Wert an eine gespeicherte Prozedur übergeben möchten, ohne diesen Wert zu verarbeiten. In solchen Fällen ist der Aufwand für das Generieren von Metadaten, das Erstellen einer Orchestrierung, das Bereitstellen der Orchestrierung und das Ausführen des Vorgangs nicht erforderlich. Stattdessen können Sie einen WCF-Custom- oder WCF-SQL-Sendeport konfigurieren, um die gespeicherte Prozedur direkt aufzurufen. In diesem Thema wird veranschaulicht, wie Sie diese Aufgaben mithilfe der BizTalk Server-Verwaltungskonsole ausführen.

Hinweis

Dieses Thema enthält Anweisungen zum Konfigurieren eines WCF-Custom Sendeports für die Ausführung einer gespeicherten Prozedur, die einen einzelnen Parameter akzeptiert. Sie können dieselben Schritte ausführen, indem Sie einen WCF-SQL-Port konfigurieren. Anweisungen zum Konfigurieren des WCF-SQL-Ports finden Sie unter Konfigurieren eines Ports mithilfe des WCF-SQL-Adapters.

Aufrufen gespeicherter Prozeduren ohne Orchestrierung

Um zu veranschaulichen, wie gespeicherte Prozeduren mit einzelnen Parametern ohne Orchestrierung ausgeführt werden, verwendet dieses Thema die ADD_LAST_EMP_XML_INFO gespeicherten Prozedur. Dieses Verfahren verwendet einen XML-Wert als Parameter und fügt ihn in die Spalte Address der Tabelle Employee ein. Sie müssen über den XML-Wert verfügen, den Sie an die gespeicherte Prozedur übergeben. Zum Ausführen der gespeicherten Prozedur mithilfe des Adapters müssen Sie jedoch eine Anforderungsnachricht senden, die dem Schema der Prozedur entspricht und den XML-Wert für das Feld Adresse enthält, an den SQL Server. Daher müssen Sie diese Anforderungsnachricht wie folgt erstellen:

  • Verwenden Sie die Option Vorlage in der Sendeportkonfiguration, mit der Sie eine Anforderungsnachricht mithilfe einer Nachrichtenvorlage erstellen können.

  • Geben Sie den XML-Wert für das Feld Adresse in die Nachricht ein.

    Alle diese Schritte werden in diesem Thema ausführlich beschrieben. Sie müssen die folgenden Aufgaben ausführen:

  1. Erstellen Sie einen FILE-Empfangsport, an dem Sie die XML-Datei löschen, die in das Feld Adress-XML der Tabelle Employee eingefügt wird. Angenommen, dieser Port heißt MessageIn-Port .

  2. Erstellen Sie einen WCF-Custom unidirektionalen Sendeport, der die XML-Datei aus dem FILE-Empfangsport auswählt, die Nachricht mithilfe der Nachrichtenvorlage erstellt und an SQL Server sendet, um die gespeicherte Prozedur auszuführen.

    Dieser Teil des Themas enthält Anweisungen zum Konfigurieren eines WCF-Custom Sendeports mit der Nachrichtenvorlage.

Hinweis

Obwohl die Informationen in diesem Thema zeigen, wie eine gespeicherte Prozedur mit einem einzelnen XML-Parameter ausgeführt wird, können Sie die Aufgaben ausführen, um jeden Vorgang auszuführen, der einen einzelnen Parameter eines beliebigen Datentyps verwendet. Der einzige Unterschied ist die Art und Weise, wie Sie eine Nachrichtenvorlage für einen bestimmten Vorgang erstellen. Sie können eine Nachrichtenvorlage erstellen, indem Sie die Anforderungsnachricht verwenden, die Sie zum Ausführen des Vorgangs mithilfe einer Orchestrierung verwenden und den Wert des Parameters durch den BizTalk-Nachrichtentext ersetzen.

Konfigurieren eines WCF-Custom Sendeports

Stellen Sie vor dem Erstellen des WCF-Custom Sendeports sicher, dass Sie den FILE-Empfangsport MessageIn erstellt haben.

  1. Starten Sie die BizTalk Server-Verwaltungskonsole.

  2. Erweitern Sie in der Konsolenstruktur bizTalk-Gruppe, und erweitern Sie dann Anwendungen.

  3. Erweitern Sie die Anwendung, unter der Sie den SQL-Adapter bereitstellen möchten.

  4. Klicken Sie mit der rechten Maustaste auf Ports senden, zeigen Sie auf Neu, und zeigen Sie dann auf Statischer unidirektionalen Sendeport.

  5. Geben Sie im Dialogfeld Porteigenschaften senden auf der Registerkarte Allgemein einen Namen für den Sendeport ein.

  6. Konfigurieren Sie den Port so, dass alle Nachrichten empfangen werden, die am FILE-Empfangsport MessageIn abgelegt werden.

    1. Klicken Sie im Dialogfeld Porteigenschaften senden im linken Bereich auf Filter.

    2. Klicken Sie im rechten Bereich unter der Spalte Eigenschaft auf das Raster, und wählen Sie dann BTS aus. ReceivePortName-Eigenschaft .

    3. Wählen Sie für die Spalte Operator die Option "==" aus.

    4. Geben Sie für die Spalte Wert den Namen des FILE-Empfangsports an. MessageIn

  7. Wählen Sie im Dialogfeld Porteigenschaften senden auf der Registerkarte Allgemein in der Dropdownliste Typ die Option WCF-Custom aus, und klicken Sie dann auf Konfigurieren.

  8. Führen Sie im Dialogfeld WCF-Benutzerdefinierte Transporteigenschaften die folgenden Schritte aus:

    1. Klicken Sie auf die Registerkarte Allgemein, und geben Sie im Feld Adresse (URI) den Verbindungs-URI für SQL Server an. Weitere Informationen zum Verbindungs-URI finden Sie unter Erstellen des SQL Server-Verbindungs-URI.

    2. Geben Sie auf der Registerkarte Allgemein im Textfeld Aktion die Aktion für den Vorgang ein. Eine Liste der Aktionen für jeden Vorgang finden Sie unter Nachrichten und Nachrichtenschemas . Die Aktion zum Aufrufen des ADD_LAST_EMP_XML_INFO lautet beispielsweise:

      Procedure/dbo/ADD_LAST_EMP_XML_INFO  
      
    3. Klicken Sie auf die Registerkarte Bindung , und wählen Sie in der Liste Bindungstypdie Option sqlBinding aus. Sie können die verschiedenen Bindungseigenschaften angeben, die vom SQL-Adapter verfügbar gemacht werden. Weitere Informationen zu Bindungseigenschaften finden Sie unter Informationen zum BizTalk-Adapter für SQL Server Adapterbindungseigenschaften.

    4. Klicken Sie auf die Registerkarte Anmeldeinformationen, und führen Sie eine der folgenden Aktionen aus:

      • Wählen Sie die Option Einmaliges Anmelden nicht verwenden aus, und geben Sie den Benutzernamen und das Kennwort an, um eine Verbindung mit SQL Server herzustellen. Beachten Sie, dass für den Benutzernamen und das Kennwort zwischen Groß- und Kleinschreibung unterschieden wird.

        Hinweis

        Wenn Sie mithilfe von Windows-Authentifizierung eine Verbindung mit SQL Server herstellen möchten, geben Sie einen leeren Benutzernamen und ein leeres Kennwort an.

      • Wählen Sie die Option Einmaliges Anmelden verwenden aus, und geben Sie dann eine verbundene Enterprise-Anwendung für einmaliges Anmelden (Single Sign-On, SSO) an.

        Weitere Informationen zur Sicherheit in Bezug auf BizTalk Server finden Sie unter Sicherheit mit dem SQL-Adapter und BizTalk Server.

    5. Klicken Sie auf die Registerkarte Nachrichten , und wählen Sie im Abschnitt Textkörper ausgehender WCF-Nachrichten die Option Vorlage aus.

    6. Geben Sie im Textfeld XML die Vorlage an, die zum Erstellen der WCF-Nachricht verwendet wird. Auf diese Weise erstellen Sie eine Meldung, die dem ADD_LAST_EMP_XML_INFO Vorgang für den WCF-basierten SQL-Adapter entspricht.

      Angeben einer Vorlage für ausgehende WCF-Nachricht

      Für die ADD_LAST_EMP_XML_INFO gespeicherten Prozedur müssen Sie die folgende Vorlage angeben:

      <ADD_LAST_EMP_XML_INFO xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">  
      <xml_info>  
      <bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="string"/>  
      </xml_info>  
      </ADD_LAST_EMP_XML_INFO>  
      

      Wichtig

      Die Codierung in der Nachrichtenvorlage muss immer "Zeichenfolge" sein, unabhängig vom Typ des Parameters für den Vorgang, der über den Sendeport aufgerufen wird. Beispielsweise nimmt die ADD_LAST_EMP_XML_INFO einen Parameter vom Typ XML an, aber die Codierung in der Nachrichtenvorlage ist Zeichenfolge.

      Hinweis

      Sie können diese Nachrichtenvorlage erstellen, indem Sie die Anforderungsnachricht für die gespeicherte Prozedur kopieren und den Wert in den <xml_info> Tags durch den BizTalk-Nachrichtentext ersetzen. Sie können die Anforderungsnachricht für die gespeicherte Prozedur abrufen, indem Sie das Schema für die Prozedur mithilfe des Add-Ins Consume Adapter Service generieren und dann eine instance des Schemas generieren, um die Anforderungs-XML abzurufen.

    7. Klicken Sie auf OK, um zum Dialogfeld Porteigenschaften senden zurückzukehren.

  9. Wählen Sie in der Liste Sendehandlerdie Option BizTalkServerAnwendung aus.

  10. Wählen Sie in der Liste Pipeline senden die Pipeline aus, die PassThruTransmit entspricht.

  11. Klicken Sie auf OK.

Starten der Anwendung

Zum Starten der BizTalk-Anwendung können Sie sowohl den File-Empfangsspeicherort als auch den WCF-Custom Sendeport einzeln starten. Sie müssen nun eine XML-Datei in den Ordner kopieren, der dem DATEI-Empfangsspeicherort zugeordnet ist. Die BizTalk-Anwendung nutzt die Datei, und der XML-Wert wird in die Spalte Address der Tabelle Employee eingefügt. Sie können dies überprüfen, indem Sie einen SQL Server Client verwenden und Datensätze aus der Tabelle Employee auswählen.

Verwenden eines bidirektionalen WCF-Custom Sendeports

Die Anweisungen in diesem Thema im Abschnitt Konfigurieren eines WCF-Custom Sendeports veranschaulichen, wie Sie einen unidirektionalen WCF-Custom Sendeport konfigurieren, um eine gespeicherte Prozedur mit einem einzelnen Parameter ohne Verwendung einer BizTalk-Orchestrierung auszuführen. Um jedoch in einem solchen Fall zu überprüfen, ob die gespeicherte Prozedur erfolgreich ausgeführt wurde, müssen Sie in der SQL Server Datenbank überprüfen, ob die Spalte Adresse in der Tabelle Mitarbeiter aktualisiert wird.

Stattdessen können Sie einen bidirektionalen WCF-Custom Sendeport erstellen, der auch die Antwort von SQL Server erhält, wenn die gespeicherte Prozedur erfolgreich ausgeführt wird. Sie müssen einige zusätzliche Schritte ausführen, wenn Sie einen bidirektionalen WCF-Custom-Port erstellen. Beachten Sie, dass Sie weiterhin einen FILE-Empfangsspeicherort benötigen, wie in den vorherigen Anweisungen beschrieben.

  1. Erstellen Sie einen bidirektionalen WCF-Custom Sendeport, z. B. ExecProcedure. Die Schritte zum Konfigurieren des Sendeports ähneln denen für den unidirektionalen Sendeport. Der einzige Unterschied besteht darin, dass Sie für den bidirektionalen Port auch eine Empfangspipeline angeben müssen. Stellen Sie sicher, dass Sie PassThruReceive für die Empfangspipeline auswählen.

  2. Erstellen Sie einen FILE-Sendeport. Dieser Port löscht die Antwortnachricht aus der SQL Server Datenbank in einen Ordner. Konfigurieren Sie über die Registerkarte Filter des Dialogfelds Porteigenschaften den FILE-Sendeport, um alle Antwortnachrichten vom WCF-Custom Sendeport zu empfangen.

    1. Klicken Sie im Dialogfeld Porteigenschaften senden im linken Bereich auf Filter.

    2. Klicken Sie im rechten Bereich unter der Spalte Eigenschaft auf das Raster, und wählen Sie dann BTS aus. SPName-Eigenschaft .

    3. Wählen Sie für die Spalte Operator die Option "==" aus.

    4. Geben Sie für die Spalte Wert den Namen des WCF-Custom Sendeports an. ExecProcedure

    Starten Sie alle drei Ports. Kopieren Sie eine XML-Datei in den Ordner, der dem FILE-Empfangsspeicherort zugeordnet ist. Suchen Sie nach der Antwort im Ordner, der dem FILE-Sendeport zugeordnet ist.

Weitere Informationen

Entwickeln von BizTalk-Anwendungen mithilfe des SQL-Adapters