sp_repldone (Transact-SQL)
サーバーで最後にディストリビュートされたトランザクションを識別するレコードを更新します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。
注意 |
---|
sp_repldone を手動で実行した場合、配信されたトランザクションの順序や一貫性が無効になることがあります。 sp_replflush は、レプリケーションのサポートを熟知している専門家の指示に従って、レプリケーションのトラブルシューティングのためにだけ使用してください。 |
構文
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
注意 |
---|
このプロシージャは、レプリケーションが保留されているトランザクションがあるときにトランザクション ログの切り詰めを可能にする必要がある場合など、緊急時に使用できます。 |