sp_replcmds (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
レプリケーション用にマークされたトランザクションのコマンドを返します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
重要
sp_replcmds
手順は、レプリケーションに関する問題のトラブルシューティングを行うためだけに実行する必要があります。
構文
sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]
引数
[ @maxtrans = ] maxtrans
情報を返すトランザクションの数。 @maxtrans は int で、既定値は 1
で、ディストリビューションを待機する次のトランザクションを指定します。
結果セット
列名 | データ型 | 説明 |
---|---|---|
article id |
int | 記事の ID。 |
partial_command |
bit | このコマンドが部分コマンドかどうかを示します。 |
command |
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
実行される最初のクライアントをログ リーダーとして扱います。
この手順では、所有者修飾テーブルのコマンドを生成したり、テーブル名を修飾したりできません (既定値)。 修飾テーブル名を追加すると、あるデータベース内の特定のユーザーが所有するテーブルから、別のデータベース内の同じユーザーが所有するテーブルにデータをレプリケーションできます。
レプリケーション元データベースのテーブル名は、所有者名により限定されるので、レプリケーション先データベースのテーブルの所有者も同じ所有者名である必要があります。
同じデータベース内で sp_replcmds
を実行しようとしたクライアントは、最初のクライアントが切断されるまでエラー 18752 を受け取ります。 最初のクライアントが切断されると、別のクライアントが sp_replcmds
実行され、新しいログ リーダーになります。
テキスト ポインターが同じトランザクションで取得されていないために、 sp_replcmds
がテキスト コマンドをレプリケートできない場合、警告メッセージ番号 18759 が SQL Server エラー ログと Microsoft Windows アプリケーション ログの両方に追加されます。
アクセス許可
sysadmin固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーのみが、sp_replcmds
を実行できます。