Share via


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