sp_set_session_context (Transact-SQL)
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento de Microsoft Fabric
Establece un par clave-valor en el contexto de sesión.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
Argumentos
[ @key = ] N'key'
Clave que se va a establecer. @key es sysname sin valor predeterminado. El tamaño máximo de la clave es 128 bytes.
[ @value = ] 'value'
Valor para la clave especificada. @value es sql_variant, con un valor predeterminado de NULL
. Si se establece un valor de NULL
, se libera la memoria. El tamaño máximo es 8.000 bytes.
[ @read_only = ] read_only
Marca que indica si se puede cambiar la clave especificada en la conexión lógica. @read_only es bit con un valor predeterminado de 0
.
- Si
1
es , el valor de la clave especificada no se puede volver a cambiar en esta conexión lógica. - Si
0
es , se puede cambiar el valor.
Permisos
Cualquier usuario puede leer el contexto de la sesión.
Observaciones
Al igual que otros procedimientos almacenados, solo se pueden pasar literales y variables (no expresiones o llamadas de función) como parámetros.
El tamaño total del contexto de sesión está limitado a 1 MB. Si establece un valor que hace que se supere este límite, se produce un error en la instrucción. Puede supervisar el uso general de memoria en sys.dm_os_memory_objects.
Puede supervisar el uso general de la memoria consultando sys.dm_os_memory_cache_counters de la siguiente manera:
SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';
Ejemplos
A Establecer y devolver un contexto de sesión
En el ejemplo siguiente se muestra cómo establecer y, a continuación, devolver la clave de contexto de una sesión denominada language
, con un valor de English
.
EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');
En el ejemplo siguiente se muestra el uso de la marca opcional de solo lectura.
EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;
B. Establecimiento y devolución de un identificador de correlación de cliente
En el ejemplo siguiente se muestra cómo establecer y recuperar una clave de contexto de sesión denominada client_correlation_id
, con un valor de 12323ad
.
Establezca el valor .
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
Recupere el valor.
SELECT SESSION_CONTEXT(N'client_correlation_id');