サブスクライバーでのデータの検証

このトピックでは、SQL Server 2012 で SQL Server Management Studio、Transact-SQL、またはレプリケーション管理オブジェクト (RMO) を使用して、サブスクライバーでデータを検証する方法について説明します。

データの検証は、3 つの部分で構成されるプロセスです。

  1. パブリケーションの単一のサブスクリプションまたはすべてのサブスクリプションが検証対象としてマークされます。 [サブスクリプションの検証] および [すべてのサブスクリプションの検証] ダイアログ ボックスで、サブスクリプションに検証対象のマークを付けます。これらのダイアログ ボックスは、Microsoft SQL Server Management Studio の [ローカル パブリケーション] フォルダーおよび [ローカル サブスクリプション] フォルダーから使用できます。 また、[すべてのサブスクリプション] タブ、[サブスクリプション ウォッチ リスト] タブ、およびレプリケーション モニターのパブリケーション ノードでもサブスクリプションにマークを付けることができます。 レプリケーション モニターの起動の詳細については、「レプリケーション モニターの開始」を参照してください。

  2. サブスクリプションは、ディストリビューション エージェント (トランザクション レプリケーションの場合) またはマージ エージェント (マージ レプリケーションの場合) による次回の同期時に検証されます。 ディストリビューション エージェントは、通常は連続して実行されるので、検証はすぐに実行されます。マージ エージェントは、通常は要求時に実行されるので、エージェントを実行した後で検証が実行されます。

  3. 検証結果は次の場所で表示できます。

    • レプリケーション モニターの詳細ウィンドウ : トランザクション レプリケーションの場合は [ディストリビューターからサブスクライバーまでの履歴] タブ、およびマージ レプリケーションの場合は [同期の履歴] タブ

    • Management Studio の [同期の状態の表示] ダイアログ ボックス

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

  • サブスクライバーでデータを検証するために使用するもの:

    SQL Server Management Studio

    Transact-SQL

    レプリケーション管理オブジェクト (RMO)

作業を開始する準備

制限事項と制約事項

  • レプリケーション モニターの手順は、プッシュ サブスクリプションにのみ適用されます。プル サブスクリプションはレプリケーション モニターでは同期できないからです。 ただし、レプリケーション モニターで、サブスクリプションに検証対象のマークを付けたり、プル サブスクリプションの検証結果を表示することはできます。

  • 検証結果には、検証が成功したかどうかが示されますが、失敗した場合、検証に失敗した行は示されません。 パブリッシャーとサブスクライバーのデータを比較するには、tablediff ユーティリティを使用します。 レプリケートされたデータでこのユーティリティを使用する方法の詳細については、「レプリケートされたテーブルを比較して相違があるかどうかを確認する (レプリケーション プログラミング)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

