Compartir a través de


sp_set_session_context (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics sql analytics endpointin Microsoft FabricWarehouse in Microsoft FabricSQL Database in Microsoft Fabric SQL Database in 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

Importante

Los argumentos para los procedimientos almacenados extendidos deben especificarse en el orden específico, tal como se describe en la sección sintaxis de . Si los parámetros se escriben fuera de orden, se produce un mensaje de error.

[ @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 = ] 'valor'

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.

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

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

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

    SELECT SESSION_CONTEXT(N'client_correlation_id');