sp_replcmds (Transact-SQL)

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

重要な注意事項重要

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

権限

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