Share via


Chiusura di una sessione SOAP

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Per terminare una sessione, è necessario inviare una richiesta in cui l'intestazione sqlSession sia specificata con il set di attributi sessionId e terminate. L'attributo sessionId deve identificare una sessione nota nel server con stato accessibile e l'attributo terminate deve essere impostato su un valore True.

Se non vi è alcuna sessione esistente con l'ID specificato, viene restituito un errore SOAP con l'attributo terminate nell'intestazione sqlSession.

Se la richiesta viene eseguita in un contesto di protezione o un endpoint diverso rispetto a quello che ha iniziato la sessione, viene restituito un errore SOAP e la sessione resta inalterata.

In caso di chiusura esplicita, nella sessione non vengono accettate altre nuove richieste. La sessione viene chiusa quando viene completato l'ultimo batch al suo interno. Il batch non è necessariamente lo stesso in cui è stata effettivamente richiesta la chiusura della sessione.

Esempi

Nell'esempio seguente viene illustrata la chiusura di una sessione SOAP. Per terminare una sessione, un client SOAP invia una richiesta come quella indicata di seguito con il set di attributi sessionId noto e valido e l'attributo terminate specificato con un valore true:

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

Le richieste per terminare una sessione possono essere vuote o includere testo. Se è presente un testo, l'intestazione viene elaborata e ottiene l'acknowledgement, indipendentemente dagli errori generati durante l'esecuzione del metodo.

Il server restituisce una conferma simile alla seguente, indicante che la sessione è stata terminata.

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

Per verificare che il processo sia stato completato, i client dovranno in genere eseguire una scansione per individuare la risposta alla conferma da parte del server. Se la conferma non viene ricevuta dal client entro un intervallo di tempo ragionevole, il client dovrà eseguire un nuovo tentativo di richiesta di chiusura.