次の方法で共有


手動によるサブスクリプションの初期化

このトピックでは、SQL Server 2012 で SQL Server Management Studio または Transact-SQL を使用して、サブスクリプションを手動で初期化する方法について説明します。 サブスクリプションを初期化する場合、一般には、初期スナップショットが使用されます。ただし、スキーマおよび初期データがサブスクライバー側に既に存在していれば、パブリケーションのサブスクリプションをスナップショットを使用せずに初期化できます。

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

  • サブスクリプションを手動で初期化するために使用するもの:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

制限事項と制約事項

  • データとスキーマをサブスクライバーにコピーしてからサブスクリプションが手動で初期化されるまでの間に、トランザクション レプリケーションを使ってパブリッシュされたデータベース上で処理が実行されると、この処理による変更がサブスクライバーにレプリケートされない場合があります。

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

SQL Server Management Studio の使用

スキーマ (通常はデータも含まれます) をサブスクリプション データベースにコピーすることによって、パブリケーションに対するサブスクリプションを手動で初期化します。 スキーマとデータは、パブリケーション データベースと一致している必要があります。 その後、サブスクリプションの新規作成ウィザードの [サブスクリプションの初期化] ページで、サブスクリプションにスキーマとデータが必要ないことを指定します。 このウィザードの使用方法の詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」および「プル サブスクリプションの作成」を参照してください。

初めてサブスクリプションを同期させたときに、レプリケーションに必要なオブジェクトとメタデータがサブスクリプション データベースにコピーされます。

パブリケーションに対するサブスクリプションを手動で初期化するには

  1. スキーマとデータがサブスクリプション データベースにコピーされていることを確認します。

  2. サブスクリプションの新規作成ウィザードの [サブスクリプションの初期化] ページで、[初期化] チェック ボックスをオフにします。 この操作を、レプリケーション オブジェクトとメタデータのみをコピーする必要がある各サブスクリプションに対して行います。

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

Transact-SQL の使用

サブスクリプションは、レプリケーションのストアド プロシージャを使用して手動で初期化できます。

トランザクション パブリケーションのプル サブスクリプションを手動で初期化するには

  1. スキーマとデータがサブスクリプション データベースに存在することを確認します。 詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」を参照してください。

  2. パブリッシャーのパブリケーション データベースで sp_addsubscription を実行します。 @publication@subscriber を指定し、@destination_db@subscription_type@sync_type に、それぞれ、パブリッシュされたデータを格納するサブスクライバー側データベースの名前、pullreplication support only を指定します。 詳細については、「プル サブスクリプションの作成」を参照してください。

  3. サブスクライバーで、sp_addpullsubscription を実行します。 サブスクリプションの更新については、「トランザクション パブリケーションの更新可能なサブスクリプションの作成」を参照してください。

  4. サブスクライバーで、sp_addpullsubscription_agent を実行します。 詳細については、「プル サブスクリプションの作成」を参照してください。

  5. ディストリビューション エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「プル サブスクリプションの同期」を参照してください。

トランザクション パブリケーションのプッシュ サブスクリプションを手動で初期化するには

  1. スキーマとデータがサブスクリプション データベースに存在することを確認します。 詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」を参照してください。

  2. パブリッシャーのパブリケーション データベースで sp_addsubscription を実行します。 @destination_db@subscription_type@sync_type に、それぞれ、パブリッシュされたデータを格納するサブスクライバー側データベースの名前、pushreplication support only を指定します。 サブスクリプションの更新については、「トランザクション パブリケーションの更新可能なサブスクリプションの作成」を参照してください。

  3. パブリッシャーのパブリケーション データベースで sp_addpushsubscription_agent を実行します。 詳細については、「プッシュ サブスクリプションの作成」を参照してください。

  4. ディストリビューション エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「プッシュ サブスクリプションの同期」を参照してください。

マージ パブリケーションのプル サブスクリプションを手動で初期化するには

  1. スキーマとデータがサブスクリプション データベースに存在することを確認します。 これは、サブスクライバーでパブリケーション データベースのバックアップを復元することによって行います。

  2. パブリッシャーで sp_addmergesubscription を実行します。 @publication@subscriber@subscriber_db を指定し、@subscription_typepull を指定します。 これにより、プル サブスクリプションが登録されます。

  3. パブリッシュされたデータを格納するサブスクライバーのデータベースで sp_addmergepullsubscription を実行します。 @sync_type には、none を指定します。

  4. サブスクライバーで、sp_addmergepullsubscription_agent を実行します。 詳細については、「プル サブスクリプションの作成」を参照してください。

  5. マージ エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「プル サブスクリプションの同期」を参照してください。

マージ パブリケーションのプッシュ サブスクリプションを手動で初期化するには

  1. スキーマとデータがサブスクリプション データベースに存在することを確認します。 これは、サブスクライバーでパブリケーション データベースのバックアップを復元することによって行います。

  2. パブリッシャー側のパブリケーション データベースに対し、sp_addmergesubscription を実行します。 @subscriber_db@subscription_type@sync_type に、それぞれ、パブリッシュされたデータを格納するサブスクライバー側データベースの名前、pushnone を指定します。

  3. パブリッシャー側のパブリケーション データベースに対し、sp_addmergepushsubscription_agent を実行します。 詳細については、「プッシュ サブスクリプションの作成」を参照してください。

  4. マージ エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「プッシュ サブスクリプションの同期」を参照してください。

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

関連項目

概念

スナップショットを使用しないトランザクション サブスクリプションの初期化

レプリケートされたデータベースのバックアップと復元

レプリケーション セキュリティの推奨事項