既存のパブリケーションでのアーティクルの追加および削除
パブリケーションを作成したら、アーティクルを追加および削除できます。 アーティクルはいつでも追加できますが、アーティクルを削除するために必要な操作は、レプリケーションの種類と、アーティクルを削除するタイミングによって異なります。
アーティクルの追加
アーティクルを追加するには、アーティクルへのパブリケーションの追加、パブリケーションの新しいスナップショットの作成、サブスクリプションの同期による新しいアーティクルのスキーマとデータの適用を行います。
注意
マージ パブリケーションにアーティクルを追加し、既存のアーティクルが新しいアーティクルに依存している場合は、sp_addmergearticleとsp_changemergearticle の @processing_order パラメーターを使用して、両方のアーティクルの処理順序を指定する必要があります。 たとえば、テーブルをパブリッシュし、テーブルが参照している関数はパブリッシュしない場合を考えます。 この関数をパブリッシュしないと、サブスクライバー側でテーブルを作成できないとします。 パブリケーションに関数を追加する場合: sp_addmergearticleの @processing_order パラメーターに値 1を指定します。sp_changemergearticleの@processing_order パラメーターに値 2 を指定し、パラメーター @articleのテーブル名を指定します。 この処理順序により、サブスクライバー側で関数に依存するテーブルを作成する前に、関数の作成が求められるようになります。 各アーティクルに使用する値は、関数の値がテーブルの値より小さければ、別の値でもかまいません。
次のいずれかの方法を使用して、1 つ以上のアーティクルを追加します。
パブリケーションにアーティクルを追加したら、パブリケーションの新しいスナップショット (およびパラメーター化されたフィルターを使用したマージ パブリケーションの場合は、すべてのパーティション) を作成する必要があります。 その後、ディストリビューション エージェントまたはマージ エージェントによって、新しいアーティクルのスキーマおよびデータがサブスクライバーにコピーされます (パブリケーション全体が再初期化されるわけではありません)。
新しいスナップショットを作成するには、「 Create and Apply the Initial Snapshot」を参照してください。
パラメーター化されたフィルターを使用してマージ パブリケーションに新しいスナップショットを作成するには、「パラメーター化されたフィルターを使用したパブリケーションのスナップショットの作成」 (パラメーター化されたフィルターを使用してマージ パブリケーションのスナップショットを作成する) を参照してください。
スナップショットを作成したら、サブスクリプションを同期し、新しいアーティクルのスキーマおよびデータをコピーします。
プッシュ サブスクリプションを同期するには、「Synchronize a Push Subscription」 (プッシュ サブスクリプションの同期) を参照してください。
プル サブスクリプションを同期するには、「Synchronize a Pull Subscription」 (プル サブスクリプションの同期) を参照してください。
アーティクルのドロップ
アーティクルはパブリケーションからいつでも削除できます。ただし、次の動作について考慮する必要があります。
パブリケーションからアーティクルを削除しても、パブリケーション データベースからオブジェクトが削除されたり、サブスクリプション データベースから対応するオブジェクトが削除されるわけではありません。 DROP <オブジェクト> を使用して、必要に応じてこれらのオブジェクトを削除します。 外部キー制約を使用して他の発行済みアーティクルに関連するアーティクルを削除する場合は、テーブルをサブスクライバーで手動で削除するか、オンデマンド スクリプト実行を使用して削除することをお勧めします。適切な DROP <Object> ステートメントを含むスクリプトを指定します。 詳細については、「 同期中にスクリプトを実行する (レプリケーション Transact-SQL プログラミング)」を参照してください。
互換性レベル 90RTM 以上のマージ パブリケーションの場合、アーティクルはいつでも削除できますが、新しいスナップショットが必要です。 追加として:
アーティクルが結合フィルター リレーションシップまたは論理レコード リレーションシップの親アーティクルの場合、最初にリレーションシップの削除が必要ですが、これには再初期化が必要になります。
アーティクルにパブリケーションの最後のパラメーター化されたフィルターが含まれる場合、サブスクリプションを再初期化する必要があります。
互換性レベルが 90RTM 未満のマージ パブリケーションの場合、アーティクルは特別な注意をせずに、サブスクリプションの初期同期の前に削除できます。 1 つ以上のサブスクリプションが同期された後にアーティクルが削除された場合、サブスクリプションの削除、再作成、および同期が必要です。
スナップショット パブリケーションまたはトランザクション パブリケーションの場合、アーティクルはサブスクリプションを作成する前に、特別な事項を考慮せずに削除できます。 1 つ以上のサブスクリプションが作成された後にアーティクルが削除された場合、サブスクリプションの削除、再作成、および同期が必要です。 サブスクリプションの削除の詳細については、「パブリケーションとsp_dropsubscription のサブスクライブ(Transact-SQL)」を参照してください。 sp_dropsubscription を使用すると、サブスクリプション全体ではなく、サブスクリプションの 1 つのアーティクルを削除できます。
パブリケーションからアーティクルを削除するには、アーティクルを削除し、パブリケーションの新しいスナップショットを作成します。 アーティクルを削除すると、現在のスナップショットは無効になります。したがって新しいスナップショットを作成する必要があります。
- 文書からアーティクルを削除するには、「アーティクルの追加とパブリケーションからのアーティクルの削除 (SQL Server Management Studio)」または「アーティクルの削除」を参照してください。
パブリケーションからアーティクルを削除したら、パブリケーションの新しいスナップショット (およびパラメーター化されたフィルターを使用したマージ パブリケーションの場合は、すべてのパーティション) を作成する必要があります。
新しいスナップショットを作成するには、「 Create and Apply the Initial Snapshot」を参照してください。
パラメーター化されたフィルターを使用してマージ パブリケーションに新しいスナップショットを作成するには、「パラメーター化されたフィルターを使用したパブリケーションのスナップショットの作成」 (パラメーター化されたフィルターを使用してマージ パブリケーションのスナップショットを作成する) を参照してください。
前述のように、場合によっては、アーティクルを削除するために、サブスクリプションの削除、再作成、および同期が必要になる場合があります。 詳細については、「パブリケーションのサブスクライブ」と「データの同期」を参照してください。
参照
データとデータベース オブジェクトのパブリッシュ
サブスクリプションの再初期化
パブリケーション データベースでのスキーマの変更