次の方法で共有


NSSetQuantumClockDate (Transact-SQL)

Microsoft SQL Server Notification Services アプリケーションのクォンタム クロックを、指定の時間にリセットします。このストアド プロシージャは、月曜日午前 9:00 など特定の時間にクロックをセットして、同じ時間間隔でアプリケーションを繰り返し実行しテストする場合などに便利です。

このストアド プロシージャの用途としては、次の 2 つのシナリオが考えられます。

  • アプリケーションをテストするときに使用。定期的なサブスクリプションを 1 つ追加した後、必要に応じてクォンタム クロックをリセットすることによって、そのサブスクリプションをテストできます。
  • システムの問題を診断するときに使用。クォンタム クロックをリセットすることによって、過去のシステムの動作を再現できます。インスタンスが実行中で有効になっている限り、イベント バッチや定期的なサブスクリプションなどすべての処理は、実際に実行されたときと完全に同じ状態で再現されます。

構文

NSSetQuantumClockDate 
    [ @QuantumStartTime = ] 'start_date_time'

引数

[ @QuantumStartTime = ] 'start_date_time'

クォンタム クロックの、前回の開始日時である datetime の値を UTC (協定世界時またはグリニッジ標準時) で指定します。ジェネレータでは過去の時間にさかのぼって新しいクォンタムが開始され、前回の処理が再現されます。これは過去の時間であるため、ジェネレータではクォンタムの処理が直ちに開始されます。

結果セット

なし

解説

Notification Services でインスタンスを作成すると、アプリケーション データベース内に NSSetQuantumClockDate ストアド プロシージャが作成されます。アプリケーションを更新すると、Notification Services ではストアド プロシージャが再コンパイルされます。

このストアド プロシージャは、アプリケーション定義ファイル (ADF) の要素 SchemaName で指定される、アプリケーション スキーマ内に格納されます。スキーマ名が指定されない場合、既定のスキーマ dbo が使用されます。

NSSetQuantumClockDate を実行する前には、ジェネレータを無効にしておく必要があります。

NSSetQuantumClockDate を実行するとクォンタム クロックが初期化されるので、@QuantumStartTime の値は、このプロシージャの実行後、ジェネレータによって最初に処理されるクォンタムに適用されます。

クォンタムの開始時間を調べるには、NSQuantumList ストアド プロシージャを使用します。この結果セットには、各クォンタムの開始時間と終了時間の値が UTC で格納されます。

アプリケーション定義ファイル (ADF) で、ChronicleQuantumLimitSubscriptionQuantumLimit に 0 以外の値が指定されている場合は過去のクォンタム処理が制限を受けることを示し、ジェネレータで目的のクォンタムがスキップされる可能性があります。

Vacuumer 処理を実行すると、データがシステムからを削除されます。目的のデータが削除されている場合、そのデータの処理は再現できません。

Notification Services で過去のクォンタムが再現されている場合は、より古いクォンタムが優先され、先に処理されます。したがって、クォンタム クロックをリセットするときには、新しいクォンタムが予定の時刻より遅れて処理される可能性があることに注意してください。

権限

実行権限は、既定では NSGenerator データベース ロール、NSRunService データベース ロール、db_owner 固定データベース ロール、および sysadmin 固定サーバー ロールのメンバに与えられています。

戻り値

0 (成功) または 1 (失敗)

次の例では、クォンタム クロックをリセットして、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 要素 (ADF)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手