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