Freigeben über


Initiieren einer SOAP-Sitzung

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Damit eine Sitzung initiiert werden kann, muss eine Clientanforderung den sqlSession-Header enthalten und das initiate-Attribut mit dem Wert true angeben. Nachdem eine Sitzung erfolgreich eingerichtet wurde, enthält die Antwort vom Server den Sitzungsheader, der einen vom Server für die sessionID-Eigenschaft generierten Wert angibt.

Die Sicherheitsanmeldeinformationen des Sitzungsinitiators werden mit der Sitzung verknüpft, und alle nachfolgenden Anforderungen innerhalb der Sitzung müssen unter den gleichen Anmeldeinformationen ausgeführt werden.

Wenn für den HTTP-Endpunkt, der die SOAP-Sitzung bedient, eine DATABASE-Klausel angegeben wurde, wird diese Einstellung nur für die Anforderung wirksam, die die Sitzung initiiert. Nachfolgende Anforderungen werden unter der aktuellen Datenbank der Sitzung ausgeführt.

HinweisHinweis

SOAP-Sitzungen sind verbindungsunabhängig und können SQL Server-Verbindungen überdauern. SOAP-Sitzungen werden bei der maximal zulässigen Anzahl von Verbindungen für den Server nicht berücksichtigt.

Beispiel

Das folgende Beispiel zeigt, wie eine SOAP-Sitzung initiiert wird: Wenn eine SOAP-Sitzung initiiert wird, werden die folgenden Nachrichten verwendet:

  • Die SOAP-Anforderung, die vom Webdiensteclient zum Anfordern einer Sitzung gesendet wurde.

  • Die SOAP-Antwort, die vom Server zum Bestätigen der Anforderung zurückgegeben wurde.

Das folgende Beispiel zeigt die SOAP-Anforderung, die von einem Client gesendet wird.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- create a new session, with explicit timeout --><sqloptions:sqlSession initiate="true" timeout="12"/>
</SOAP-ENV:Header>

Beachten Sie, dass für den Optionsnamen Groß- und Kleinschreibung unterschieden wird; die genaue Zeichenfolge muss daher den Großbuchstaben S enthalten, weil sqlSession zuvor codiert wurde.

Um die Sitzung zu initiieren, gibt der Server anschließend die folgende Anforderung zurück.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- response to creating a new session, or enlisting in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE=" timeout="12"/>
</SOAP-ENV:Header>

In diesem Beispiel beachtet der Server das vom Client angeforderte Timeoutintervall und verwendet als Echo den gleichen Wert ("12") in der Antwort, wenn der angeforderte Timeoutwert kleiner oder gleich dem maximalen Timeoutwert für die Sitzung ist, der auf dem Server auf dem HTTP-Endpunkt festgelegt wurde. Wenn das vom Client in der Anforderung angegebene Timeoutintervall größer als der maximale Timeoutwert für den Server ist, wird der maximale Timeoutwert des Servers in der Antwort an den Client angegeben.