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

Establece un par clave-valor en el contexto de sesión.

Icono de vínculo de temaConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_set_session_context [ @key= ] N'key', [ @value= ] 'value'  
    [ , [ @read_only = ] { 0 | 1 } ]  
[ ; ]  

Argumentos

[ @key= ] N'key'
Clave que se va a establecer, de tipo sysname. El tamaño máximo de clave es de 128 bytes.

[ @value= ] 'value'
Valor de la clave especificada, de tipo sql_variant. Si se establece un valor null, se libera la memoria. El tamaño máximo es 8.000 bytes.

[ @read_only= ] { 0 | 1 }
Marca de tipo bit. Si es 1, el valor de la clave especificada no se puede volver a cambiar en esta conexión lógica. Si es 0 (valor predeterminado), se puede cambiar el valor.

Permisos

Cualquier usuario puede establecer un contexto de sesión para su 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 (Transact-SQL).

Puede supervisar el uso general de memoria consultando sys.dm_os_memory_cache_counters (Transact-SQL) de la siguiente manera: SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';

Ejemplos

A. En el ejemplo siguiente se muestra cómo establecer y, a continuación, devolver una clave de contexto de sesiones denominada idioma con un valor de inglés.

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

-- set value
EXEC sp_set_session_context 'client_correlation_id', '12323ad'; 

--check value
SELECT SESSION_CONTEXT(N'client_correlation_id');

Consulte también

CURRENT_TRANSACTION_ID (Transact-SQL)
SESSION_CONTEXT (Transact-SQL)
Seguridad de nivel de fila
CONTEXT_INFO (Transact-SQL)
SET CONTEXT_INFO (Transact-SQL)