次の方法で共有


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 ステートメントを使用して、レプリケーションを手動で削除できます。 この記事には、このプロセスで使用できるシステム ストアド プロシージャに関する情報が含まれています。

Note

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

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

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

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

Note

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

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

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

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

  • 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 システム ストアド プロシージャを使用して、パブリケーションとパブリケーションに関連付けられているアーティクルを削除できます。 パブリッシャー側のパブリケーション データベースでストアド プロシージャを実行する必要があります。
  • sp_dropmergepublication: sp_dropmergepublication システム ストアド プロシージャを使用して、マージ パブリケーションと、マージ パブリケーションに関連付けられているスナップショット エージェントを削除できます。 パブリケーションに関連付けられているアーティクルも削除されます。 パブリッシャー側のパブリケーション データベースでストアド プロシージャを実行する必要があります。
  • 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 システム ストアド プロシージャを使用して、登録済みサーバーからサブスクライバーの指定を削除できます。 ストアド プロシージャは、サブスクライバーのレジストリ エントリを削除します。 ストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

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

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

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

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

関連情報

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