Freigeben über


Beenden 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.

Um eine Sitzung zu beenden, muss eine Anforderung den sqlSession-Header angeben, wenn die beiden Attribute sessionId und terminate festgelegt sind. Über sessionId muss eine bekannte Sitzung identifiziert werden, auf die auf dem Server zugegriffen werden kann, und das terminate-Attribut muss auf true festgelegt sein.

Wenn keine Sitzung mit der angegebenen ID vorhanden ist, wird ein SOAP (Simple Object Access Protocol-)Fehler zurückgegeben; hierbei ist das terminate-Attribut im sqlSession-Header enthalten.

Wenn die Anforderung in einem anderen Sicherheitskontext oder für einen anderen Endpunkt ausgeführt wird als der, der die Sitzung initiiert hat, wird ein SOAP-Fehler zurückgegeben, und die Sitzung bleibt unverändert.

Wenn die Sitzung explizit beendet wurde, werden unter der Sitzung keine neuen Anforderungen mehr akzeptiert. Die Sitzung wird geschlossen, wenn der letzte Batch innerhalb der Sitzung abgeschlossen ist. Hierbei handelt es sich nicht notwendigerweise um den Batch, in dem die Sitzungsbeendigung angefordert wurde.

Beispiele

Das folgende Beispiel zeigt das Beenden einer SOAP-Sitzung. Zum Beenden einer Sitzung sendet ein SOAP-Client eine Anforderung, die der nachfolgenden ähnelt. Hierbei ist das bekannte und gültige sessionId-Attribut festgelegt, und für das terminate-Attribut ist der Wert true angegeben:

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- enlist in an existing session, and terminate it --><sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Anforderungen zum Beenden einer Sitzung können leer sein oder einen Nachrichtentext enthalten. Wenn Nachrichtentext vorhanden ist, wird der terminate-Header verarbeitet und bestätigt, ungeachtet der Fehler, die beim Ausführen der Methode auftreten.

Daraufhin gibt der Server eine Bestätigung zurück, die der folgenden ähnelt, um anzugeben, dass die Sitzung beendet wurde.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- response to terminating an existing session --><sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Um sicherzustellen, dass die Beendigung abgeschlossen ist, müssen Clients normalerweise nach der Bestätigungsantwort vom Server scannen. Wenn der Client die Bestätigung nicht innerhalb eines angemessen Zeitraumes empfängt, sollte die Beendigungsanforderung wiederholt werden.