NSSetQuantumClock (Transact-SQL)
Сбрасывает тактовый генератор приложения служб Microsoft SQL Server Notification Services на время начала предыдущего такта. Новый такт создается с тем же временем начала в формате UTC, что и такт, заданный в хранимой процедуре. Это делает возможным воспроизведение прошедшего такта.
Следующие два сценария показывают, как можно использовать данную хранимую процедуру:
- При тестировании приложения можно добавить одну подписку по расписанию, а затем проверить эту подписку, при необходимости сбросив тактовый генератор.
- При диагностике системных проблем можно сбросить тактовый генератор и воспроизвести поведение системы в прошлом. Любая обработка, например пакеты событий и подписки по расписанию, воспроизводится точно так же, как и в реальном времени, пока служба NS$instance_name запущена и экземпляр включен.
Синтаксис
[ schema_name . ] NSSetQuantumClock
[ @QuantumId = ] quantum_ID
Аргументы
- [ @QuantumId =] quantum_ID
Уникальный идентификатор прошедшего такта. Аргумент quantum_id имеет тип int и не имеет значения по умолчанию.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Нет
Замечания
Службы Notification Services при создании экземпляра создают в базе данных приложения хранимую процедуру NSSetQuantumClock. При обновлении приложения службы Notification Services перекомпилирует хранимую процедуру.
Эта хранимая процедура находится в схеме приложения, заданной элементом SchemaName файла определения приложения (ADF). Если имя схемы не задано, применяется схема по умолчанию dbo.
Перед запуском процедуры NSSetQuantumClock необходимо отключить генератор.
Удостоверьтесь, что в файле определения приложения (ADF) значения ChronicleQuantumLimit и SubscriptionQuantumLimit равны нулю, что означает отсутствие ограничений на обратную обработку тактов. Если указаны ненулевые пределы, генератор может пропустить нужный такт.
В процессе очистки данные удаляются из системы. Если нужные данные удалены, воспроизведение обработки этих данных невозможно.
Когда службы Notification Services пытаются наверстать предыдущий такт, старые такты имеют преимущество и обрабатываются первыми. При инициализации тактового генератора следует иметь в виду, что новые такты могут обрабатываться позже, чем назначено в расписании.
Разрешения
По умолчанию разрешения на выполнение назначены членам ролей баз данных NSGenerator и NSRunService, фиксированной роли баз данных db_owner и фиксированной серверной роли sysadmin.
Примеры
В следующем примере показано, как сбросить тактовый генератор для воспроизведения предыдущих тактов, начиная с номера 1. Новый такт вводится в таблицу NSQuantum1 под новым номером, но со значением StartTime, равным значению StartTime для такта 1.
Приложением используются настройки схемы SchemaName по умолчанию, при которых все объекты приложения помещаются в схему dbo.
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
Например, если в таблице NSQuantum1 на данный момент имеются четыре такта, а начало такта 1 — 17:23:37.640 23.05.2002, при запуске данного примера вводится такт 5 со временем начала 17:23:37.640 23.05.2002. При включении генератор воспроизводит все такты, начиная с такта 1.
См. также
Справочник
Хранимые процедуры служб Notification Services (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Другие ресурсы
Отчеты о производительности служб Notification Services
SchemaName Element (ADF)