sp_set_session_context (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric

Define um par chave-valor no contexto da sessão.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_set_session_context
    [ @key = ] N'key'
    , [ @value = ] 'value'
    [ , [ @read_only = ] read_only ]
[ ; ]

Argumentos

@key [ = ] N'chave'

A chave sendo definida. @key é sysname sem padrão. O tamanho máximo da chave é 128 bytes.

@value [ = ] 'valor'

O valor para a chave especificada. @value é sql_variant, com um padrão de NULL. Definir um valor de NULL libera a memória. O tamanho máximo é 8.000 bytes.

@read_only [ = ] read_only

Um sinalizador que indica se a chave especificada pode ser alterada na conexão lógica. @read_only é bit com um padrão de 0.

  • Se 1, o valor da chave especificada não puder ser alterado novamente nesta conexão lógica.
  • Se 0, o valor pode ser alterado.

Permissões

Qualquer usuário pode definir o contexto de sessão de sua sessão.

Comentários

Como outros procedimentos armazenados, somente literais e variáveis (não expressões ou chamadas de função) podem ser passados como parâmetros.

O tamanho total do contexto da sessão é limitado a 1 MB. Se você definir um valor que faça com que esse limite seja excedido, a instrução falhará. Você pode monitorar o uso geral de memória em sys.dm_os_memory_objects (Transact-SQL).

Você pode monitorar o uso geral da memória consultando sys.dm_os_memory_cache_counters (Transact-SQL) da seguinte maneira:

SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';

Exemplos

R. Definir e retornar um contexto de sessão

O exemplo a seguir mostra como definir e retornar a chave de contexto de uma sessão chamada language, com um valor de English.

EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');

O exemplo a seguir demonstra o uso do sinalizador opcional somente leitura.

EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;

B. Definir e retornar uma ID de correlação de cliente

O exemplo a seguir mostra como definir e recuperar uma chave de contexto de sessão chamada client_correlation_id, com um valor de 12323ad.

  1. Defina o valor .

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

    SELECT SESSION_CONTEXT(N'client_correlation_id');