NSExecuteRuleFiring (Transact-SQL)
Производит подготовку и запуск правил служб Microsoft SQL Server Notification Services. Это позволяет вручную запускать генератор, выполняющий правила для формирования уведомлений, и отслеживать его состояние.
Независимо от того, успешно ли обработано правило, данная хранимая процедура подготавливает обработку следующего правила, материализуя соответствующие представления события и плановой подписки и давая возможность отладить обработку правил.
Синтаксис
[ application_schema_name . ] NSExecuteRuleFiring
[ [ @ReportExecutionResults = ] report_flag ]
[, [ @DisableQuantumLimits = ] limit_flag ]
Аргументы
- [@ReportExecutionResults = ] report_flag
Указывает, выдает ли хранимая процедура сведения об обработке правила. Ненулевое значение указывает, что сведения об обработке правила будут возвращены. Аргумент report_flag имеет тип tinyint и значение по умолчанию 1.
- [@DisableQuantumLimits = ] limit_flag
Указывает, следует ли хранимой процедуре соблюдать определенный приложением предел тактовой задержки хроники событий и предел тактовой задержки подписки. Ненулевое значение приводит к тому, что тактовые задержки при планировании игнорируются. Аргумент limit_flag имеет тип tinyint и значение по умолчанию 1.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
NSExecuteRuleFiring возвращает до трех результирующих наборов. Первый содержит сведения обо всех запланированных правилах.
Имя столбца | Тип данных | Описание |
---|---|---|
QuantumId |
int |
Идентификационный номер такта для обработки правила. |
QuantumStartTime |
datetime |
Дата и время в формате UTC начала такта, содержащего правило. |
QuantumEndTime |
datetime |
Дата и время в формате UTC окончания такта, содержащего правило. |
RuleName |
nvarchar(255) |
Имя, назначенное правилу в файле определения приложения (ADF-файл). Если ни одно из правил не готово к выполнению, имеет значение NULL. |
EventClassName |
nvarchar(255) |
Для правил, обрабатываемых по событиям, содержит имя соответствующего класса события. Если это правило плановой подписки либо нет правил, готовых к выполнению, то имеет значение NULL. |
SubscriptionClassName |
nvarchar(255) |
Имя соответствующего класса подписки. Если это правило хроники событий либо нет правил, готовых к выполнению, то имеет значение NULL. |
RuleFiringId |
int |
Идентификационный номер, определяющий подготовленную обработку правила. Столбец принимает значение NULL, если нет правил, готовых к обработке. |
EventBatchId |
bigint |
Идентификационный номер, определяющий соответствующий пакет события. Если правило не является правилом хроники событий или правилом подписки на события, приложение не обрабатывает события по очереди либо нет правил, готовых к выполнению, то значение равно NULL. |
StartScanTime |
datetime |
Дата и время начала в формате UTC для подготовленного правила плановой подписки. Оно должно быть в диапазоне от QuantumStartTime до QuantumEndTime. Если правило не является правилом хроники событий или правилом подписки на события, приложение не обрабатывает события по очереди либо нет правил, готовых к выполнению, то значение равно NULL. |
EndScanTime |
datetime |
Дата и время окончания в формате UTC для подготовленного правила плановой подписки. Оно должно быть в диапазоне между QuantumStartTime и QuantumEndTime. Если правило не является правилом хроники событий или правилом подписки на события, приложение не обрабатывает события по очереди либо нет правил, готовых к выполнению, то значение равно NULL. |
RemainingQuantumRuleFirings |
int |
Количество оставшихся правил, которые нужно обработать для завершения такта. Это число включает и все подготовленные к обработке правила, так как они еще не выполнены. Если неподготовленных правил нет, значение равно 0. |
Второй результирующий набор выдается только в том случае, если возможно какое-либо воздействие на хроники. Он отсортирован по PossibleChronicleReferenceByRule.
Имя столбца | Тип данных | Описание |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
Имя хроники событий, связанной с подготовленным к обработке правилом. |
Третий результирующий набор выдается только в том случае, если хранимая процедура создавала уведомления. Он содержит сведения об уведомлениях и сгруппирован по значению NotificationClassName.
Имя столбца | Тип данных | Описание |
---|---|---|
NotificationClassName |
nvarchar(255) |
Имя класса, формировавшего уведомления. |
NotificationBatchId |
bigint |
Идентификационный номер пакета, в котором содержатся сформированные уведомления. |
NotificationCount |
bigint |
Число уведомлений, сформированных при обработке правила. |
StartGenerationTime |
datetime |
Дата и время начала в формате UTC для данного пакета уведомлений. |
EndGenerationTime |
datetime |
Дата и время окончания в формате UTC для данного пакета уведомлений. |
Замечания
Службы Notification Services создают хранимую процедуру NSExecuteRuleFiring в базе данных приложения при создании экземпляра. При обновлении приложения, службы Notification Services перекомпилируют ее.
Эта хранимая процедура находится в схеме приложения, на которую указывает элемент SchemaName в файле определения приложения (ADF-файл). Если имя схемы не указано, схемой по умолчанию является dbo.
Для запуска хранимой процедуры NSExecuteRuleFiring генератор должен быть отключен. Поскольку она работает с генератором в ручном режиме, параллельное выполнение генератора может препятствовать нормальному выполнению хранимой процедуры.
Хранимая процедура NSPrepareRuleFiring предназначена для тех случаев, когда необходимо только подготовить базу данных для обработки правила, а не фактически его обработать.
Разрешения
Разрешение на выполнение по умолчанию имеют члены ролей базы данных NSGenerator и NSRunService фиксированной роли базы данных db_owner и фиксированной серверной роли sysadmin.
Примеры
А. Вывод результатов, игнорируя предел тактовой задержки
Следующий пример демонстрирует, как установить идентификатор такта в 1, а затем обработать правило для этого такта. Хранимая процедура выдает результаты, игнорируя предел тактовой задержки, определенный в ADF-файле.
Приложение пользуется настройками по умолчанию SchemaName, которые помещают все объекты приложения в схему dbo.
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
EXEC dbo.NSExecuteRuleFiring
@ReportExecutionResults = 1,
@DisableQuantumLimits = 0;
Если разрешить выполнение приложения после запуска данного примера, тактовый генератор продолжит работу с идентификатора такта 1, поскольку самостоятельно после включения к последнему такту генератор не сбрасывается.
Б. Использование установок по умолчанию
Следующий пример показывает, как установить идентификатор такта в 100, а затем обработать правило для этого такта при использовании настроек по умолчанию. Хранимая процедура не выдает результатов, игнорируя пределы тактовой задержки.
В этом примере хранимая процедура (как и все остальные объекты приложения) находится в схеме Stock, на которую указывает элемент SchemaName ADF-файла.
EXEC dbo.NSSetQuantumClock
@QuantumId = 100;
EXEC Stock.NSExecuteRuleFiring;
Если разрешить выполнение приложения после запуска данного примера, тактовый генератор продолжает с идентификатора такта 100, поскольку самостоятельно после включения к последнему такту не сбрасывается.
См. также
Справочник
NSPrepareRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Хранимые процедуры служб Notification Services (Transact-SQL)
NSPrepareRuleFiring (Transact-SQL)
Другие ресурсы
Отчеты о производительности служб Notification Services
SchemaName Element (ADF)