Compartir vía


sp_set_session_context (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics de Azure Synapse Analytics en Microsoft Fabric Warehouse en 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 (Transact-SQL).

Puede supervisar el uso general de la memoria consultando sys.dm_os_memory_cache_counters (Transact-SQL) como se indica a continuación:

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');