Compartilhar via


sp_set_session_context (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores do Banco de Dados SQL doAzure Azure Instância Gerenciada de SQLdo Azure Synapse Analytics ponto deextremidade de análise de SQL no Microsoft Fabric Warehouse no Banco de Dados SQLdo Microsoft Fabricno 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

Importante

Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.

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

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

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

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

    SELECT SESSION_CONTEXT(N'client_correlation_id');