Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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)