Partilhar via


sp_set_session_context (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do AzureInstância Gerenciada SQL do Azureponto de extremidade do Azure Synapse AnalyticsSQL Analytics no Microsoft FabricWarehouse no Microsoft Fabric

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

Transact-SQL convenções de sintaxe

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 de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.

[ @key = ] N'chave'

A chave que está sendo definida. @key é sysname sem padrão. O tamanho máximo da chave é de 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 é de 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 é pouco com um padrão de 0.

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

Permissões

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

Comentários

Como outros procedimentos armazenados, apenas 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 faz com que esse limite seja excedido, a instrução falhará. Você pode monitorar o uso geral da 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

Um. 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 somente leitura opcional.

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