Compartir a través de


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 1es , el valor de la clave especificada no se puede volver a cambiar en esta conexión lógica.
  • Si 0es , 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.

  1. Establezca el valor .

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Recupere el valor.

    SELECT SESSION_CONTEXT(N'client_correlation_id');