Freigeben über


ExecuteReader-, ExecuteScalar- oder ExecuteNonQuery-Vorgänge in SQL mit BizTalk Server

Der SQL-Adapter macht generische SQL Server Vorgänge wie ExecuteNonQuery, ExecuteReader und ExecuteScalar verfügbar. Sie können diese Vorgänge verwenden, um eine beliebige SQL-Anweisung für eine SQL Server-Datenbank auszuführen. Diese Vorgänge unterscheiden sich je nach Art der Antwort, die Sie für die SQL-Anweisung erhalten. Weitere Informationen dazu, wie der Adapter diese Vorgänge unterstützt, finden Sie unter Unterstützung für ExecuteNonQuery-, ExecuteReader- und ExecuteScalar-Vorgänge.

In diesem Thema wird veranschaulicht, wie Sie einen ExecuteReader-Vorgang mithilfe des SQL-Adapters mit BizTalk Server ausführen. Sie können die gleichen In diesem Thema beschriebenen Prozeduren befolgen, um ExecuteNonQuery - und ExecuteScalar-Vorgänge auszuführen.

Voraussetzungen

Aufrufen des ExecuteReader-Vorgangs für eine SQL Server-Datenbank

Das Ausführen eines Vorgangs für eine SQL Server-Datenbank mithilfe des SQL-Adapters mit BizTalk Server umfasst prozedurale Aufgaben, die unter Bausteine zum Entwickeln von BizTalk-Anwendungen mit dem SQL-Adapter beschrieben werden. Um den ExecuteReader-Vorgang in SQL Server aufzurufen, lauten die folgenden Aufgaben:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie ein Schema für den ExecuteReader-Vorgang .

  2. Erstellen Sie Nachrichten im BizTalk-Projekt zum Senden und Empfangen von Nachrichten von SQL Server.

  3. Erstellen Sie eine Orchestrierung, um den Vorgang für SQL Server aufzurufen.

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

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

  6. Starten Sie die BizTalk-Anwendung.

    Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.

Schema generieren

In diesem Thema wird veranschaulicht, wie der ExecuteReader-Vorgang in SQL Server mithilfe des SQL-Adapters mit BizTalk Server aufgerufen wird. Der ExecuteReader-Vorgang verwendet eine beliebige SQL-Anweisung als Parameter und gibt das Resultset für den Vorgang als Array von DataSet zurück. In diesem Thema wird gezeigt, wie die gespeicherte ADD_EMP_DETAILS Prozedur mithilfe des ExecuteReader-Vorgangs ausgeführt wird. Diese gespeicherte Prozedur fügt der Tabelle Employee einen Datensatz hinzu und gibt die ID für den neu hinzugefügten Mitarbeiter zurück. Die im Thema verwendeten Tabellen und gespeicherten Prozeduren werden durch Ausführen der skripts erstellt, die mit den Beispielen bereitgestellt werden. Weitere Informationen zum Skript finden Sie unter Beispiele für den SQL-Adapter.

Um zu veranschaulichen, wie der ExecuteReader-Vorgang aufgerufen wird, wird ein Schema für den ExecuteReader-Vorgang generiert. Sie müssen ein BizTalk-Projekt erstellen und das Add-In Consume Adapter Service verwenden, um das Schema zu generieren. Weitere Informationen zum Generieren von Schemas finden Sie unter Abrufen von Metadaten für SQL Server Vorgänge in Visual Studio mithilfe des SQL-Adapters.

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. Erstellen Sie nun Nachrichten für die Orchestrierung, und verknüpfen Sie sie mit Schemas, die Sie im vorherigen Schritt generiert haben.

  1. Fügen Sie dem BizTalk-Projekt eine Orchestrierung hinzu. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf den BizTalk-Projektnamen, 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 dieses nicht bereits geöffnet ist. Klicken Sie hierzu 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 die Message_1 wie folgt vor:

    Option Aufgabe
    Bezeichner Geben Sie Request ein
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie dann Execute_Reader.GenericOperation.ExecuteReader aus, wobei Execute_Reader der Name Ihres BizTalk-Projekts ist. GenericOperation ist das Schema, das für den ExecuteReader-Vorgang generiert wird.
  6. Wiederholen Sie Schritt 2, um eine neue Nachricht zu erstellen. Gehen Sie im Bereich Eigenschaften für die neue Nachricht wie folgt vor:

    Option Aufgabe
    Bezeichner Geben Sie Response ein
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie dann Execute_Reader.GenericOperation.ExecuteReaderResponse aus.

