sp_replmonitorsubscriptionpendingcmds (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
トランザクション パブリケーションのサブスクリプションに対する保留中のコマンドの数と、トランザクション パブリケーションの処理にかかる時間の大まかな見積もりに関する情報を返します。 このストアド プロシージャは、返されたサブスクリプションごとに 1 行を返します。 レプリケーションの監視に使用されるこのストアド プロシージャは、ディストリビューション データベースのディストリビューターで実行されます。
構文
sp_replmonitorsubscriptionpendingcmds [ @publisher = ] 'publisher'
, [ @publisher_db = ] 'publisher_db'
, [ @publication = ] 'publication'
, [ @subscriber = ] 'subscriber'
, [ @subscriber_db = ] 'subscriber_db'
, [ @subscription_type = ] subscription_type
, [ @subdb_version = ] subdb_version
引数
[ @publisher = ] 'publisher'
パブリッシャーの名前。 publisher は sysname で、既定値はありません。
[ @publisher_db = ] 'publisher_db'
パブリッシュされたデータベースの名前です。 publisher_db は sysname で、既定値はありません。
[ @publication = ] 'publication'
出版物の名前。 publication は sysname で、既定値はありません。
[ @subscriber = ] 'subscriber'
サブスクライバーの名前。 subscriber は sysname で、既定値はありません。
[ @subscriber_db = ] 'subscriber_db'
サブスクリプション データベースの名前。 subscriber_db は sysname で、既定値はありません。
[ @subscription_type = ] subscription_type
サブスクリプションの種類。 subscription_type は int で、既定値はなく、これらの値のいずれかを指定できます。
Value | 説明 |
---|---|
0 |
プッシュ サブスクリプション |
1 |
プル サブスクリプション |
[ @subdb_version = ] subdb_version
サブスクリプション データベースの dbversion
。 subdb_version は int 型の省略可能なパラメーターで、既定値は 0 です。
結果セット
列名 | データ型 | 説明 |
---|---|---|
pendingcmdcount |
int | サブスクリプションで保留中のコマンドの数。 |
estimatedprocesstime |
int | 保留中のすべてのコマンドをサブスクライバーに配信するために必要な秒数の見積もり。 |
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_replmonitorsubscriptionpendingcmds
はトランザクション レプリケーションで使用されます。
SQL Server 2019 (15.x) CU17 より前では、 sp_replmonitorsubscriptionpendingcmds
はピアツーピア レプリケーションではサポートされておらず、ピアツーピア レプリケーション トポロジのクエリに使用した場合に、保留中のコマンドの数が正しく返されませんでした。 SQL Server 2019 (15.x) CU 17 では、ピア ツー ピア パブリケーションとの互換性を sp_replmonitorsubscriptionpendingcmds
するためにサポートが追加されました。
ただし、SQL Server 2019 (15.x) CU17 以降の場合でも、テーブルMSrepl_originators
に正しくないバージョンのサブスクリプション データベースの古いエントリが含まれている場合、ピアツーピア レプリケーションで使用すると、sp_replmonitorsubscriptionpendingcmds
が誤った数の保留中のコマンドを報告する可能性があります。 この問題を解決するには、MSrepl_originators
から古いエントリをすべて削除するか、sp_replmonitorsubscriptionpendingcmds
ストアド プロシージャの subdb_version
引数を使用するときに、サブスクリプション データベースの正しいdbversion
を渡します。
dbversion
を決定する方法の詳細については、KB5017009を参照してください。
アクセス許可
ディストリビューターの sysadmin 固定サーバー ロールのメンバー、またはディストリビューション データベースの固定データベース ロール db_owner メンバーのみが sp_replmonitorsubscriptionpendingcmds
を実行できます。 ディストリビューション データベースを使用するパブリケーションのパブリケーション アクセス リストのメンバーは、 sp_replmonitorsubscriptionpendingcmds
を実行して、そのパブリケーションの保留中のコマンドを返すことができます。