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 会重新编译此存储过程。
此存储过程位于应用程序的架构中,该架构由应用程序定义文件 (ADF) 的 SchemaName 元素指定。如果没有提供架构名称,则默认架构为 dbo。
在运行 NSSetQuantumClock 之前,必须禁用生成器。
在应用程序定义文件 (ADF) 中,确保 ChronicleQuantumLimit 和 SubscriptionQuantumLimit 的值为零,这意味着对可以处理多久以前的量程没有限制。如果指定非零个限制,则生成器可能会跳过相关量程。
Vacuum 处理将从系统中删除数据。如果已删除了所需的数据,则不能重播这些数据的处理过程。
当 Notification Services 试图赶上先前的量程时,旧量程优先,首先进行处理。在对量程时钟进行初始化时,请注意对新量程的处理可能比计划晚。
权限
执行权限默认授予 NSGenerator 和 NSRunService 数据库角色、db_owner 固定数据库角色和 sysadmin 固定服务器角色的成员。
示例
以下示例显示如何重置量程时钟,以从量程 1 开始重播以前的量程。将向 NSQuantum1 表中输入新量程,该量程具有新量程号,但其 StartTime 值等于量程 1 的 StartTime 值。
应用程序使用默认的 SchemaName 设置,这会将所有应用程序对象置于 dbo 架构中。
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
例如,如果 NSQuantum1 表中当前存在四个量程,并且量程 1 的开始时间为 2002 年 5 月 23 日 的 17:23:37.640,则在运行此示例时,将输入开始时间为 2002 年 5 月 23 日 17:23:37.640 的量程 5。启用生成器时,生成器将从量程 1 开始重播所有量程。
请参阅
参考
Notification Services 存储过程 (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
其他资源
Notification Services 性能报告
SchemaName Element (ADF)