Descobri que a consulta a seguir mostra quantas variáveis de contexto de sessão foram definidas:
SELECT cache_address
,name
,pages_kb
,pages_in_use_kb
,entries_count
,entries_in_use_count
FROM sys.dm_os_memory_cache_counters
WHERE TYPE = 'CACHESTORE_SESSION_CONTEXT';
Mas agora eu gostaria de saber quais pares de valores-chave SESSION_CONTEXT()
foram definidos - se houver.
Depois de fazer uma extensa pesquisa em sites da microsoft não encontrei nada relacionado.
Desde já, obrigado.
Verifiquei a definição de muitas exibições, funções e procedimentos armazenados do sistema relacionados ao contexto e não consigo localizar mais detalhes sobre as variáveis de contexto da sessão.
Por exemplo, a
sys.dm_os_memory_cache_counters
visualização de gerenciamento dinâmico mencionada em sua pergunta tem a seguinte definição:A definição da
SYSMEMORYCACHECOUNTERS
tabela do sistema não é visível diretamente, mesmo a partir da conexão de administrador dedicada, ou DAC , que é, portanto, um beco sem saída.Usei esta consulta para procurar objetos de sistema relacionados ao contexto:
no SQL Server 2016, o resultado da consulta é:
Os procedimentos armazenados estendidos são implementados em várias DLLs do SQL Server e não são facilmente visualizados sem engenharia reversa; Eu as considerei como caixas pretas para o propósito desta pergunta.
sys.dm_exec_cursors
, embora claramente não esteja diretamente relacionado ao "contexto" em que estamos interessados, tem a seguinte definição:Como você pode ver acima, esta função é realmente apenas um wrapper em torno da tabela do sistema
DM_EXEC_CURSORS
; a definição de tabelas de sistema como esta é novamente implementada dentro do mecanismo do SQL Server e não é facilmente inspecionada.As outras funções de tabela em linha listadas na saída da consulta acima utilizam a mesma
OpenRowSet(TABLE ...)
funcionalidade.A
sys.sp_MSsetcontext_bypasswholeddleventbit
aparência intrigante:No entanto, ele só usa
SET CONTEXT_INFO
eCONTEXT_INFO()
para inspecionar e modificar as informações de contexto. Sem sorte aqui.Talvez
sys.query_context_settings
contém algum ouro? Não:Também verifiquei as definições dos módulos SQL, como procedimentos armazenados, funções, etc, com esta consulta:
Nenhum dos itens listados nessa consulta também contém algo relevante.
Em suma, não consegui encontrar nada relacionado ao contexto da sessão. Espero que isso ocorra por design, pois o contexto da sessão pode ser facilmente usado para armazenar dados confidenciais durante uma sessão.