SQL Serverでレプリケーションを手動で削除する

この記事では、SQL Serverでレプリケーションを手動で削除する方法について説明します。

元の製品バージョン: SQL Server
元の KB 番号: 324401

概要

この記事では、Microsoft SQL Serverを実行しているコンピューターからレプリケーションを削除する方法について説明します。 レプリケーションを削除するには、レプリケーション用に構成されているサブスクリプション、パブリケーション、ディストリビューターを削除する必要があります。 レプリケーションを削除するには、SQL Server Enterprise Manager またはSQL Server Management Studioによって生成された Transact-SQL スクリプトを実行します。 ただし、レプリケーションを削除する Transact-SQL スクリプトを生成できない場合は、システム ストアド プロシージャやその他の Transact-SQL ステートメントを使用してレプリケーションを手動で削除できます。 この記事には、このプロセスで使用できるシステム ストアド プロシージャに関する情報が含まれています。

注:

この記事で説明するシステム ストアド プロシージャの詳細については、「オンライン ブックのSQL Server」を参照してください。

レプリケーションを手動で削除する

システム ストアド プロシージャやその他の Transact-SQL ステートメントを使用して、レプリケーションを手動で削除できます。 レプリケーションを完全に削除するには、次の手順に従います。

  1. レプリケーション用に構成されているすべてのサブスクリプションを削除します。
  2. レプリケーション用に構成されているすべてのパブリケーションを削除します。
  3. レプリケーション用に構成されているディストリビューターを削除します。

注:

レプリケーションの種類ごとのシステム ストアド プロシージャについては、この記事の後半で説明します。 削除するレプリケーションの種類に応じて、適切なストアド プロシージャを使用します。

サブスクリプションを削除する

SQL Serverのインスタンスからサブスクリプションを削除するには、次のストアド プロシージャと適切なパラメーターを使用します。

  • sp_dropsubscription : システム ストアド プロシージャを sp_dropsubscription 使用して、パブリッシャー上の特定のアーティクル、パブリケーション、または一連のサブスクリプションにサブスクリプションを削除できます。 パブリケーション データベースのパブリッシャー サーバーでストアド プロシージャを実行する必要があります。

  • sp_droppullsubscription : システム ストアド プロシージャを sp_droppullsubscription 使用して、サブスクライバーの現在のデータベースでサブスクリプションを削除できます。 ストアド プロシージャは、プル サブスクリプション データベースのサブスクライバーで実行する必要があります。

  • sp_dropmergesubscription: システム ストアド プロシージャをsp_dropmergesubscription使用して、マージ パブリケーションとマージ パブリケーションに関連付けられているマージ エージェントにサブスクリプションを削除できます。 パブリケーション データベースのパブリッシャー サーバーでストアド プロシージャを実行する必要があります。

  • sp_dropmergepullsubscription : システム ストアド プロシージャを sp_dropmergepullsubscription 使用して、マージ プル サブスクリプションを削除できます。 ストアド プロシージャは、プル サブスクリプション データベースのサブスクライバーで実行する必要があります。

スナップショットサブスクリプションを削除する

スナップショット パブリケーションのすべてのアーティクルにプッシュ サブスクリプションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

スナップショット パブリケーションのすべてのアーティクルにプル スナップショット サブスクリプションを削除するには、次の手順に従います。

  1. サブスクライバーで次の SQL スクリプトを実行します。

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'
    
  2. Publisher で次のスクリプトを実行します。

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication=N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'all'
    

トランザクション サブスクリプションを削除する

トランザクション パブリケーションのすべてのアーティクルにプッシュ サブスクリプションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

トランザクション パブリケーションのすべてのアーティクルにプル サブスクリプションを削除するには、次の手順に従います。

  1. サブスクライバーで次のスクリプトを実行します。

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'
    
  2. Publisher で次のスクリプトを実行します。

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication =N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'<Destination database name>'
    

マージ サブスクリプションを削除する

プッシュ サブスクリプションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_dropmergesubscription @publication = N'<Publication name>', @subscriber = N'<Publisher server name>', @subscriber_db = N'<Subscription database name>', @subscription_type = N'push'

