sp_replcmds (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

レプリケーション用にマークされたトランザクションのコマンドを返します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

重要

sp_replcmds手順は、レプリケーションに関する問題のトラブルシューティングを行うためだけに実行する必要があります。

Transact-SQL 構文表記規則

構文

  
sp_replcmds [ @maxtrans = ] maxtrans  

引数

[ @maxtrans = ] maxtrans 情報を返すトランザクションの数を指定します。 maxtransint で、既定値は 1 で、ディストリビューションを待機している次のトランザクションを指定します。

結果セット

列名 データ型 説明
アーティクル ID int 記事の ID。
partial_command bit これが部分的なコマンドかどうかを示します。
コマンド varbinary(1024) コマンド値。
xactid binary(10) トランザクション ID。
xact_seqno varbinary(16) トランザクション シーケンス番号。
publication_id int パブリケーションの ID。
command_id int MSrepl_commandsのコマンドの ID。
command_type int コマンドの種類。
originator_srvname sysname トランザクションが発生したサーバー。
originator_db sysname トランザクションが発生したデータベース。
pkHash int 内部のみで使用します。
originator_publication_id int トランザクションが発生したパブリケーションの ID。
originator_db_version int トランザクションが発生したデータベースのバージョン。
originator_lsn varbinary(16) 送信元パブリケーションのコマンドのログ シーケンス番号 (LSN) を識別します。

解説

sp_replcmdsは、トランザクション レプリケーションのログ リーダー プロセスによって使用されます。

レプリケーションは、特定のデータベース内でsp_replcmds実行される最初のクライアントをログ リーダーとして扱います。

この手順では、所有者修飾テーブルのコマンドを生成したり、テーブル名を修飾したりできません (既定値)。 修飾テーブル名を追加すると、あるデータベース内の特定のユーザーが所有するテーブルから、別のデータベース内の同じユーザーが所有するテーブルにデータをレプリケーションできます。

Note

レプリケーション元データベースのテーブル名は、所有者名により限定されるので、レプリケーション先データベースのテーブルの所有者も同じ所有者名である必要があります。

同じデータベース内でsp_replcmdsを実行しようとしたクライアントは、最初のクライアントが切断されるまでエラー 18752 を受け取ります。 最初のクライアントが切断されると、別のクライアントがsp_replcmds実行され、新しいログ リーダーになります。

テキスト ポインターが同じトランザクションで取得されていないため、sp_replcmdsがテキスト コマンドをレプリケートできない場合は、警告メッセージ番号 18759 が Microsoft SQL Server エラー ログと Microsoft Windows アプリケーション ログの両方に追加されます。

アクセス許可

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

参照

エラー メッセージ
sp_repldone (Transact-SQL)
sp_replflush (Transact-SQL)
sp_repltrans (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)