sp_repldone (Transact-SQL)
サーバーで最後にディストリビュートされたトランザクションを識別するレコードを更新します。このストアド プロシージャは、パブリッシャ側でパブリケーション データベースについて実行されます。
注意 |
---|
この sp_repldone を手動で実行した場合、配信されたトランザクションの順序や一貫性が無効になることがあります。sp_repldone は、レプリケーションのサポートを熟知している専門家の指示に従って、レプリケーションのトラブルシューティングのためにだけ使用してください。 |
構文
sp_repldone [ @xactid= ] xactid
, [ @xact_seqno= ] xact_seqno
[ , [ @numtrans= ] numtrans ]
[ , [ @time= ] time
[ , [ @reset= ] reset ]
引数
[ @xactid=] xactid
サーバーで最後にディストリビュートされたトランザクションにおける最初のレコードのログ シーケンス番号 (LSN) を指定します。xactid のデータ型は binary(10) で、既定値はありません。[ @xact_seqno=] xact_seqno
サーバーで最後にディストリビュートされたトランザクションにおける最後のレコードの LSN を指定します。xact_seqno のデータ型は binary(10) で、既定値はありません。[ @numtrans=] numtrans
ディストリビュートされたトランザクションの数を指定します。numtrans のデータ型は int で、既定値はありません。[ @time=] time
最後のトランザクション バッチをディストリビュートするのに必要な時間をミリ秒単位の数で指定できます。time のデータ型は int で、既定値はありません。[ @reset=] reset
リセットの状態を指定します。reset のデータ型は int で、既定値はありません。1 を設定すると、ログ中のレプリケートされたすべてのトランザクションにディストリビュート済みのマークが付きます。0 を設定すると、トランザクション ログはレプリケートされた最初のトランザクションにリセットされ、どのトランザクションにもディストリビュート済みのマークは付きません。reset は、xactid と xact_seqno の両方が NULL の場合にだけ有効です。
戻り値
0 (成功) または 1 (失敗)
説明
sp_repldone は、トランザクション レプリケーションで使用します。
sp_repldone は、ログ読み取りプロセスで、どのトランザクションがディストリビュート済みかを把握する場合に使用します。
sp_repldone を使用すると、トランザクションがレプリケートされている、つまりディストリビュータに送られていることをサーバーに手動で知らせることができます。また、レプリケーション待ちの次のトランザクションであることを示すマークが付いたトランザクションを変更できます。レプリケートされたトランザクションの一覧内では、前後に移動できます。このトランザクションおよびそれ以前のトランザクションはすべてディストリビュートされたことを示すマークが付きます。
必須パラメータの xactid と xact_seqno は、sp_repltrans または sp_replcmds を使用して取得できます。
権限
sp_repldone を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバです。
例
xactid が NULL、xact_seqno が NULL、および reset が 1 の場合、ログ内のレプリケートされたすべてのトランザクションには、ディストリビュート済みのマークが付きます。たとえば次のように、トランザクション ログ内のレプリケートされたトランザクションで無効になったものがあり、ログを切り詰めたい場合に便利です。
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
注意 |
---|
このプロシージャは、レプリケーションが保留されているトランザクションがあるときにトランザクション ログの切り詰めを可能にする必要がある場合など、緊急時に使用できます。このプロシージャを使用すると、データベースがパブリッシュを解除して再パブリッシュされるまで、Microsoft SQL Server 2000 はデータベースをレプリケートできません。 |