sp_dropmergearticle (Transact-SQL)
適用対象: 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'
アーティクルを削除するパブリケーションの名前。 @publication は sysname で、既定値はありません。
[ @article = ] N'article'
指定したパブリケーションから削除するアーティクルの名前。 @article は sysname で、既定値はありません。 all
場合、指定したマージ パブリケーション内のすべての既存のアーティクルが削除されます。 @articleがall
場合でも、パブリケーションはアーティクルとは別に削除する必要があります。
[ @ignore_distributor = ] ignore_distributor
ディストリビューターに接続せずにこのストアド プロシージャを実行するかどうかを示します。 @ignore_distributor は bit で、既定値は 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_subscription は bit で、既定値は 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
B. マージ結合フィルターと関連記事を削除する
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