トランザクション パブリケーションのサブスクリプションのデータを検証するには (Management Studio)

  1. SQL Server Management Studio でパブリッシャーに接続し、サーバー ノードを展開します。

  2. [レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。

  3. サブスクリプションを検証するパブリケーションを右クリックし、[サブスクリプションの検証] をクリックします。

  4. [サブスクリプションの検証] ダイアログ ボックスで、次のように検証するサブスクリプションを選択します。

    • [すべての SQL Server サブスクリプションを検証する] を選択する。

    • [以下のサブスクリプションを検証する] を選択し、1 つ以上のサブスクリプションを選択する。

  5. 実行する検証の種類 (行数、または行数とチェックサム) を指定するには、[検証オプション] をクリックし、[サブスクリプションの検証オプション] ダイアログ ボックスでオプションを指定します。

  6. [OK] をクリックします。

  7. レプリケーション モニターまたは [同期の状態の表示] ダイアログ ボックスで検証結果を表示します。 サブスクリプションごとに、次の手順を実行します。

    1. パブリケーションを展開し、サブスクリプションを右クリックして、[同期の状態の表示] をクリックします。

    2. エージェントが実行されていない場合は、[同期の状態の表示] ダイアログ ボックスの [開始] をクリックします。 ダイアログ ボックスには、検証に関する情報メッセージが表示されます。

    検証に関するメッセージが表示されない場合、エージェントは既にその後のメッセージを記録しています。 この場合は、検証結果をレプリケーション モニターに表示します。 詳細については、このトピックのレプリケーション モニターの実行手順を参照してください。

マージ パブリケーションの単一のサブスクリプションのデータを検証するには (Management Studio)

  1. SQL Server Management Studio でパブリッシャーに接続し、サーバー ノードを展開します。

  2. [レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。

  3. サブスクリプションを検証するパブリケーションを展開し、サブスクリプションを右クリックして、[サブスクリプションの検証] をクリックします。

  4. [サブスクリプションの検証] ダイアログ ボックスで、[このサブスクリプションを検証する] を選択します。

  5. 実行する検証の種類 (行数、または行数とチェックサム) を指定するには、[オプション] をクリックし、[サブスクリプションの検証オプション] ダイアログ ボックスでオプションを指定します。

  6. [OK] をクリックします。

  7. レプリケーション モニターまたは [同期の状態の表示] ダイアログ ボックスで検証結果を表示します。

    1. パブリケーションを展開し、サブスクリプションを右クリックして、[同期の状態の表示] をクリックします。

    2. エージェントが実行されていない場合は、[同期の状態の表示] ダイアログ ボックスの [開始] をクリックします。 ダイアログ ボックスには、検証に関する情報メッセージが表示されます。

    検証に関するメッセージが表示されない場合、エージェントは既にその後のメッセージを記録しています。 この場合は、検証結果をレプリケーション モニターに表示します。 詳細については、このトピックのレプリケーション モニターの実行手順を参照してください。

マージ パブリケーションのすべてのサブスクリプションのデータを検証するには (Management Studio)

  1. SQL Server Management Studio でパブリッシャーに接続し、サーバー ノードを展開します。

  2. [レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。

  3. サブスクリプションを検証するパブリケーションを右クリックし、[すべてのサブスクリプションの検証] をクリックします。

  4. [すべてのサブスクリプションの検証] ダイアログ ボックスで、実行する検証の種類 (行数、または行数とチェックサム) を指定します。

  5. [OK] をクリックします。

  6. レプリケーション モニターまたは [同期の状態の表示] ダイアログ ボックスで検証結果を表示します。 サブスクリプションごとに、次の手順を実行します。

    1. パブリケーションを展開し、サブスクリプションを右クリックして、[同期の状態の表示] をクリックします。

    2. エージェントが実行されていない場合は、[同期の状態の表示] ダイアログ ボックスの [開始] をクリックします。 ダイアログ ボックスには、検証に関する情報メッセージが表示されます。

    検証に関するメッセージが表示されない場合、エージェントは既にその後のメッセージを記録しています。 この場合は、検証結果をレプリケーション モニターに表示します。 詳細については、このトピックのレプリケーション モニターの実行手順を参照してください。

トランザクション パブリケーションのすべてのプッシュ サブスクリプションのデータを検証するには (レプリケーション モニター)

  1. レプリケーション モニターの左ペインでパブリッシャー グループを展開し、パブリッシャーを展開します。

  2. サブスクリプションを検証するパブリケーションを右クリックし、[サブスクリプションの検証] をクリックします。

  3. [サブスクリプションの検証] ダイアログ ボックスで、次のように検証するサブスクリプションを選択します。

    • [すべての SQL Server サブスクリプションを検証する] を選択する。

    • [以下のサブスクリプションを検証する] を選択し、1 つ以上のサブスクリプションを選択する。

  4. 実行する検証の種類 (行数、または行数とチェックサム) を指定するには、[検証オプション] をクリックし、[サブスクリプションの検証オプション] ダイアログ ボックスでオプションを指定します。

  5. [OK] をクリックします。

  6. [すべてのサブスクリプション] タブをクリックします。

  7. 検証結果を表示します。 プッシュ サブスクリプションごとに、次の手順を実行します。

    1. エージェントが実行されていない場合、サブスクリプションを右クリックし、[同期の開始] をクリックします。

    2. サブスクリプションを右クリックし、[詳細表示] をクリックします。

    3. [ディストリビューターからサブスクライバーまでの履歴] タブの [選択されたセッションのアクション] テキスト領域に情報が表示されます。

マージ パブリケーションの単一のプッシュ サブスクリプションのデータを検証するには (レプリケーション モニター)

  1. レプリケーション モニターで、左ペインのパブリッシャー グループを展開し、パブリッシャーを展開してパブリケーションをクリックします。

  2. [すべてのサブスクリプション] タブをクリックします。

  3. 検証するサブスクリプションを右クリックし、[サブスクリプションの検証] をクリックします。

  4. [サブスクリプションの検証] ダイアログ ボックスで、[このサブスクリプションを検証する] を選択します。

  5. 実行する検証の種類 (行数、または行数とチェックサム) を指定するには、[オプション] をクリックし、[サブスクリプションの検証オプション] ダイアログ ボックスでオプションを指定します。

  6. [OK] をクリックします。

  7. [すべてのサブスクリプション] タブをクリックします。

  8. 検証結果を表示します。

    1. エージェントが実行されていない場合、サブスクリプションを右クリックし、[同期の開始] をクリックします。

    2. サブスクリプションを右クリックし、[詳細表示] をクリックします。

    3. [同期の履歴] タブの [選択されたセッションの最終メッセージ] テキスト領域に情報が表示されます。

マージ パブリケーションのすべてのプッシュ サブスクリプションのデータを検証するには (レプリケーション モニター)

  1. レプリケーション モニターの左ペインでパブリッシャー グループを展開し、パブリッシャーを展開します。

  2. サブスクリプションを検証するパブリケーションを右クリックし、[すべてのサブスクリプションの検証] をクリックします。

  3. [すべてのサブスクリプションの検証] ダイアログ ボックスで、実行する検証の種類 (行数、または行数とチェックサム) を指定します。

  4. [OK] をクリックします。

  5. [すべてのサブスクリプション] タブをクリックします。

  6. 検証結果を表示します。 プッシュ サブスクリプションごとに、次の手順を実行します。

    1. エージェントが実行されていない場合、サブスクリプションを右クリックし、[同期の開始] をクリックします。

    2. サブスクリプションを右クリックし、[詳細表示] をクリックします。

    3. [同期の履歴] タブの [選択されたセッションの最終メッセージ] テキスト領域に情報が表示されます。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

トランザクション パブリケーションのすべてのアーティクルについてデータを検証するには

  1. パブリッシャー側のパブリケーション データベースに対して、sp_publication_validation (Transact-SQL) を実行します。 @publication を指定し、次のいずれかの値を @rowcount_only に指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_publication_validation (Transact-SQL) を実行すると、パブリケーション内の各アーティクルについて sp_article_validation (Transact-SQL) が実行されます。 sp_publication_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  2. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、各サブスクリプションについてディストリビューション エージェントを開始します。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。

  3. エージェントの出力で検証結果を確認します。 詳細については、「レプリケートされたデータの検証」を参照してください。

トランザクション パブリケーションの単一のアーティクルについてデータを検証するには

  1. パブリッシャー側のパブリケーション データベースに対して、sp_article_validation (Transact-SQL) を実行します。 @publication を指定し、@article にアーティクル名を、@rowcount_only に次のいずれかの値を指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_article_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  2. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、各サブスクリプションについてディストリビューション エージェントを開始します。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。

  3. エージェントの出力で検証結果を確認します。 詳細については、「レプリケートされたデータの検証」を参照してください。

トランザクション パブリケーションの単一のサブスクライバーについてデータを検証するには

  1. パブリッシャーのパブリケーション データベースで、BEGIN TRANSACTION (Transact-SQL) を使用して明示的なトランザクションを開始します。

  2. パブリッシャー側のパブリケーション データベースに対して、sp_marksubscriptionvalidation (Transact-SQL) を実行します。 @publication にパブリケーションを、@subscriber にサブスクライバーの名前を、@destination_db にサブスクリプション データベースの名前を指定します。

  3. (省略可) 検証の対象となる各サブスクリプションについて、手順 2. を繰り返します。

  4. パブリッシャー側のパブリケーション データベースに対して、sp_article_validation (Transact-SQL) を実行します。 @publication を指定し、@article にアーティクル名を、@rowcount_only に次のいずれかの値を指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_article_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  5. パブリッシャーのパブリケーション データベースで、COMMIT TRANSACTION (Transact-SQL) を使用してトランザクションをコミットします。

  6. (省略可) 検証の対象となる各アーティクルについて、手順 1. から手順 5. を繰り返します。

  7. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、開始します。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。

  8. エージェントの出力で検証結果を確認します。 詳細については、「サブスクライバーでのデータの検証」を参照してください。

マージ パブリケーションのすべてのサブスクリプションについてデータを検証するには

  1. パブリッシャー側のパブリケーション データベースに対して、sp_validatemergepublication (Transact-SQL) を実行します。 @publication を指定し、次のいずれかの値を @level に指定します。

    • 1 - 行数の検証のみ

    • 3 - 行数とバイナリ チェックサムの検証

    これにより、すべてのサブスクリプションが検証対象としてマークされます。

  2. 各サブスクリプションのマージ エージェントを開始します。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。

  3. エージェントの出力で検証結果を確認します。 詳細については、「サブスクライバーでのデータの検証」を参照してください。

マージ パブリケーションの選択したサブスクリプションについてデータを検証するには

  1. パブリッシャー側のパブリケーション データベースに対して、sp_validatemergesubscription (Transact-SQL) を実行します。 @publication を指定し、@subscriber にサブスクライバーの名前を、@subscriber_db にサブスクリプション データベースの名前を、@level に次のいずれかの値を指定します。

    • 1 - 行数の検証のみ

    • 3 - 行数とバイナリ チェックサムの検証

    これにより、選択されたサブスクリプションが検証対象としてマークされます。

  2. 各サブスクリプションのマージ エージェントを開始します。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。

  3. エージェントの出力で検証結果を確認します。

  4. 検証の対象となる各サブスクリプションについて、手順 1. から手順 3. を繰り返します。

注意

レプリケーション マージ エージェントを実行するときに、-Validate パラメーターを指定することによって、マージ パブリケーションのサブスクリプションについても同期処理の最後に検証を実行できます。

マージ エージェントのパラメーターを使用してサブスクリプションのデータを検証するには

  • サブスクライバー (プル サブスクリプションの場合) またはディストリビューター (プッシュ サブスクリプションの場合) で、次のいずれかの方法でコマンド プロンプトからマージ エージェントを開始します。

    • -Validate パラメーターの値に、1 (行数) または 3 (行数とバイナリ チェックサム) を指定します。

    • -ProfileName パラメーターに、rowcount validation または rowcount and checksum validationを指定します。

    詳細については、「プル サブスクリプションの同期」または「プッシュ サブスクリプションの同期」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]

レプリケーション管理オブジェクト (RMO) の使用

レプリケーションでは、サブスクライバーのデータがパブリッシャーのデータと一致するかどうかを、レプリケーション管理オブジェクト (RMO) を使用してプログラムから検証できます。 使用するオブジェクトは、レプリケーション トポロジの種類によって異なります。 トランザクション レプリケーションでは、パブリケーションのサブスクリプションをすべて検証する必要があります。

注意

例については、このセクションの後半の「例 (RMO)」を参照してください。

トランザクション パブリケーションのすべてのアーティクルについてデータを検証するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. TransPublication クラスのインスタンスを作成します。 パブリケーションの Name プロパティおよび DatabaseName プロパティを設定します。 ConnectionContext プロパティに、手順 1. で作成した接続を設定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトの残りのプロパティを取得します。 このメソッドが false を返す場合、手順 2. でパブリケーション プロパティを不適切に設定したか、パブリケーションが存在していません。

  4. ValidatePublication メソッドを呼び出します。 次のパラメーターを指定します。

    • ValidationOption

    • ValidationMethod

    • 検証が終了した後、ディストリビューション エージェントを停止するかどうかを示すブール値

    これにより、アーティクルが検証対象としてマークされます。

  5. まだディストリビューション エージェントを実行していない場合は、ディストリビューション エージェントを起動して、各サブスクリプションを同期します。 詳細については、「プッシュ サブスクリプションの同期」または「プル サブスクリプションの同期」を参照してください。 検証操作の結果は、エージェントの履歴に出力されます。 詳細については、「レプリケーションの監視」を参照してください。

マージ パブリケーションのすべてのサブスクリプションについてデータを検証するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. MergePublication クラスのインスタンスを作成します。 パブリケーションの Name プロパティおよび DatabaseName プロパティを設定します。 ConnectionContext プロパティに、手順 1. で作成した接続を設定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトの残りのプロパティを取得します。 このメソッドが false を返す場合、手順 2. でパブリケーション プロパティを不適切に設定したか、パブリケーションが存在していません。

  4. ValidatePublication メソッドを呼び出します。 必要な ValidationOption を指定します。

  5. 各サブスクリプションについてマージ エージェントを実行して検証を開始するか、次回予定されているエージェントの実行を待ちます。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。 検証操作の結果は、エージェントの履歴に出力されます。この履歴は、レプリケーション モニターを使って表示できます。 詳細については、「レプリケーションの監視」を参照してください。

マージ パブリケーションの単一のサブスクリプションについてデータを検証するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. MergePublication クラスのインスタンスを作成します。 パブリケーションの Name プロパティおよび DatabaseName プロパティを設定します。 ConnectionContext プロパティに、手順 1. で作成した接続を設定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトの残りのプロパティを取得します。 このメソッドが false を返す場合、手順 2. でパブリケーション プロパティを不適切に設定したか、パブリケーションが存在していません。

  4. ValidateSubscription メソッドを呼び出します。 サブスクライバーの名前、検証対象のサブスクリプション データベース、および、必要な ValidationOption を指定します。

  5. 目的のサブスクリプションについてマージ エージェントを実行して検証を開始するか、次回予定されているエージェントの実行を待ちます。 詳細については、「プル サブスクリプションの同期」および「プッシュ サブスクリプションの同期」を参照してください。 検証操作の結果は、エージェントの履歴に出力されます。この履歴は、レプリケーション モニターを使って表示できます。 詳細については、「レプリケーションの監視」を参照してください。

例 (RMO)

次の例では、トランザクション パブリケーションのすべてのサブスクリプションを、行数検証の対象としてマークします。

         // Define the server, database, and publication names
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksProductTran";
            string publicationDbName = "AdventureWorks2012";

            TransPublication publication;

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Set the required properties for the publication.
                publication = new TransPublication();
                publication.ConnectionContext = conn;
                publication.Name = publicationName;
                publication.DatabaseName = publicationDbName;

                // If we can't get the properties for this publication, 
                // throw an application exception.
                if (publication.LoadProperties())
                {
                    // Initiate validataion for all subscriptions to this publication.
                    publication.ValidatePublication(ValidationOption.RowCountOnly,
                        ValidationMethod.ConditionalFast, false);

                    // If not already running, start the Distribution Agent at each 
                    // Subscriber to synchronize and validate the subscriptions.
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Settings could not be retrieved for the publication. " +
                        "Ensure that the publication {0} exists on {1}.",
                        publicationName, publisherName));
                }
            }
            catch (Exception ex)
            {
                // Do error handling here.
                throw new ApplicationException(
                    "Subscription validation could not be initiated.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

次の例では、マージ パブリケーションの特定のサブスクリプションを、行数検証の対象としてマークします。

          // Define the server, database, and publication names
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2012";
            string subscriberName = subscriberInstance;
            string subscriptionDbName = "AdventureWorks2012Replica";

            MergePublication publication;

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Set the required properties for the publication.
                publication = new MergePublication();
                publication.ConnectionContext = conn;
                publication.Name = publicationName;
                publication.DatabaseName = publicationDbName;


                // If we can't get the properties for this merge publication, then throw an application exception.
                if (publication.LoadProperties())
                {
                    // Initiate validation of the specified subscription.
                    publication.ValidateSubscription(subscriberName,
                        subscriptionDbName, ValidationOption.RowCountOnly);
                    
                    // Start the Merge Agent to synchronize and validate the subscription.
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Settings could not be retrieved for the publication. " +
                        "Ensure that the publication {0} exists on {1}.",
                        publicationName, publisherName));
                }
            }
            catch (Exception ex)
            {
                // Do error handling here.
                throw new ApplicationException(String.Format(
                    "The subscription at {0} to the {1} publication could not " +
                    "be validated.", subscriberName, publicationName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try

[トップに戻る] リンクで使用される矢印アイコン[Top]