次の方法で共有


sp_replcmds (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

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

重要

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

Transact-SQL 構文表記規則

構文

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

引数

[ @maxtrans = ] maxtrans

情報を返すトランザクションの数。 @maxtransint で、既定値は 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を実行できます。