パブリケーションを削除する方法 (レプリケーション Transact-SQL プログラミング)

パブリケーションは、レプリケーションのストアド プロシージャを使用してプログラムから削除できます。どのストアド プロシージャを使用するかは、削除するパブリケーションの種類によって異なります。

注意

パブリケーションを削除しても、パブリッシュされたオブジェクトはパブリケーション データベースから削除されず、対応するオブジェクトはサブスクリプション データベースから削除されません。これらのオブジェクトは、必要に応じて DROP <object> コマンドを使用し、手動で削除します。

スナップショット パブリケーションまたはトランザクション パブリケーションを削除するには

  1. 次のいずれかの操作を行います。

    • 単一のパブリケーションを削除するには、パブリッシャのパブリケーション データベースで sp_droppublication を実行します。

    • すべてのパブリケーションを削除し、パブリッシュされたデータベースからすべてのレプリケーション オブジェクトを削除するには、パブリッシャから sp_removedbreplication を実行します。@type には tran を指定します。(省略可) ディストリビュータにアクセスできない場合や、ディストリビュータのデータベース ステータスがオフラインになっている可能性がある場合は、@force1 を指定します。(省略可) パブリケーション データベースに対して sp_removedbreplication を実行しない場合は、@dbname にデータベースの名前を指定します。

      注意

      @force1 を指定すると、レプリケーション関連のパブリッシング オブジェクトがデータベース上に残されます。

  2. (省略可) このデータベースに他のパブリケーションが存在しない場合は、sp_replicationdboption (Transact-SQL) を実行し、スナップショット レプリケーションまたはトランザクション レプリケーションを使用した、現在のデータベースのパブリケーションを無効にします。

  3. (省略可) サブスクライバのサブスクリプション データベースで sp_subscription_cleanup を実行して、サブスクリプション データベースに残っているレプリケーション メタデータをすべて削除します。

マージ パブリケーションを削除するには

  1. 次のいずれかの操作を行います。

    • 単一のパブリケーションを削除するには、パブリッシャのパブリケーション データベースで sp_dropmergepublication (Transact-SQL) を実行します。

    • すべてのパブリケーションを削除し、パブリッシュされたデータベースからすべてのレプリケーション オブジェクトを削除するには、パブリッシャで sp_removedbreplication を実行します。@type には merge を指定します。(省略可) ディストリビュータにアクセスできない場合や、ディストリビュータのデータベース ステータスがオフラインになっている可能性がある場合は、@force1 を指定します。(省略可) パブリケーション データベースに対して sp_removedbreplication を実行しない場合は、@dbname にデータベースの名前を指定します。

      注意

      @force1 を指定すると、レプリケーション関連のパブリッシング オブジェクトがデータベース上に残されます。

  2. (省略可) このデータベースに他のパブリケーションが存在しない場合は、sp_replicationdboption (Transact-SQL) を実行し、マージ レプリケーションを使用した、現在のデータベースのパブリケーションを無効にします。

  3. (省略可) サブスクライバのサブスクリプション データベースで sp_mergesubscription_cleanup (Transact-SQL) を実行して、サブスクリプション データベースに残っているレプリケーション メタデータをすべて削除します。

使用例

次の例は、トランザクション パブリケーションを削除し、データベースのトランザクション パブリッシングを無効にする方法を示しています。すべてのサブスクリプションがあらかじめ削除されていることを想定しています。詳細については、「プル サブスクリプションを削除する方法 (レプリケーション Transact-SQL プログラミング)」または「プッシュ サブスクリプションを削除する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

次の例は、マージ パブリケーションを削除し、データベースのマージ パブリッシングを無効にする方法を示しています。すべてのサブスクリプションがあらかじめ削除されていることを想定しています。詳細については、「プル サブスクリプションを削除する方法 (レプリケーション Transact-SQL プログラミング)」または「プッシュ サブスクリプションを削除する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks2008R2'

-- Remove the merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO