サブスクライバ・レプリケーション・エージェントの状態は、そのマスター・データ・ストアによって記述されます。障害が発生したサブスクライバ・データ・ストアをリカバリする場合は、レプリケーション・スキームで通信するマスター・データ・ストアに対するサブスクライバ・データ・ストアのレプリケーション状態を再設定する必要があります。サブスクライバ・データ・ストアの状態は、コマンドラインまたはプログラムから再設定できます。
データ・ストアの状態を問い合せる方法については、「レプリケーションの監視」を参照してください。
マスター・データ・ストアは、サブスクライバ・データ・ストアをStart、PauseまたはStopのいずれかの状態に設定できます。データ・ストアの状態は、次の表に示すように、TTREP.REPNETWORK表のSTATE列に整数値として示されます。
状態
|
説明
|
---|---|
Start 状態値: 0 | レプリケーション更新が収集され、できるかぎり早くサブスクライバ・データ・ストアに送信されます。サブスクライバ・データ・ストアのレプリケーションが動作していない場合、更新は、送信可能になるまでログ・ファイルに保存されます。 |
Pause 状態値: 1 | レプリケーション更新は、送信を試行されずにログに保存されます。状態がStartに変更されると、送信が開始します。 |
Stop 状態値: 2 | レプリケーション更新は、サブスクライバ・データ・ストアに送信されずに破棄されます。サブスクライバ・データ・ストアをStop状態にすると、マスターのトランザクション・ログに保留されている更新がすべて破棄されます。 |
Failed 状態値: 4 | しきい値制限(ログ・データ)を超えているため、サブスクライバへのレプリケーションは失敗したとみなされます。この状態は、システムによって設定されます。システムが状態をStopに設定する前の遷移状態です。 Failedデータ・ストアに接続するアプリケーションは警告を受信します。詳細は、「一般的なフェイルオーバーおよびリカバリの手順」を参照してください。 |
マスター・データ・ストアがそのサブスクライバの1つをStart状態に設定すると、そのサブスクライバに対する更新がマスターのログに保存されます。サブスクライバがStop状態の場合、サブスクライバに対する更新は破棄されます。
サブスクライバがPause状態の場合、サブスクライバに対する更新はマスターのログに保存されますが、サブスクライバ・データ・ストアには送信されません。マスターがサブスクライバをPauseからStartに変更すると、マスターのログに保存された更新のバックログがサブスクライバに送信されます。(これには例外があります。「データ・ストアのフェイルオーバーおよびリカバリの管理」を参照してください。)マスター・データ・ストアは、状態が示されたサブスクライバに接続を確立できない場合、成功するまで接続の確立を定期的に試行します。
コマンドラインからttRepAdminを使用して、subscriberds
サブスクライバ・データ・ストアの状態をStopに設定するようにmasterds
マスター・データ・ストアに指示するには、次のように入力します。
ttRepAdmin -dsn masterds -receiver -name subscriberds -state stop
注意: | 異なるホストに同じ名前のサブスクライバが複数ある場合は、ttRepAdmin -host パラメータでサブスクライバのホストを識別します。 |
レプリケーション・スキームがrepl.scheme
であると想定した場合は、次のttRepSubscriberStateSetプロシージャで、サブスクライバ・データ・ストア(system1
のsubscriberds
)の状態をStopに設定するようにマスター・データ・ストアに指示します。
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *)
"CALL ttRepSubscriberStateSet('repscheme', 'repl',
'subscriberds', 'system1', 2)", SQL_NTS );
次のttRepSubscriberStateSetプロシージャで、すべてのサブスクライバ・データ・ストアの状態をPauseに設定するようにマスター・データ・ストアに指示します。
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *)
"CALL ttRepSubscriberStateSet( , , , , 1 )", SQL_NTS );
マスターのすべてのサブスクライバを特定の状態に設定する場合は、ttRepSubscriberStateSetのみを使用できます。ttRepAdminに同等の機能はありません。