Notificações de Consultas - sys.dm_qn_subscriptions

Aplica-se a: SQL Server

Devolve informações sobre as notificações ativas de consultas e subscrições no servidor. Pode usar esta vista para verificar subscrições ativas no servidor ou numa base de dados específica, ou para verificar um principal de servidor especificado.

Nome da coluna Tipo de dados Description
id int ID de uma subscrição.
database_id int ID da base de dados onde a consulta de notificação foi executada. Esta base de dados armazena informações relacionadas com esta subscrição.
SID varbinary(85) ID de segurança do principal servidor que criou e detém esta subscrição.
object_id int ID da tabela interna que armazena informação sobre os parâmetros da subscrição.
criado datetime Data e hora em que a subscrição foi criada.
tempo de espera int Tempo para a subscrição em segundos. A notificação será sinalizada como disparo após esse tempo decorrer.

Nota: O tempo real de disparo pode ser maior do que o tempo de espera especificado. No entanto, se uma alteração que invalida a subscrição ocorrer após o tempo especificado, mas antes da subscrição ser lançada, o SQL Server garante que o disparo ocorre no momento em que a alteração foi feita.
status int Indica o estado da subscrição. Consulte a tabela em observações para a lista de códigos.

Cardinalidades de Relação

From Para Ativado Tipo
sys.dm_qn_subscriptions sys.databases database_id Muitos para um
sys.dm_qn_subscriptions sys.internal_tables object_id Muitos para um

Remarks

O código de estado 0 indica um estado indefinido.

Os seguintes códigos de estado indicam que uma subscrição foi cancelada devido a uma alteração:

Code Estatuto secundário Informações
65798 Subscrição foi cancelada porque os dados mudaram Subscrição acionada por inserção
65799 Subscrição foi cancelada porque os dados mudaram Delete
65800 Subscrição foi cancelada porque os dados mudaram Update
65801 Subscrição foi cancelada porque os dados mudaram Merge
65802 Subscrição foi cancelada porque os dados mudaram Tabela truncada
66048 Subscrição cancelada porque o tempo limite expirou Modo de informação indefinido
66315 Subscrição disparada porque o objeto mudou O objeto ou utilizador foi descartado
66316 Subscrição disparada porque o objeto mudou O objeto foi alterado
66565 Subscrição foi cancelada porque a base de dados foi destacada ou cancelada Servidor ou base de dados reiniciados
66571 Subscrição foi cancelada porque a base de dados foi destacada ou cancelada O objeto ou utilizador foi descartado
66572 Subscrição foi cancelada porque a base de dados foi destacada ou cancelada O objeto foi alterado
67341 A subscrição foi acionada devido à falta de recursos de overout no servidor A subscrição foi acionada devido à falta de recursos de overout no servidor

Os seguintes códigos de estado indicam que uma subscrição não foi criada:

Code Estatuto secundário Informações
132609 A criação da subscrição falhou porque a declaração não é suportada A consulta é demasiado complexa
132610 A criação da subscrição falhou porque a declaração não é suportada Declaração inválida para subscrição
132611 A criação da subscrição falhou porque a declaração não é suportada Opções de conjunto inválidas para subscrição
132612 A criação da subscrição falhou porque a declaração não é suportada Nível de isolamento inválido
132622 A criação da subscrição falhou porque a declaração não é suportada Usado internamente
132623 A criação da subscrição falhou porque a declaração não é suportada acima do limite do modelo por tabela

Os seguintes códigos de estado são usados internamente e classificados como modos check kill e init:

Code Estatuto secundário Informações
198656 Usado internamente: check kill e init modes Modo de informação indefinido
198928 A subscrição foi destruída Subscrição disparada porque a base de dados estava anexada
198929 A subscrição foi destruída Subscrição foi despedida porque o utilizador foi dispensado
198930 A subscrição foi destruída A subscrição foi cancelada devido a uma nova subscrição
198931 A subscrição foi destruída a subscrição foi cancelada
199168 A subscrição está ativa Modo de informação indefinido
199424 Subscrição inicializada mas ainda não ativa Modo de informação indefinido

Permissions

Requer VIEW permissão de ESTADO do SERVIDOR no servidor.

Note

Se o utilizador não tiver VIEW permissão SERVIDOR STATE, esta vista devolve informações sobre subscrições detidas pelo utilizador atual.

Permissões para SQL Server 2022 e posterior

Requer VIEW permissão ESTADO DE DESEMPENHO DO SERVIDOR no servidor.

Examples

A. Devolver subscrições de notificação ativa de consulta para o utilizador atual

O exemplo seguinte devolve as subscrições ativas de notificação de consulta do utilizador atual. Se o utilizador tiver VIEW permissões de ESTADO DO SERVIDOR, todas as subscrições ativas no servidor são devolvidas.

SELECT id, database_id, sid, object_id, created, timeout, status  
FROM sys.dm_qn_subscriptions;  
GO  

B. Devolver subscrições ativas de notificação de consulta para um utilizador especificado

O exemplo seguinte devolve as subscrições de notificação ativa de consulta subscrividas por login Ruth0.

SELECT id, database_id, sid, object_id, created, timeout, status  
FROM sys.dm_qn_subscriptions  
WHERE sid = SUSER_SID('Ruth0');  
GO  

C. Devolver metadados internos de tabela para subscrições de notificação de consulta

O exemplo seguinte devolve os metadados internos da tabela para subscrições de notificações de consulta.

SELECT qn.id AS query_subscription_id  
    ,it.name AS internal_table_name  
    ,it.object_id AS internal_table_id  
FROM sys.internal_tables AS it  
JOIN sys.dm_qn_subscriptions AS qn ON it.object_id = qn.object_id  
WHERE it.internal_type_desc = 'QUERY_NOTIFICATION';  
GO  

Ver também

Visões e funções de gerenciamento dinâmico (Transact-SQL)
Notificações de Consulta Vistas de Gestão Dinâmica Relacionadas (Transact-SQL)
KILL QUERY NOTIFICATION SUBSCRIÇÃO (Transact-SQL)