Einrichten der Orchestrierung

Erstellen Sie eine BizTalk-Orchestrierung, um BizTalk Server zum Ausführen eines Vorgangs für SQL Server zu verwenden. Bei dieser Orchestrierung legen Sie eine Anforderungsnachricht an einem definierten Empfangsspeicherort ab. Der SQL-Adapter verwendet diese Nachricht und übergibt sie an SQL Server. Die Antwort von SQL Server wird an einem anderen Speicherort gespeichert. Sie müssen Send- und Receive-Shapes einschließen, um Nachrichten an SQL Server zu senden bzw. Antworten zu empfangen. Eine Beispielorchestrierung zum Aufrufen eines ExecuteReader-Vorgangs sieht wie folgt aus:

Orchestrierung zum Aufrufen des ExecuteReader-Vorgangs

Hinzufügen von Nachrichten-Shapes

Geben Sie die folgenden Eigenschaften für die einzelnen Nachrichtenformen ein. 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.
SendMessage Send Name aufSendMessage festlegen
ReceiveResponse Empfangen Name aufReceiveResponse festlegen
– Legen Sie Activate auf False fest.
SendResponse Send – Legen Sie Name auf SendResponse fest.

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
MessageIn Bezeichner auf MessageIn festlegen
– Legen Sie Type auf MessageInType fest.
– Festlegen des Kommunikationsmusters auf Unidirektionale
– Festlegen der Kommunikationsrichtung auf "Empfangen"
LOBPort Bezeichner auf LOBPort festlegen
– Legen Sie Type auf LOBPortType fest.
- Festlegen des Kommunikationsmusters auf Anforderungsantwort
- Festlegen der Kommunikationsrichtung auf Senden/Empfangen
ResponseOut – Festlegen des Bezeichners auf ResponseOut
– Festlegen von Typ auf ResponseOutType
- Festlegen des Kommunikationsmusters auf unidirektionales Muster
- Kommunikationsrichtung auf Senden festlegen

Geben Sie Nachrichten für Aktionsformen ein, und verbinden Sie sie mit Ports.

Die folgende Tabelle gibt die Eigenschaften und deren Werte an, die Sie festlegen sollten, um Nachrichten 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 Nachrichtenformen, die in der zuvor erwähnten Orchestrierung angezeigt werden.

Form Eigenschaften
ReceiveMessage - Nachricht aufAnforderung festlegen
– Festlegen von Operation auf MessageIn.ExecuteReader.Request
SendMessage - Nachricht aufAnforderung festlegen
– Festlegen von Operation auf LOBPort.ExecuteReader.Request
ReceiveResponse Nachricht aufAntwort festlegen
– Festlegen von Operation auf LOBPort.ExecuteReader.Response
SendResponse Nachricht aufAntwort festlegen
– Festlegen von Operation auf ResponseOut.ExecuteReader.Request

Nachdem Sie diese Eigenschaften angegeben haben, sind die Nachrichtenformen und -ports verbunden, und Die Orchestrierung ist abgeschlossen.

