sp_replcmds (Transact-SQL)
レプリケーションするようマークが付けられたトランザクションのコマンドを返します。このストアド プロシージャは、パブリッシャ側でパブリケーション データベースについて実行されます。
![]() |
---|
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 がテキスト ポインタを同じトランザクション内から取得できないために、テキスト コマンドをレプリケートできなかった場合は、Microsoft SQL Server エラー ログと Microsoft Windows アプリケーション ログの両方に警告メッセージ番号 18759 が追加されます。
権限
sp_replcmds を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバだけです。