NSSetQuantumClockDate (Transact-SQL)

Сбрасывает тактовый генератор приложения служб Microsoft SQL Server Notification Services на определенное время, что может быть полезным для непрерывной работы приложения с одинаковыми интервалами времени для целей проверки. Выполняется установкой точного времени, например 9:00 утра в понедельник.

Следующие два сценария показывают, как можно использовать эту хранимую процедуру.

  • При тестировании приложения можно добавить одну подписку по расписанию, а затем, при необходимости, проверить ее, переустановив тактовый генератор.
  • При диагностике системы можно переустановить тактовый генератор на нужное время и воспроизвести прошедшее поведение системы. Вся обработка, например обработка пакетов событий и подписок по времени, повторно выполняется точно так же, как и в реальном времени, если экземпляр выполняется и включен.

Синтаксис

NSSetQuantumClockDate 
    [ @QuantumStartTime = ] 'start_date_time'

Аргументы

  • [ @QuantumStartTime = ] 'start_date_time'
    Предыдущее начальное значение типа datetime для тактового генератора, в формате UTC. Это заставляет генератор запустить новый такт на прошедшее время и тем самым повторить предыдущую обработку. Так как производится установка на прошедший момент времени, генератор формирует такт как можно быстрее.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Нет

Замечания

Службы Notification Services создают хранимую процедуру NSSetQuantumClockDate в базе данных приложения при создании экземпляра. При обновлении приложения службы Notification Services перекомпилируют хранимую процедуру.

Эта хранимая процедура находится в схеме приложения, которая указывается элементом SchemaName файла определения приложения (ADF). Если имя схемы не указывается, схемой по умолчанию является dbo.

Перед выполнением NSSetQuantumClockDate сначала необходимо отключить генератор.

Процедура NSSetQuantumClockDate инициализирует тактовый генератор таким образом, что в первый обрабатываемый генератором такт после выполнения процедуры включается значение @QuantumStartTime.

Чтобы определить начальное время такта, используйте хранимую процедуру NSQuantumList. В результирующем наборе представляются значения, в UTC, моментов начала и конца каждого такта.

Если в файле определения приложения (ADF) значения ChronicleQuantumLimit и SubscriptionQuantumLimit не равны нулю (это означает, что нет ограничения на величину сдвига назад такта обработки), генератор может пропустить нужный такт.

В процессе очистки данные удаляются из системы. Если нужные данные удалены, воспроизведение обработки этих данных невозможно.

Когда службы Notification Services пытаются наверстать предыдущий такт, старый такт имеет преимущество и обрабатывается первым. При инициализации тактового генератора следует иметь в виду, что новый такт может обрабатываться позже, чем запланировано в расписании.

Разрешения

Разрешения на выполнение по умолчанию предоставляются членам ролей баз данных NSGenerator и NSRunService, фиксированной роли базы данных db_owner, а также фиксированной серверной роли sysadmin.

Примеры

В следующем примере демонстрируется, как переустановить тактовый генератор для воспроизведения действий, происходивших 23 апреля 2004 г. в 9:00 утра по тихоокеанскому времени. Это соответствует 17:00 времени UTC, и в столбце EndTime таблицы NSQuantum1 указывается, что предыдущий такт закончился в 16:59.

Приложение использует настройки по умолчанию SchemaName, которые помещают все объекты приложения в схему dbo.

EXEC dbo.NSSetQuantumClockDate 
    @QuantumStartTime = '2004-04-23 16:59';

См. также

Справочник

Хранимые процедуры служб Notification Services (Transact-SQL)
NSQuantumList (Transact-SQL)

Другие ресурсы

Отчеты о производительности служб Notification Services
SchemaName Element (ADF)

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

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