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