sys.dm_qn_subscriptions (Transact-SQL)
Возвращает сведения об активных подписках на уведомления о запросах на сервере. Можно использовать данное представление для проверки активных подписок на сервере или в указанной базе данных, или проверки указанного участника [системы безопасности] на уровне сервера.
Имя столбца |
Тип данных |
Описание |
---|---|---|
id |
int |
Идентификатор подписки. |
database_id |
int |
Идентификатор базы данных, для которой был выполнен запрос уведомлений. Эта база данных хранит информацию, относящуюся к данной подписке. |
sid |
varbinary(85) |
Идентификатор безопасности участника [системы безопасности] на уровне сервера, который создал подписку и которому она принадлежит. |
object_id |
int |
Идентификатор внутренней таблицы, в которой хранятся данные о параметрах подписки. |
created |
datetime |
Дата и время создания подписки. |
timeout |
int |
Время ожидания для подписки в секундах. Уведомление будет снабжено меткой, указывающей на то, что оно должно сработать по истечении этого времени.
Примечание
Срабатывание может произойти позже, чем истечет указанное время ожидания. Однако, если изменение, делающее подписку недействительной, произойдет после указанного времени ожидания, но до срабатывания подписки, SQL Server обеспечит срабатывание в то время, когда будет производиться это изменение.
|
status |
int |
Отображает состояние подписки. См. список кодов в таблице под примечаниями. |
Количество элементов связей
От |
К |
На |
Тип |
---|---|---|---|
sys.dm_qn_subscriptions |
sys.databases |
database_id |
многие к одному |
sys.dm_qn_subscriptions |
sys.internal_tables |
object_id |
многие к одному |
Замечания
Код состояния 0 обозначает неопределенное состояние.
Следующие коды состояний обозначают, что подписка сработала из-за изменения.
Код |
Дополнительное состояние |
Сведения |
---|---|---|
65798 |
Подписка сработала из-за изменения данных |
Подписка сработала из-за операции вставки |
65799 |
Подписка сработала из-за изменения данных |
Удаление |
65800 |
Подписка сработала из-за изменения данных |
Обновление |
65801 |
Подписка сработала из-за изменения данных |
Слияние |
65802 |
Подписка сработала из-за изменения данных |
Усечение таблицы |
66048 |
Подписка сработала из-за изменения времени ожидания |
Неопределенный режим INFO |
66315 |
Подписка сработала из-за изменения объекта |
Объект или пользователь удален |
66316 |
Подписка сработала из-за изменения объекта |
Объект изменен |
66565 |
Подписка сработала из-за отсоединения или удаления базы данных |
Перезапуск сервера или базы данных |
66571 |
Подписка сработала из-за отсоединения или удаления базы данных |
Объект или пользователь удален |
66572 |
Подписка сработала из-за отсоединения или удаления базы данных |
Объект изменен |
67341 |
Подписка запущена из-за отсутствия ресурсов на сервере |
Подписка запущена из-за отсутствия ресурсов на сервере |
Следующие коды состояний показывают, что подписку создать не удалось.
Код |
Дополнительное состояние |
Сведения |
---|---|---|
132609 |
Подписка не создана, так как инструкция не поддерживается |
Слишком сложный запрос |
132610 |
Подписка не создана, так как инструкция не поддерживается |
Недопустимая инструкция для подписки |
132611 |
Подписка не создана, так как инструкция не поддерживается |
Недопустимые параметры для подписки |
132612 |
Подписка не создана, так как инструкция не поддерживается |
Неверный уровень изоляции |
132622 |
Подписка не создана, так как инструкция не поддерживается |
Для внутреннего использования |
132623 |
Подписка не создана, так как инструкция не поддерживается |
Превышен предел шаблона на таблицу |
Следующие коды состояний используются внутри системы и классифицируются как режимы check kill и init.
Код |
Дополнительное состояние |
Сведения |
---|---|---|
198656 |
Для внутреннего использования: режимы check kill и init |
Неопределенный режим INFO |
198928 |
Подписка уничтожена |
Подписка сработала из-за присоединения базы данных |
198929 |
Подписка уничтожена |
Подписка сработала из-за удаления пользователя |
198930 |
Подписка уничтожена |
Подписка удалена из-за новой подписки |
198931 |
Подписка уничтожена |
Подписка уничтожена |
199168 |
Подписка активна |
Неопределенный режим INFO |
199424 |
Подписка инициализирована, но пока неактивна |
Неопределенный режим INFO |
Разрешения
Требуется разрешение VIEW SERVER STATE на сервере.
Примечание |
---|
Если у пользователя нет разрешения VIEW SERVER STATE, это представление возвращает данные о принадлежащих текущему пользователю подписках. |
Примеры
A. Возвращение активных подписок на уведомления о запросах для текущего пользователя
Следующий пример возвращает активные подписки на уведомления о запросах текущего пользователя. Если пользователь имеет разрешения VIEW SERVER STATE, то возвращаются все активные подписки на сервере.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions;
GO
Б. Возвращение активных подписок на уведомления о запросах для указанного пользователя
Следующий пример возвращает активные подписки на уведомления о запросах для подписчика с именем входа Ruth0.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions
WHERE sid = SUSER_SID('Ruth0');
GO
В. Возвращение метаданных внутренней таблицы для подписок на уведомления о запросах
Следующий пример возвращает метаданные внутренней таблицы для подписок на уведомления о запросах.
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