Share via


トランザクション レプリケーションの待機時間を計測して接続を検証する方法 (レプリケーション Transact-SQL プログラミング)

トランザクション レプリケーションの場合、サーバーが接続されているかどうかを確認できること、および待機時間を計測できることは重要です。待機時間は、パブリッシャで行われた変更がサブスクライバに反映されるまでの経過時間です。詳細については、「監視 (レプリケーション)」を参照してください。この情報は、レプリケーション ストアド プロシージャを使用してプログラムで取得できます。

注意

トレーサ トークン情報は、ディストリビューション データベースの履歴保有期間で管理されるその他の履歴データと同じ期間保持されます。保有期間を変更するには、sp_changedistributiondb (Transact-SQL) を使用して history_retention プロパティの値を変更します。

トレーサ トークンをトランザクション パブリケーションに通知するには

  1. (省略可) パブリッシャ側のパブリケーション データベースに対して、sp_helppublication (Transact-SQL) を実行します。パブリケーションが存在すること、および状態がアクティブであることを確認します。

  2. (省略可) パブリッシャ側のパブリケーション データベースに対して、sp_helpsubscription (Transact-SQL) を実行します。サブスクリプションが存在すること、および状態がアクティブであることを確認します。

  3. パブリッシャのパブリケーション データベースで、@publication を指定して sp_posttracertoken (Transact-SQL) を実行します。@tracer_token_id 出力パラメータの値を確認します。

待機時間を決定し、トランザクション パブリケーションの接続を確認するには

  1. 上述の手順を使用して、トレーサ トークンをパブリケーションに通知します。

  2. パブリッシャのパブリケーション データベースで、@publication を指定して sp_helptracertokens (Transact-SQL) を実行します。パブリケーションに通知されたすべてのトレーサ トークンのリストが返されます。結果セットの目的の tracer_id を確認します。

  3. パブリッシャのパブリケーション データベースで、@publication を指定し、@tracer_id に手順 2. のトレーサ トークン ID を指定して、sp_helptracertokenhistory (Transact-SQL) を実行します。選択したトレーサ トークンの待機情報が返されます。

トレーサ トークンを削除するには

  1. パブリッシャのパブリケーション データベースで、@publication を指定して sp_helptracertokens (Transact-SQL) を実行します。パブリケーションに通知されたすべてのトレーサ トークンのリストが返されます。結果セットの削除するトレーサ トークンの tracer_id を確認します。

  2. パブリッシャのパブリケーション データベースで、@publication を指定し、@tracer_id に手順 2. の削除するトレーサ トークン ID を指定して、sp_deletetracertokenhistory (Transact-SQL) を実行します。

使用例

次の例では、トレーサ トークン レコードを通知し、返された通知済みトレーサ トークンの ID を使用して待機時間情報を表示します。

DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

USE [AdventureWorks2008R2]

-- Insert a new tracer token in the publication database.
EXEC sys.sp_posttracertoken 
  @publication = @publication,
  @tracer_token_id = @tokenID OUTPUT;
SELECT 'The ID of the new tracer token is ''' + 
    CONVERT(varchar,@tokenID) + '''.'
GO

-- Wait 10 seconds for the token to make it to the Subscriber.
WAITFOR DELAY '00:00:10';
GO

-- Get latency information for the last inserted token.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

CREATE TABLE #tokens (tracer_id int, publisher_commit datetime)

-- Return tracer token information to a temp table.
INSERT #tokens (tracer_id, publisher_commit)
EXEC sys.sp_helptracertokens @publication = @publication;
SET @tokenID = (SELECT TOP 1 tracer_id FROM #tokens
ORDER BY publisher_commit DESC)
DROP TABLE #tokens

-- Get history for the tracer token.
EXEC sys.sp_helptracertokenhistory 
  @publication = @publication, 
  @tracer_id = @tokenID;
GO