Sie müssen jetzt die BizTalk-Lösung erstellen und in 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 im Bereich Orchestrierungen in der BizTalk Server Verwaltungskonsole aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Weitere Informationen zum Konfigurieren einer Anwendung 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 Folgendes ausführen:

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem Sie eine Anforderungsnachricht ablegen. Die BizTalk-Orchestrierung nutzt die Anforderungsnachricht und sendet sie an die SQL Server-Datenbank.

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Antwortnachricht mit der Antwort aus der SQL Server-Datenbank entfernt.

    • Definieren Sie einen physischen WCF-Custom- oder WCF-SQL-Sendeport, um Nachrichten an die SQL Server-Datenbank zu senden. Sie müssen auch die Aktion im Sendeport angeben. Informationen zum Erstellen von Ports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den SQL-Adapter.

      Hinweis

      Beim Generieren des Schemas mithilfe des BizTalk-Projekt-Add-Ins "Verbrauchadapterdienst" wird auch eine Bindungsdatei erstellt, die Informationen zu den Ports und den Aktionen enthält, die für diese Ports festgelegt werden sollen. Sie können diese Bindungsdatei aus der BizTalk Server-Verwaltungskonsole importieren, um Sendeports (für ausgehende Anrufe) zu erstellen oder Ports (für eingehende Anrufe) zu empfangen. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei für die Verwendung des SQL-Adapters.

Starten der Anwendung

Starten Sie die BizTalk-Anwendung zum Aufrufen des ExecuteReader-Vorgangs in der SQL Server-Datenbank. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung.

Stellen Sie in dieser Phase Folgendes sicher:

  • Der FILE-Empfangsport zum Empfangen von Anforderungsmeldungen für die Orchestrierung wird ausgeführt.

  • Der FILE-Sendeport zum Empfangen der Antwortnachrichten von der Orchestrierung wird ausgeführt.

  • Der WCF-Custom- oder WCF-SQL-Sendeport zum Senden von Nachrichten an die SQL Server Datenbank wird ausgeführt.

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

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, müssen Sie eine Anforderungsnachricht an den FILE-Empfangsspeicherort ablegen. Das Schema für die Anforderungsnachricht muss dem Schema für den executeReader-Vorgang entsprechen, den Sie zuvor generiert haben. Beispielsweise lautet die Anforderungsmeldung zum Aufrufen des ADD_EMP_DETAILS mithilfe eines ExecuteReader-Vorgangs :

<ExecuteReader xmlns="http://schemas.microsoft.com/Sql/2008/05/GenericTableOp/">  
  <Query>EXEC ADD_EMP_DETAILS Tom,Manager,100000</Query>  
</ExecuteReader>  

Weitere Informationen zum Anforderungsmeldungsschema zum Aufrufen eines ExecuteReader-Vorgangs mithilfe des SQL-Adapters finden Sie unter Nachrichtenschemas für die ExecuteNonQuery-, ExecuteReader- und ExecuteScalar-Vorgänge.

Hinweis

Innerhalb des <Query> Tags können Sie mehrere SQL-Anweisungen angeben, die durch ein Semikolon getrennt sind.

Die Orchestrierung nutzt die Nachricht und sendet sie an die SQL Server-Datenbank. Die Antwort aus der SQL Server Datenbank wird am anderen FILE-Speicherort gespeichert, der als Teil der Orchestrierung definiert ist. Die Antwort für den ExecuteReader-Vorgang enthält ein Resultset als DataSet-Array. Die Antwort der SQL Server Datenbank für die vorherige Anforderungsnachricht lautet beispielsweise:

<?xml version="1.0" encoding="utf-8" ?>   
<ExecuteReaderResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/GenericTableOp/">  
  <ExecuteReaderResult>  
    <DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">  
      <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
        <xs:element msdata:IsDataSet="true" name="NewDataSet">  
          <xs:complexType>  
            <xs:sequence>  
              <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">  
                <xs:complexType>  
                  <xs:sequence>  
                    <xs:element minOccurs="0" name="Employee_ID" type="xs:int" />   
                  </xs:sequence>  
                </xs:complexType>  
              </xs:element>  
            </xs:sequence>  
          </xs:complexType>  
        </xs:element>  
      </xs:schema>  
      <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">  
        <NewDataSet xmlns="">  
          <NewTable>  
            <Employee_ID>10767</Employee_ID>   
          </NewTable>  
        </NewDataSet>  
      </diffgr:diffgram>  
    </DataSet>  
  </ExecuteReaderResult>  
</ExecuteReaderResponse>  

In der Antwort ist 10767 die ID des neu erstellten Mitarbeiters.

Bewährte Methoden

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

Weitere Informationen

Entwickeln von BizTalk-Anwendungen mithilfe des SQL-Adapters