Compartilhar via


sys.dm_qn_subscriptions (Transact-SQL)

Retorna informações sobre as assinaturas de notificações de consulta ativas no servidor. Você pode usar essa exibição para verificar assinaturas ativas no servidor ou em um banco de dados especificado, ou verificar um principal de servidor especificado.

Nome da coluna

Tipo de dados

Descrição

id

int

ID de uma assinatura.

database_id

int

ID do banco de dados no qual a consulta de notificação foi executada. Esse banco de dados armazena informações relativas a essa assinatura.

sid

varbinary(85)

ID de segurança do principal do servidor que criou e detém essa assinatura.

object_id

int

ID da tabela interna que armazena informações sobre parâmetros de assinatura.

criado

datetime

Data e hora em que a assinatura foi criada.

tempo limite

int

Tempo limite para a assinatura em segundos. A notificação será sinalizada para disparar após o decorrer desse período.

ObservaçãoObservação
A hora real do disparo pode ser maior que o tempo limite especificado. No entanto, se uma alteração que invalida a assinatura ocorrer após o tempo limite especificado, mas antes de a assinatura ser disparada, o SQL Server assegurará que o disparo ocorra no momento em que a alteração for realizada.

status

int

Indica o status da assinatura. Veja a tabela abaixo dos comentários para obter a lista de códigos.

Cardinalidades de relação

De

Para

Em

Tipo

sys.dm_qn_subscriptions

sys.databases

database_id

Muitos para um

sys.dm_qn_subscriptions

sys.internal_tables

object_id

Muitos para um

Comentários

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

Os códigos de status a seguir indicam que uma assinatura foi acionada devido a uma alteração:

Código

Status secundário

Informações

65798

Assinatura acionada porque os dados foram alterados

Assinatura disparada por inserção

65799

Assinatura acionada porque os dados foram alterados

Excluir

65800

Assinatura acionada porque os dados foram alterados

Atualizar

65801

Assinatura acionada porque os dados foram alterados

Mesclar

65802

Assinatura acionada porque os dados foram alterados

Truncar tabela

66048

Assinatura acionada porque o tempo limite expirou

Modo de informações indefinido

66315

Assinatura acionada porque os objetos foram alterados

objeto ou usuário removido

66316

Assinatura acionada porque os objetos foram alterados

objeto alterado

66565

Assinatura acionada porque o banco de dados foi desanexado ou removido

servidor ou db reiniciado

66571

Assinatura acionada porque o banco de dados foi desanexado ou removido

objeto ou usuário removido

66572

Assinatura acionada porque o banco de dados foi desanexado ou removido

objeto alterado

67341

assinatura disparada devido à falta de recursos no servidor

assinatura disparada devido à falta de recursos no servidor

Os códigos de status a seguir indicam que uma assinatura não pôde ser criada:

Código

Status secundário

Informações

132609

A criação de assinatura falhou porque não há suporte à instrução

Consulta muito complexa

132610

A criação de assinatura falhou porque não há suporte à instrução

Instrução inválida para assinatura

132611

A criação de assinatura falhou porque não há suporte à instrução

Opções definidas inválidas para assinatura

132612

A criação de assinatura falhou porque não há suporte à instrução

Nível de isolamento inválido

132622

A criação de assinatura falhou porque não há suporte à instrução

usado internamente

132623

A criação de assinatura falhou porque não há suporte à instrução

acima do limite do modelo por tabela

Os códigos de status a seguir são usados internamente e são classificados como modos de check kill e init:

Código

Status secundário

Informações

198656

Usado internamente: modos check kill e init

Modo de informações indefinido

198928

Assinatura destruída

Assinatura acionada porque o banco de dados foi anexado

198929

Assinatura destruída

Assinatura acionada porque o usuário foi removido

198930

Assinatura destruída

Assinatura removida devido a uma nova assinatura

198931

Assinatura destruída

assinatura eliminada

199168

Assinatura ativa

Modo de informações indefinido

199424

Assinatura inicializada, mas não ativa ainda

Modo de informações indefinido

Permissões

Requer a permissão VIEW SERVER STATE no servidor.

ObservaçãoObservação

Se o usuário não tiver a permissão VIEW SERVER STATE, essa exibição retornará informações sobre as assinaturas de propriedade do usuário atual.

Exemplos

A. Retornar assinaturas ativas de notificação de consulta para o usuário atual

O exemplo a seguir retorna assinaturas ativas de notificação de consulta para o usuário atual. Se o usuário tiver permissões VIEW SERVER STATE, todas as assinaturas ativas no servidor serão retornadas.

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

B. Retornar assinaturas ativas de notificação de consulta para um usuário especificado

O exemplo a seguir retorna assinaturas ativas de notificação de consulta feitas pelo logon Ruth0.

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

C. Retornando metadados de tabela interna para assinaturas de notificação de consulta

O exemplo a seguir retorna os metadados de tabela interna para assinaturas de notificação 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