sp_replcmds (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
レプリケーション用にマークされたトランザクションのコマンドを返します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
重要
sp_replcmds手順は、レプリケーションに関する問題のトラブルシューティングを行うためだけに実行する必要があります。
構文
sp_replcmds [ @maxtrans = ] maxtrans
引数
[ @maxtrans = ] maxtrans
情報を返すトランザクションの数を指定します。 maxtrans は int で、既定値は 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 アプリケーション ログの両方に追加されます。
アクセス許可
sysadmin固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーのみがsp_replcmdsを実行できます。
参照
エラー メッセージ
sp_repldone (Transact-SQL)
sp_replflush (Transact-SQL)
sp_repltrans (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)