プル サブスクリプションを削除するには、次の手順に従います。

  1. サブスクライバーで次のスクリプトを実行します。

    USE < **Subscription database name** >
    GO
    EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'
    
  2. Publisher で次のスクリプトを実行します。

    USE < **Publication database name** >
    GO
    EXEC sp_dropmergesubscription @subscription_type = N'pull', @publication = N'<Publication name>', @subscriber = N'<Subscriber server name>', @subscriber_db = N'<Subscription database name>'
    

パブリケーションを削除する

パブリケーションをサブスクライブするすべてのサブスクリプションを削除した後、パブリケーションを削除できます。 パブリケーション データベースでパブリケーションを削除した後、パブリケーション データベースのレプリケーション データベース オプションを false に設定する必要があります。 パブリケーションを削除するには、次のシステム ストアド プロシージャを使用します。

  • sp_droppublication: システム ストアド プロシージャを sp_droppublication 使用して、パブリケーションとパブリケーションに関連付けられているアーティクルを削除できます。 パブリケーション データベースの Publisher でストアド プロシージャを実行する必要があります。
  • sp_dropmergepublication: システム ストアド プロシージャをsp_dropmergepublication使用して、マージ パブリケーションとマージ パブリケーションに関連付けられているスナップショット エージェントを削除できます。 パブリケーションに関連付けられているアーティクルも削除されます。 パブリケーション データベースの Publisher でストアド プロシージャを実行する必要があります。
  • sp_replicationdboption: システム ストアド プロシージャを sp_replicationdboption 使用して、現在のデータベースのレプリケーション データベース オプションを設定できます。 パブリッシャー サーバーでストアド プロシージャを実行する必要があります。

スナップショット パブリケーションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

トランザクション パブリケーションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

マージ パブリケーションを削除するには、Publisher で次のスクリプトを実行します。

USE < **Publication database name** >
GO
EXEC sp_dropmergepublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value = N'false'

ディストリビューターを削除する

すべてのサブスクリプションとパブリケーションを削除した後、関連するディストリビューターを削除できます。 ただし、ディストリビューターを削除する前に、パブリッシャーからサブスクライバー指定を削除する必要があります。 そのためには、次のストアド プロシージャを使用します。

  • sp_dropsubscriber: システム ストアド プロシージャを sp_dropsubscriber 使用して、登録済みサーバーからサブスクライバー指定を削除できます。 ストアド プロシージャは、サブスクライバーのレジストリ エントリを削除します。 ストアド プロシージャは、パブリケーション データベースの Publisher で実行されます。

  • sp_dropdistributor: システム ストアド プロシージャを sp_dropdistributor 使用して、ディストリビューターを削除できます。 ストアド プロシージャはディストリビューターで実行されます。 パブリッシャーからサブスクライバーの指定を削除するには、Publisher で次のスクリプトを実行します。

    USE master
    GO
    EXEC sp_dropsubscriber @subscriber = N'<Subscriber server name>', @reserved = N'drop_subscriptions'
    

    ディストリビューターを削除するには、ディストリビューターで次のスクリプトを実行します。

    USE master
    GO
    EXEC sp_dropdistributor @no_checks = 1
    

ストアド プロシージャを使用する

レプリケーションを削除するときに、次のストアド プロシージャを使用することもできます。

  • sp_removedbreplication: システム ストアド プロシージャを sp_removedbreplication 使用すると、ディストリビューターでデータを更新せずに、データベースからすべてのレプリケーション オブジェクトを削除できます。 パブリケーション データベースの Publisher またはサブスクリプション データベースのサブスクライバーでストアド プロシージャを実行する必要があります。 このストアド プロシージャの構文を次に示します。

    sp_removedbreplication '<Database name>'
    
  • sp_droparticle: システム ストアド プロシージャをsp_droparticle使用して、スナップショット パブリケーションまたはトランザクション パブリケーションからアーティクルを削除できます。 発行されたアーティクルに対する 1 つ以上のサブスクリプションがまだ存在する場合、アーティクルを削除することはできません。 パブリケーション データベースの Publisher でストアド プロシージャを実行する必要があります。 このストアド プロシージャの構文を次に示します。

    sp_droparticle @publication = N'<Publication name>', @article = N'<Article name>', @force_invalidate_snapshot = 1
    

関連情報

詳細については、オンライン ブックの次のトピックSQL Server参照してください。