Condividi tramite


Modalità di funzionamento del supporto per le sessioni 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.

Tutte le sessioni SOAP vengono generate tramite coppie di messaggi richiesta/risposta tra il server e i client che includono l'intestazione facoltativa sqlSession per racchiudere tutte le informazioni relative alle sessioni SOAP. sqlSession fa distinzione tra maiuscole e minuscole e fa parte dello spazio dei nomi sqloptions.

Dopo essere state iniziate dal server, le sessioni SOAP vengono archiviate nella vista a gestione dinamica sys.dm_exec_sessions. Questa vista restituisce gli ID di sessione e l'ora di inizio di ogni sessione. È possibile visualizzare questa tabella eseguendo la query seguente in SQL Server Management Studio o tramite l'utilità da riga di comando osql:

SELECT * FROM [sys].[dm_exec_sessions]

Le sessioni SOAP scadono in base a un valore di timeout di sessione. Il valore predefinito o massimo per il timeout di sessione viene impostato utilizzando le istruzioni DLL CREATE ENDPOINT o ALTER ENDPOINT. I client possono tuttavia richiedere un valore di timeout inferiore all'intervallo predefinito. Se il client richiede un timeout superiore a quello predefinito del server, il timeout specificato nell'istruzione DLL dell'endpoint ha la precedenza sulla preferenza del client. Si supponga, ad esempio, che l'istruzione CREATE ENDPOINT seguente sia stata utilizzata per stabilire un endpoint con supporto per le sessioni:

CREATE ENDPOINT
   ...
SESSIONS=ENABLED
   ...
SESSION_TIMEOUT = 60

Se, quindi, un client SOAP richiede un timeout di sessione superiore al valore massimo impostato nel server, ad esempio 90, il valore massimo di 60 ha la precedenza e viene applicato come intervallo di timeout di sessione effettivo. Se il valore di SESSION_TIMEOUT non è impostato nell'istruzione DLL dell'endpoint, non si verifica il timeout delle sessioni (valore infinito).

Per impostazione predefinita, negli endpoint HTTP le sessioni non sono attivate. Per attivare le sessioni in un endpoint, è necessario specificare SESSIONS=ENABLED nell'istruzione DDL dell'endpoint.

Le sessioni sono persistenti solo quando l'istanza di SQL Server è in linea. Quando il server viene interrotto e quindi riavviato, tutte le sessioni vengono reimpostate. La modifica dell'endpoint può inoltre influire sulle sessioni aperte o nuove che utilizzano tale endpoint. Per ulteriori informazioni, vedere Modifica di endpoint quando si utilizzano sessioni SOAP.

Nota

Tutte le richieste di join alle sessioni SOAP HTTP devono essere autenticate. Per ulteriori informazioni, vedere Tipi di autenticazione dell'endpoint.

Le sessioni possono essere iniziate o terminate per modificarne lo stato, ma generalmente rimangono in uno stato di "sospensione", ad esempio quando una sessione è stata iniziata ed è aperta nel server per l'utilizzo da parte del client, oppure in uno stato di "inattività", ad esempio quando una sessione è stata terminata e non è al momento disponibile nel server per l'utilizzo da parte del client.

Nota

Le richieste WSDL (Web Services Definition Language) non possono partecipare alle sessioni SOAP. Per ulteriori informazioni su WSDL, vedere Utilizzo di WSDL.