次の方法で共有


アーティクルの削除

適用対象: SQL Server Azure SQL Managed Instance

このトピックでは、SQL Server で Transact-SQL またはレプリケーション管理オブジェクト (RMO) を使用して、アーティクルを削除する方法について説明します。 アーティクルを削除できる条件と、アーティクルを削除するために新しいスナップショットやサブスクリプションの再初期化が必要かどうかについては、「Add Articles to and Drop Articles from Existing Publications」(既存のパブリケーションでのアーティクルの追加と削除) をご覧ください。

このトピックの内容

Transact-SQL の使用

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

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

  1. sp_droparticle (Transact-SQL) を実行して、@article で指定されているアーティクルを @publication で指定されている出版物から削除します。 @force_invalidate_snapshot1を指定します。

  2. (省略可) パブリッシュされたオブジェクトをデータベースから完全に削除するには、パブリッシャーのパブリケーション データベースに対して DROP <objectname> コマンドを実行します。

アーティクルをマージ パブリケーションから削除するには

  1. sp_dropmergearticle (Transact-SQL) を実行して、@article で指定されているアーティクルを @publication で指定されている出版物から削除します。 必要に応じて、 @force_invalidate_snapshot1 を指定し、 @force_reinit_subscription1を指定します。

  2. (省略可) パブリッシュされたオブジェクトをデータベースから完全に削除するには、パブリッシャーのパブリケーション データベースに対して DROP <objectname> コマンドを実行します。

例 (Transact-SQL)

次の例では、トランザクション パブリケーションからアーティクルを削除します。 この変更によって既存のスナップショットが無効になるため、 @force_invalidate_snapshot パラメーターに 1 が指定されます。

DECLARE @publication AS sysname;  
DECLARE @article AS sysname;  
SET @publication = N'AdvWorksProductTran';   
SET @article = N'Product';   
  
-- Drop the transactional article.  
USE [AdventureWorks]  
EXEC sp_droparticle   
  @publication = @publication,   
  @article = @article,  
  @force_invalidate_snapshot = 1;  
GO  

次の例では、マージ パブリケーションから 2 つのアーティクルを削除します。 この変更によって既存のスナップショットが無効になるため、 @force_invalidate_snapshot パラメーターに 1 が指定されます。

DECLARE @publication AS sysname;  
DECLARE @article1 AS sysname;  
DECLARE @article2 AS sysname;  
SET @publication = N'AdvWorksSalesOrdersMerge';  
SET @article1 = N'SalesOrderDetail';   
SET @article2 = N'SalesOrderHeader';   
  
-- Remove articles from a merge publication.  
USE [AdventureWorks]  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article1,  
  @force_invalidate_snapshot = 1;  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article2,  
  @force_invalidate_snapshot = 1;  
GO  

レプリケーション管理オブジェクト (RMO) の使用

アーティクルは、レプリケーション管理オブジェクト (RMO) を使用してプログラムから削除できます。 アーティクルを削除する際に使用する RMO のクラスは、アーティクルが属しているパブリケーションの種類によって異なります。

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

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. TransArticle クラスのインスタンスを作成します。

  3. NamePublicationNameDatabaseName の各プロパティを設定します。

  4. 手順 1. で作成した接続を ConnectionContext プロパティに設定します。

  5. IsExistingObject プロパティを調べて、アーティクルが存在していることを確認します。 このプロパティの値が falseの場合、手順 3. で指定したアーティクルのプロパティが正しく定義されていないか、アーティクルが存在していません。

  6. Remove メソッドを呼び出します。

  7. すべての接続を閉じます。

マージ パブリケーションのアーティクルを削除するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. MergeArticle クラスのインスタンスを作成します。

  3. NamePublicationNameDatabaseName の各プロパティを設定します。

  4. 手順 1. で作成した接続を ConnectionContext プロパティに設定します。

  5. IsExistingObject プロパティを調べて、アーティクルが存在していることを確認します。 このプロパティの値が falseの場合、手順 3. で指定したアーティクルのプロパティが正しく定義されていないか、アーティクルが存在していません。

  6. Remove メソッドを呼び出します。

  7. すべての接続を閉じます。