Partilhar via


sp_set_session_context (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Ponto de extremidade de análises SQL no Microsoft Fabric Warehouse 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 poderá ser alterado novamente nessa 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 no sys.dm_os_memory_objects.

Você pode monitorar o uso geral da memória consultando sys.dm_os_memory_cache_counters 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 do 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');