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)

Справка и поддержка

Получение помощи по SQL Server 2005