sp_repldone (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

サーバーで最後にディストリビュートされたトランザクションを識別するレコードを更新します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

注意事項

sp_repldoneを手動で実行すると、配信されたトランザクションの順序と整合性を無効にすることができます。 sp_repldoneは、経験豊富なレプリケーション サポート担当者の指示に基づいたレプリケーションのトラブルシューティングにのみ使用する必要があります。

Transact-SQL 構文表記規則

構文

sp_repldone [ @xactid= ] xactid   
        , [ @xact_seqno= ] xact_seqno   
    [ , [ @numtrans= ] numtrans ]   
    [ , [ @time= ] time   
    [ , [ @reset= ] reset ]  

引数

[ @xactid = ] xactid サーバーの最後の分散トランザクションの最初のレコードのログ シーケンス番号 (LSN) です。 xactidbinary(10)で、既定値はありません。

[ @xact_seqno = ] xact_seqno サーバーの最後の分散トランザクションの最後のレコードの LSN です。 xact_seqnoは binary(10) で、既定値はありません。

[ @numtrans = ] numtrans 分散トランザクションの数を指定します。 numtransint で、既定値はありません。

[ @time = ] time 指定した場合、トランザクションの最後のバッチを分散するために必要なミリ秒数です。 timeint で、既定値はありません。

[ @reset = ] reset リセットの状態を指定します。 resetint で、既定値はありません。 1 の場合、ログ内のすべてのレプリケートされたトランザクションが分散としてマークされます。 0 の場合、トランザクション ログは最初にレプリケートされたトランザクションにリセットされ、レプリケートされたトランザクションは分散としてマークされません。 reset は、xactidxact_seqno の両方が NULL の場合にのみ有効です。

リターン コードの値

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

解説

sp_repldoneはトランザクション レプリケーションで使用されます。

sp_repldoneは、配布されたトランザクションを追跡するためにログ リーダー プロセスによって使用されます。

sp_repldoneを使用すると、トランザクションがレプリケートされたことをサーバーに手動で通知できます (ディストリビューターに送信されます)。 また、レプリケーションを待機している次のトランザクションとしてマークされたトランザクションを変更することもできます。 レプリケートされたトランザクションの一覧では、前後に移動できます。 このトランザクションおよびそれ以前のトランザクションはすべてディストリビュートされたことを示すマークが付きます。

必要なパラメーター xactidxact_seqnoは、sp_repltransまたはsp_replcmdsを使用して取得できます。

アクセス許可

sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerのメンバーは、sp_repldone実行できます。

xactid が NULL、xact_seqnoが NULL、リセット1 の場合、ログ内のすべてのレプリケートされたトランザクションが分散としてマークされます。 これは、有効ではなくなったレプリケートされたトランザクションがトランザクション ログに存在し、ログを切り捨てる場合に便利です。次に例を示します。

EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1  

注意事項

この手順は、トランザクションが保留中のレプリケーションが存在する場合にトランザクション ログを切り捨てることができるように、緊急時に使用できます。

参照

sp_replcmds (Transact-SQL)
sp_replflush (Transact-SQL)
sp_repltrans (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)