sp_repldone (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
サーバーで最後にディストリビュートされたトランザクションを識別するレコードを更新します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
注意事項
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
を使用して取得できます。
この手順は、トランザクションが保留中のレプリケーションが存在する場合にトランザクション ログを切り捨てることができるように、緊急時に使用できます。 詳細については、「例」のセクションを参照してください。
アクセス許可
sysadmin固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーは、sp_repldone
を実行できます。
例
@xactidがNULL
され、@xact_seqnoがNULL
され、@resetが1
されると、ログ内のすべてのレプリケートされたトランザクションが分散としてマークされます。 これは、有効ではなくなったレプリケートされたトランザクションがトランザクション ログに存在し、ログを切り捨てる場合に便利です。次に例を示します。
EXEC sp_repldone
@xactid = NULL,
@xact_seqno = NULL,
@numtrans = 0,
@time = 0,
@reset = 1;