Notificaciones de consulta: sys.dm_qn_subscriptions
Se aplica a: SQL Server
Devuelve información acerca de las suscripciones de notificaciones de consultas activas en el servidor. Puede usar esta vista para comprobar si hay suscripciones activas en el servidor o en una base de datos especificada, o para comprobar una entidad de seguridad de servidor especificada.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
id | int | Id. de una suscripción. |
database_id | int | Id. de la base de datos en la que se ha ejecutado la notificación. Esta base de datos almacena información relacionada con esta suscripción. |
sid | varbinary(85) | Id. de seguridad de la entidad de seguridad del servidor que creó y es propietaria de esta suscripción. |
object_id | int | Id. de la tabla interna que almacena información acerca de los parámetros de suscripción. |
created | datetime | Fecha y hora en que se creó la suscripción. |
timeout | int | Tiempo de espera de la suscripción en segundos. La notificación se marcará para activarse después de transcurrido este tiempo. Nota: El tiempo de activación real puede ser mayor que el tiempo de espera especificado. Sin embargo, si se produce un cambio que invalida la suscripción después del tiempo de espera especificado, pero antes de que se desencadene la suscripción, SQL Server garantiza que la activación se produzca en el momento en que se realizó el cambio. |
status | int | Indica el estado de la suscripción. Vea la tabla bajo las notas para obtener la lista de códigos. |
Cardinalidades de relación
De | En | Activado | Tipo |
---|---|---|---|
sys.dm_qn_subscriptions | sys.databases | database_id | Varios a uno |
sys.dm_qn_subscriptions | sys.internal_tables | object_id | Varios a uno |
Comentarios
El código de estado 0 indica un estado indefinido.
Los siguientes códigos de estado indican que una suscripción se desencadenó debido a un cambio:
Código | Estado secundario | Información |
---|---|---|
65798 | La suscripción se desencadenó porque los datos cambiaron | La suscripción se activó al realizar la inserción |
65799 | La suscripción se desencadenó porque los datos cambiaron | Eliminar |
65800 | La suscripción se desencadenó porque los datos cambiaron | Actualizar |
65801 | La suscripción se desencadenó porque los datos cambiaron | Merge |
65802 | La suscripción se desencadenó porque los datos cambiaron | Truncar tabla |
66048 | La suscripción se desencadenó porque el tiempo de espera expiró | Modo de información indefinido |
66315 | La suscripción se desencadenó porque el objeto cambió | Se quitó el objeto o el usuario |
66316 | La suscripción se desencadenó porque el objeto cambió | Se modificó el objeto |
66565 | La suscripción se desencadenó porque la base de datos se desasoció o se quitó | Se reinició el servidor o la base de datos |
66571 | La suscripción se desencadenó porque la base de datos se desasoció o se quitó | Se quitó el objeto o el usuario |
66572 | La suscripción se desencadenó porque la base de datos se desasoció o se quitó | Se modificó el objeto |
67341 | La suscripción se desencadenó debido a la falta de recursos en el servidor | La suscripción se desencadenó debido a la falta de recursos en el servidor |
Los siguientes códigos de estado indican que una suscripción no pudo crearse:
Código | Estado secundario | Información |
---|---|---|
132609 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | La consulta es demasiado compleja |
132610 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | Instrucción no válida para la suscripción |
132611 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | Se establecieron opciones no válidas para la suscripción |
132612 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | Nivel de aislamiento no válido |
132622 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | Se utiliza internamente |
132623 | Se produjo un error en la creación de la suscripción porque no se admite la instrucción | Por encima del límite de plantilla por tabla |
Los siguientes códigos de estado se utilizan internamente y se clasifican como modos de iniciación y de comprobación de eliminación:
Código | Estado secundario | Información |
---|---|---|
198656 | Se utiliza internamente: modos de iniciación y de comprobación de eliminación | Modo de información indefinido |
198928 | La subscription se destruyó | La suscripción se desencadenó porque la base de datos se adjuntó |
198929 | La subscription se destruyó | La suscripción se desencadenó porque se quitó el usuario |
198930 | La subscription se destruyó | La suscripción se quitó debido a que se volvió a realizar la suscripción |
198931 | La subscription se destruyó | Se eliminó la suscripción |
199168 | La suscripción está activa | Modo de información indefinido |
199424 | La suscripción se inicializó pero no aún no está activa | Modo de información indefinido |
Permisos
Requiere el permiso VIEW SERVER STATE en el servidor.
Nota:
Si el usuario no tiene el permiso VIEW SERVER STATE, esta vista devuelve información acerca de suscripciones que son propiedad del usuario actual.
Permisos para SQL Server 2022 y versiones posteriores
Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.
Ejemplos
A Devolver las suscripciones de notificación de consultas activas del usuario actual
En el ejemplo siguiente se devuelven las suscripciones de notificación de consultas activas del usuario actual. Si el usuario tiene permisos VIEW SERVER STATE, se devuelven todas las suscripciones activas del servidor.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions;
GO
B. Devolver las suscripciones de notificación de consultas activas del usuario especificado
En el ejemplo siguiente se devuelven las suscripciones de notificación de consultas activas suscritas por el inicio de sesión Ruth0
.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions
WHERE sid = SUSER_SID('Ruth0');
GO
C. Devolver los metadatos de las tablas internas para las suscripciones de notificación de consultas
En el ejemplo siguiente se devuelven los metadatos de la tabla interna para las suscripciones de notificación de consultas.
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
Consulte también
Funciones y vistas de administración dinámica (Transact-SQL)
Vistas de administración dinámica relacionadas con las notificaciones de consulta (Transact-SQL)
KILL QUERY NOTIFICATION SUBSCRIPTION (Transact-SQL)