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) 中,如果 ChronicleQuantumLimit 和 SubscriptionQuantumLimit 的值不为零(这表示对可以向后处理多久的量程没有限制),生成器可能会跳过相关的量程。
清空处理将从系统中删除数据。如果已删除了所需的数据,则不能重播这些数据的处理过程。
当 Notification Services 试图赶上先前的量程时,旧量程优先,首先进行处理。在对量程时钟进行初始化时,请注意对新量程的处理可能比计划晚。
权限
执行权限默认授予 NSGenerator 和 NSRunService 数据库角色、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)