このトピックでは、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を実行します。 サブスクリプションの更新については、「 トランザクション パブリケーションへの更新可能なサブスクリプションの作成」を参照してください。
サブスクライバーで、 sp_addpullsubscription_agentを実行します。 詳細については、「 プル サブスクリプションの作成」を参照してください。
ディストリビューション エージェントを起動してレプリケーション オブジェクトを転送し、パブリッシャーから最新の変更をダウンロードします。 詳細については、「 プル サブスクリプションの同期」を参照してください。
トランザクション パブリケーションへのプッシュ サブスクリプションを手動で初期化するには
スキーマとデータがサブスクリプション データベースに存在することを確認します。 詳細については、「 スナップショットを使用せずにトランザクション サブスクリプションを初期化する」を参照してください。
パブリッシャー側のパブリケーション データベースで、 sp_addsubscriptionを実行します。 サブスクライバーのデータベースで公開されたデータを含む@destination_dbの名前、@subscription_typeにはプッシュの値、そして@sync_typeにはレプリケーションサポートのみの値を指定します。 サブスクリプションの更新については、「 トランザクション パブリケーションへの更新可能なサブスクリプションの作成」を参照してください。
パブリッシャー側のパブリケーション データベースで、 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にはpush、@sync_typeにはnoneという値を指定します。
パブリッシャー側のパブリケーション データベースで、 sp_addmergepushsubscription_agentを実行します。 詳細については、「 プッシュ サブスクリプションの作成」を参照してください。
マージ エージェントを起動してレプリケーション オブジェクトを転送し、パブリッシャーから最新の変更をダウンロードします。 詳細については、「 プッシュ サブスクリプションの同期」を参照してください。
こちらもご覧ください
スナップショットなしでトランザクション サブスクリプションを初期化する
レプリケートされたデータベースのバックアップと復元
レプリケーション のセキュリティに関するベスト プラクティス