NSPrepareRuleFiring (Transact-SQL)
Подготавливает базу данных приложения к обработке правила. Эта подготовка гарантирует, что такт запланирован, представления событий и запланированные представления подписок материализованы для такта, и обработка правил запланирована для такта на основе набора доступных событий и подписок.
После завершения этой хранимой процедуры база данных приложения находится в состоянии, эквивалентном существовавшему до обработки правила при обычной работе генератора.
Синтаксис
[ application_schema_name . ] NSPrepareRuleFiring
[ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
[, [ @DisableQuantumLimits = ] quantum_limits_flag ]
Аргументы
- [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag
Указывает, возвращает ли подготовленная процедура обработки правил список хроник возможных событий, на которые повлияла или которые использовала обработка правил. Значения, отличные от нуля, приводят к возвращению процедурой результирующего набора, содержащего хроники событий, ассоциированные с подготовленной обработкой правил. Аргумент chronical_usage_flag имеет тип tinyint и значение по умолчанию 1.
- [ @DisableQuantumLimits = ] quantum_limits_flag
Указывает, используются ли планирования нового такта значения ChronicleQuantumLimit и SubscriptionQuantumLimit из настроек выполнения приложения в файле определения приложения (ADF). Значение, отличное от нуля, указывает, что хранимая процедура не должна использовать эти настройки для пропуска одного или более тактовых периодов. Аргумент quantum_limits_flag имеет тип tinyint и значение по умолчанию 1.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Процедура NSPrepareRuleFiring производит один или два результирующих набора. Первый результирующий набор содержит сведения о правиле.
Имя столбца | Тип данных | Описание |
---|---|---|
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) |
Имя хроники событий, ассоциированной с подготовленной операцией обработки правила. |
Замечания
При создании экземпляра служб Notification Services создают хранимую процедуру NSPrepareRuleFiring в прикладной базе данных. При обновлении приложения службы Notification Services повторно компилируют хранимую процедуру.
Данная хранимая процедура находится в схеме приложения, определенной элементом SchemaName файла определения приложения (ADF). Если имя схемы не задано, схемой по умолчанию является dbo.
Эта хранимая процедура может быть выполнена только в том случае, если генератор находится в отключенном состоянии или в состоянии ожидания отключения.
Эта хранимая процедура может быть вызвана повторно без вызова процедуры NSExecuteRuleFiring, но состояние в базе данных приложения не будет изменено. Единственный путь изменить состояние базы данных приложения вслед за подготовленной обработкой правила — это использовать хранимую процедуру NSExecuteRuleFiring или запустить экземпляр.
Разрешения
Разрешения на запуск по умолчанию имеют члены ролей NSGenerator и NSRunService базы данных, фиксированной роли базы данных db_owner и фиксированной серверной роли sysadmin.
Примеры
А. Использование хроники отчета и тактовых ограничений
В следующем примере показан процесс подготовки базы данных для выполнения запланированных правил из такта 1 с отчетом о возможном использовании хроник событий. Обработка правила не игнорирует тактовые ограничения, указанные в ADF.
Приложение использует настройки по умолчанию SchemaName, которые помещают все объекты приложения в схему dbo.
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
EXEC dbo.NSPrepareRuleFiring
@ReportPossibleEventChronicleUsage = 1,
@DisableQuantumLimits = 0;
Б. Использование установок по умолчанию
В следующем примере показан процесс подготовки базы данных для выполнения запланированных правил из такта 100 с использованием значений по умолчанию хранимой процедуры. Хранимая процедура не информирует об использовании хроник событий и игнорирует тактовые ограничения.
В этом примере хранимая процедура (как и все остальные объекты приложения) находится в схеме Stock, как указано в элементе SchemaName файла ADF.
EXEC dbo.NSSetQuantumClock
@QuantumId = 100;
EXEC Stock.NSPrepareRuleFiring;
См. также
Справочник
NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Хранимые процедуры служб Notification Services (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)
Другие ресурсы
Отчеты о производительности служб Notification Services
SchemaName Element (ADF)