Freigeben über


Verwenden 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 SOAP-Anforderung im Kontext einer bestehenden Sitzung ausführen zu können, muss sie Folgendes als Bestandteil einer SOAP-Sitzungsanforderung an den Server angeben:

  • Dieselbe Sitzungs-ID, die zuvor vom Server dem Client bereitgestellt wurde.

  • Die entsprechende HTTP-Endpunkt-ID für den Endpunkt, an dem die SOAP-Sitzung zuvor initiiert wurde.

  • Derselbe Benutzerkontext. Dies ist entweder ein Windows- oder ein SQL Server-Benutzer, je nachdem, welcher LOGIN_TYPE in den SOAP-Eigenschaften für den Endpunkt unterstützt wird.

Wenn die angegebene Sitzungs-ID nicht vorhanden oder im falschen Format angegeben ist, erfolgt die Rückgabe einer SOAP-Fehlermeldung mit einem sqlSession-Element im Header mit dem terminate-Attribut. Ansonsten antwortet der Server, indem er denselben sqlSession-Header unverändert zurückgibt, den der Client in der Anforderung gesendet hat.

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. In der Antwort wird der SOAP-Fehlercode für die Beendigung der SOAP-Ebene angegeben, und in den sqlSession-Header wird das terminate-Attribut mit dem Wert TRUE eingeschlossen.

Um außerdem zu verhindern, dass ein Benutzer mit bösartigen Absichten feststellen kann, dass eine Sitzung besteht, ist das terminate-Attribut festgelegt, und vom Server wird als einzige Antwort auf alle Anforderungen, in denen die zur Eintragung identifizierte Sitzung dem Server unbekannt ist, eine SOAP-Fehler zurückgegeben.

Beispiele

Das folgende Beispiel zeigt die Eintragung einer SOAP-Sitzung. Es zeigt das Format der SOAP-Meldung, die ein Client sendet, wenn er die Eintragung in eine bestehende SOAP-Sitzung anfordert. Beachten Sie, dass der tatsächliche sessionId-Wert ein sitzungsspezifischer Bezeichner ist.

<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 --><sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Der Server gibt die Meldung entweder unverändert an den Client zurück, um anzugeben, dass der Zugriff auf die Sitzung möglich ist, oder er gibt einen SOAP-Fehler an den Client zurück, wenn der Zugriff auf die in der Anforderung identifizierte Sitzung nicht möglich ist.