手動によるサブスクリプションの初期化
このトピックでは、SQL Server Management Studioまたは Transact-SQL を使用して、SQL Server 2014 でサブスクリプションを手動で初期化する方法について説明します。 サブスクリプションを初期化する場合、一般には、初期スナップショットが使用されます。ただし、スキーマおよび初期データがサブスクライバー側に既に存在していれば、パブリケーションのサブスクリプションをスナップショットを使用せずに初期化できます。
はじめに
制限事項と制約事項
- データとスキーマをサブスクライバーにコピーしてからサブスクリプションが手動で初期化されるまでの間に、トランザクション レプリケーションを使ってパブリッシュされたデータベース上で処理が実行されると、この処理による変更がサブスクライバーにレプリケートされない場合があります。
SQL Server Management Studio を使用する
スキーマ (通常はデータも含まれます) をサブスクリプション データベースにコピーすることによって、パブリケーションに対するサブスクリプションを手動で初期化します。 スキーマとデータは、パブリケーション データベースと一致している必要があります。 その後、サブスクリプションの新規作成ウィザードの [サブスクリプションの初期化] ページで、サブスクリプションにスキーマとデータが必要ないことを指定します。 このウィザードへのアクセスの詳細については、「 スナップショットを使用しないトランザクション サブスクリプションの初期化 」および「 プル サブスクリプションの作成を使用して、サブスクリプションを手動で初期化する方法について説明します。
初めてサブスクリプションを同期させたときに、レプリケーションに必要なオブジェクトとメタデータがサブスクリプション データベースにコピーされます。
パブリケーションに対するサブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースにコピーされていることを確認します。
サブスクリプションの新規作成ウィザードの [サブスクリプションの初期化] ページで、 [初期化] チェック ボックスをオフにします。 この操作を、レプリケーション オブジェクトとメタデータのみをコピーする必要がある各サブスクリプションに対して行います。
Transact-SQL の使用
サブスクリプションは、レプリケーションのストアド プロシージャを使用して手動で初期化できます。
トランザクション パブリケーションのプル サブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースに存在することを確認します。 詳細については、「 スナップショットを使用しないトランザクション サブスクリプションの初期化を使用して、サブスクリプションを手動で初期化する方法について説明します。
パブリッシャー側のパブリケーション データベースに対して、 sp_addsubscriptionを実行します。 @publication、@subscriber、@destination_dbのパブリッシュされたデータを含むサブスクライバーのデータベースの名前、@subscription_typeの pull の値、@sync_typeに対してのみレプリケーションサポートの値を指定します。 詳細については、「 プル サブスクリプションの作成」をご覧ください。
サブスクライバーで、 sp_addpullsubscriptionを実行します。 サブスクリプションの更新については、「 Create an Updatable Subscription to a Transactional Publication」を参照してください。
サブスクライバーで、 sp_addpullsubscription_agentを実行します。 詳細については、「 プル サブスクリプションの作成」をご覧ください。
ディストリビューション エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「 Synchronize a Pull Subscription」をご覧ください。
トランザクション パブリケーションのプッシュ サブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースに存在することを確認します。 詳細については、「 スナップショットを使用しないトランザクション サブスクリプションの初期化を使用して、サブスクリプションを手動で初期化する方法について説明します。
パブリッシャー側のパブリケーション データベースに対して、 sp_addsubscriptionを実行します。 サブスクライバーで、@destination_dbのパブリッシュされたデータを含むデータベースの名前、@subscription_typeの場合はpush の値、@sync_typeに対してのみレプリケーションサポートの値を指定します。 サブスクリプションの更新については、「 Create an Updatable Subscription to a Transactional Publication」を参照してください。
パブリッシャー側のパブリケーション データベースに対して、 sp_addpushsubscription_agentを実行します。 詳細については、「 プッシュ サブスクリプションの作成」をご覧ください。
ディストリビューション エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「 プッシュ サブスクリプションの同期」をご覧ください。
マージ パブリケーションのプル サブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースに存在することを確認します。 これは、サブスクライバーでパブリケーション データベースのバックアップを復元することによって行います。
パブリッシャーで sp_addmergesubscriptionを実行します。 @subscription_type@publication、@subscriber、@subscriber_db、pull の値を指定します。 これにより、プル サブスクリプションが登録されます。
パブリッシュされたデータを格納するサブスクライバーのデータベースで sp_addmergepullsubscriptionを実行します。 @sync_typeに none の値を指定します。
サブスクライバーで、 sp_addmergepullsubscription_agentを実行します。 詳細については、「 プル サブスクリプションの作成」をご覧ください。
マージ エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「 Synchronize a Pull Subscription」をご覧ください。
マージ パブリケーションのプッシュ サブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースに存在することを確認します。 これは、サブスクライバーでパブリケーション データベースのバックアップを復元することによって行います。
パブリッシャー側のパブリケーション データベースに対し、 sp_addmergesubscriptionを実行します。 @subscriber_dbのパブリッシュされたデータを含むサブスクライバーのデータベースの名前、@subscription_typeの場合はpush の値、@sync_typeには none の値を指定します。
パブリッシャー側のパブリケーション データベースに対して、 sp_addmergepushsubscription_agentを実行します。 詳細については、「 プッシュ サブスクリプションの作成」をご覧ください。
マージ エージェントを起動して、パブリッシャーからレプリケーション オブジェクトを転送し、最新の変更をダウンロードします。 詳細については、「 プッシュ サブスクリプションの同期」をご覧ください。
参照
スナップショットを使用しないトランザクション サブスクリプションの初期化
レプリケートされたデータベースのバックアップと復元
レプリケーション セキュリティの推奨事項