次の方法で共有


sp_repldone (Transact-SQL)

適用対象: SQL Server Azure 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)。 @xactid は既定で binary(10)です。

[ @xact_seqno = ] xact_seqno

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

[ @numtrans = ] numtrans

分散されたトランザクションの数。 @numtransint で、既定値はありません。

[ @time = ] time

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

[ @reset = ] reset

リセットの状態。 @resetint で、既定値はありません。

  • 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を実行できます。

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

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