Поделиться через


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)

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

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