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) 中,确保 ChronicleQuantumLimitSubscriptionQuantumLimit 的值为零,这意味着对可以处理多久以前的量程没有限制。如果指定非零个限制,则生成器可能会跳过相关量程。

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

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

权限

执行权限默认授予 NSGeneratorNSRunService 数据库角色、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)

帮助和信息

获取 SQL Server 2005 帮助