Condividi tramite


SESSION_CONTEXT (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e Database SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsEndpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce il valore della chiave specificata nel contesto della sessione corrente. Il valore viene impostato utilizzando la routine sp_set_session_context .

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SESSION_CONTEXT(N'key')

Argomenti

'key'

Chiave del valore recuperato. key è sysname.

Tipi restituiti

sql_variant

Valore restituito

Valore associato alla chiave specificata nel contesto della sessione o NULL se non viene impostato alcun valore per tale chiave.

Autorizzazioni

Qualsiasi utente può leggere il contesto della sessione per la propria sessione.

Osservazioni:

Il comportamento mars per SESSION_CONTEXT' è simile a quello di CONTEXT_INFO. Se un batch MARS imposta una coppia chiave-valore, il nuovo valore non viene restituito in altri batch MARS nella stessa connessione, a meno che non vengano avviati dopo il batch che imposta il nuovo valore completato. Se più batch MARS sono attivi in una connessione, i valori non possono essere impostati come read_only. Ciò impedisce condizioni di race e non determinismo su quale valore vince.

Esempi

L'esempio semplice seguente imposta il valore del contesto di sessione per la chiave user_id su 4 e quindi usa la SESSION_CONTEXT funzione per recuperare il valore.

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

Problemi noti

Problema Data di scoperta stato Data di risoluzione
È possibile che si verifichi un'eccezione di violazione di accesso (AV) con la SESSION_CONTEXT funzione in determinate condizioni. È possibile che si verifichino eccezioni AV o risultati errati quando la SESSION_CONTEXT funzione viene eseguita all'interno di un piano di esecuzione parallelo quando la sessione viene reimpostata per il riutilizzo.

Una correzione, introdotta in SQL Server 2019 (15.x) CU 14 per risolvere un problema di risultati errati con SESSION_CONTEXT i piani paralleli, è stata successivamente rilevata per causare eccezioni AV in determinate condizioni.

Per attenuare questo problema, è possibile abilitare il flag di traccia 11024 come flag di traccia di avvio, globale o sessione. Questo flag di traccia forza SESSION_CONTEXT l'esecuzione seriale, impedendone la partecipazione ai piani di query paralleli.

Si applica a: SQL Server 2019 (15.x) CU 14 e versioni successive.
Gennaio 2022 Ha una soluzione alternativa