次の方法で共有


sp_dropmergearticle (Transact-SQL)

適用対象: SQL サーバー

アーティクルをマージ パブリケーションから削除します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

sp_dropmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @reserved = ] reserved ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @ignore_merge_metadata = ] ignore_merge_metadata ]
[ ; ]

引数

[ @publication = ] N'publication'

アーティクルを削除するパブリケーションの名前。 @publicationsysname で、既定値はありません。

[ @article = ] N'article'

指定したパブリケーションから削除するアーティクルの名前。 @articlesysname で、既定値はありません。 all場合、指定したマージ パブリケーション内のすべての既存のアーティクルが削除されます。 @articleall場合でも、パブリケーションはアーティクルとは別に削除する必要があります。

[ @ignore_distributor = ] ignore_distributor

ディストリビューターに接続せずにこのストアド プロシージャを実行するかどうかを示します。 @ignore_distributorbit で、既定値は 0 です。

[ @reserved = ] 予約済み

将来の使用のために予約済み。 @reservedビットで、既定値は 0 です。

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

スナップショットを無効にする機能を有効または無効にします。 @force_invalidate_snapshotビットで、既定値は 0 です。

  • 0 は、マージ アーティクルに対する変更によってスナップショットが無効になることがないように指定します。

  • 1 は、マージ アーティクルに対する変更によってスナップショットが無効になる可能性があることを意味し、その場合は、 1 の値によって新しいスナップショットが実行されるアクセス許可が付与されます。

[ @force_reinit_subscription = ] force_reinit_subscription

アーティクルを削除したとき、既存のサブスクリプションが必ず再初期化されるようにします。 @force_reinit_subscriptionbit で、既定値は 0 です。

  • 0 は、アーティクルを削除してもサブスクリプションが再初期化されないように指定します。

  • 1 は、アーティクルを削除すると、既存のサブスクリプションが再初期化され、サブスクリプションの再初期化が実行されるアクセス許可が付与されることを意味します。

[ @ignore_merge_metadata = ] ignore_merge_metadata

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

sp_dropmergearticle はマージ レプリケーションで使用されます。 アーティクルの削除の詳細については、「 アーティクルの既存のパブリケーションへのアーティクルの追加と削除を参照してください。

パブリケーションからアーティクルを削除する sp_dropmergearticle を実行しても、パブリケーション データベースからオブジェクトが削除されたり、サブスクリプション データベースから対応するオブジェクトが削除されたりすることはありません。 必要であれば DROP <object> を使用して、手動でこれらのオブジェクトを削除します。

アクセス許可

sysadmin固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーのみが、sp_dropmergearticleを実行できます。

この記事の Transact-SQL コード サンプルは AdventureWorks2022 または AdventureWorksDW2022 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。

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

USE [AdventureWorks2022];
GO

DECLARE @publication AS SYSNAME;
DECLARE @article1 AS SYSNAME;
DECLARE @article2 AS SYSNAME;

SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail';
SET @article2 = N'SalesOrderHeader';

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article1,
    @force_invalidate_snapshot = 1;

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article2,
    @force_invalidate_snapshot = 1;
GO
USE [AdventureWorks2022];
GO

DECLARE @publication AS SYSNAME;
DECLARE @table1 AS SYSNAME;
DECLARE @table2 AS SYSNAME;
DECLARE @table3 AS SYSNAME;
DECLARE @salesschema AS SYSNAME;
DECLARE @hrschema AS SYSNAME;
DECLARE @filterclause AS NVARCHAR(1000);

SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter @publication = @publication,
    @article = @table3,
    @filtername = N'SalesOrderDetail_SalesOrderHeader',
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter @publication = @publication,
    @article = @table2,
    @filtername = N'SalesOrderHeader_Employee',
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table3,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table2,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the Employee table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table1,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;
GO