Compartir a través de


SESSION_CONTEXT (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento de Microsoft Fabric

Devuelve el valor de la clave especificada en el contexto de la sesión actual. El valor se establece mediante el procedimiento sp_set_session_context .

Convenciones de sintaxis de Transact-SQL

Sintaxis

SESSION_CONTEXT(N'key')

Argumentos

'key'

Clave del valor que se va a recuperar. key es sysname.

Tipos de retorno

sql_variant

Valor devuelto

Valor asociado a la clave especificada en el contexto de sesión o NULL si no se establece ningún valor para esa clave.

Permisos

Cualquier usuario puede leer el contexto de la sesión.

Observaciones

El comportamiento de MARS para SESSION_CONTEXT" es similar al de CONTEXT_INFO. Si un lote de MARS establece un par clave-valor, el nuevo valor no se devuelve en otros lotes de MARS en la misma conexión a menos que se inicien después del lote que establezca el nuevo valor completado. Si hay varios lotes de MARS activos en una conexión, los valores no se pueden establecer como read_only. Esto evita las condiciones de carrera y el no determinismo sobre qué valor gana.

Ejemplos

En el ejemplo sencillo siguiente se establece el valor de contexto de sesión de la clave user_id en 4 y, a continuación, se usa la SESSION_CONTEXT función para recuperar el valor.

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

Problemas conocidos

Cuestión Fecha de detección Estado Fecha de resolución
Es posible que se produzca una excepción de infracción de acceso (AV) con la SESSION_CONTEXT función en determinadas condiciones. Es posible que encuentre excepciones de AV o resultados incorrectos cuando la SESSION_CONTEXT función se ejecute dentro de un plan de ejecución paralelo cuando se restablezca la sesión para su reutilización.

Una corrección, que se introdujo en SQL Server 2019 (15.x) CU 14 para solucionar un problema de resultados incorrecto con SESSION_CONTEXT dentro de los planes paralelos, se encontró más adelante para provocar excepciones de AV en determinadas condiciones.

Para mitigar este problema, puede habilitar la marca de seguimiento 11024 como marca de inicio, global o de seguimiento de sesión. Esta marca de seguimiento fuerza SESSION_CONTEXT a ejecutarse en serie, lo que impide que participe en planes de consulta paralelos.

Se aplica a: SQL Server 2019 (15.x) CU 14 y versiones posteriores.
Enero de 2022 Tiene solución alternativa