Inizio di una sessione SOAP
Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Per iniziare una sessione, nella richiesta client deve essere inclusa l'intestazione sqlSession e il valore true per l'attributo initiate. Se una sessione viene stabilita correttamente, la risposta proveniente dal server contiene l'intestazione di sessione che specifica un valore generato del server per la proprietà sessionID.
Alla sessione sono associate le credenziali di protezione dell'Initiator della sessione e tutte le successive richieste interne alla sessione devono essere eseguite utilizzando le stesse credenziali.
Se nell'endpoint HTTP che assiste la sessione SOAP è specificata una clausola DATABASE, questa impostazione è effettiva solo per la richiesta che sta iniziando la sessione. Le richieste successive vengono eseguite nell'ambito del database attuale della sessione.
[!NOTA]
Le sessioni SOAP sono indipendenti dalla connessione, ovvero possono rimanere attive indipendentemente dallo stato delle connessioni di SQL Server. Le sessioni SOAP non gravano sul numero massimo di connessioni per il server.
Esempio
Nell'esempio seguente viene spiegato come iniziare una sessione SOAP. Quando una sessione SOAP viene iniziata, vengono utilizzati i messaggi seguenti:
La richiesta SOAP inviata dal client dei servizi Web per richiedere una sessione
La risposta SOAP restituita dal server per confermare la richiesta
Nell'esempio seguente è riportata una possibile richiesta SOAP inviata dal client.
<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>
Si noti che il nome di opzione prevede la distinzione tra maiuscole e minuscole, pertanto la stringa esatta deve includere la lettera S maiuscola, dato che sqlSession è codificato precedentemente.
Per iniziare la sessione, il server restituirebbe la richiesta seguente.
<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 questo esempio, finché il valore timeout richiesto è minore o uguale al timeout sessione massimo impostato a livello del server sull'endpoint HTTP, il server rispetterà l'intervallo di timeout richiesto dal client e ripeterà lo stesso valore ("12") nella risposta. Se l'intervallo di timeout specificato dal client nella richiesta è maggiore del timeout massimo per il server, nella risposta diretta al client viene specificato il timeout massimo del server.