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 会重新编译此存储过程。

此存储过程位于应用程序的架构中,该架构由应用程序定义文件 (ADF) 的 SchemaName 元素指定。如果没有提供架构名称,默认架构为 dbo

在运行 NSSetQuantumClockDate 之前,必须禁用生成器。

NSSetQuantumClockDate 初始化量程时钟,因此 @QuantumStartTime 的值将包括在生成器运行该过程后处理的第一个量程中。

若要查找量程开始时间,请使用 NSQuantumList 存储过程。结果集将以 UTC 格式显示每个量程的开始时间和结束时间。

在应用程序定义文件 (ADF) 中,如果 ChronicleQuantumLimitSubscriptionQuantumLimit 的值不为零(这表示对可以向后处理多久的量程没有限制),生成器可能会跳过相关的量程。

清空处理将从系统中删除数据。如果已删除了所需的数据,则不能重播这些数据的处理过程。

当 Notification Services 试图赶上先前的量程时,旧量程优先,首先进行处理。在对量程时钟进行初始化时,请注意对新量程的处理可能比计划晚。

权限

执行权限默认授予 NSGeneratorNSRunService 数据库角色、db_owner 固定数据库角色和 sysadmin 固定服务器角色的成员。

示例

以下示例显示如何重置量程时钟,以重播太平洋地区夏时制时间 2004 年 4 月 23 日上午 9:00 所发生的事件。等效的 UTC 时间是 17:00, NSQuantum1 表中的 EndTime 列显示前一个量程在 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 帮助