sp_dropmergearticle (Transact-SQL)

Gäller för:SQL Server

Tar bort en artikel från en sammanslagningspublikation. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

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 ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

Namnet på publikationen där man ska lämna en artikel. @publication är sysname, utan standard.

[ @article = ] Inte en artikel'

Namnet på artikeln som ska tas bort från den aktuella publikationen. @article är sysname, utan standard. Om all, tas alla befintliga artiklar i den angivna sammanslagningspublikationen bort. Även om @article är all, måste publiceringen ändå tas bort separat från artikeln.

[ @ignore_distributor = ] ignore_distributor

Anger om denna lagrade procedur utförs utan att ansluta till distributören. @ignore_distributor är bit, med en standard på 0.

[ @reserved = ] reserverad

Reserverad för framtida användning. @reserved är bit, med en standard på 0.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Aktiverar eller inaktiverar möjligheten att få en ögonblicksbild ogiltig. @force_invalidate_snapshot är bit, med standardvärdet 0.

  • 0 specificerar att ändringar i sammanslagningsartikeln inte gör att snapshoten blir ogiltig.

  • 1 betyder att ändringar i sammanslagningsartikeln kan göra snapshoten ogiltig, och om så är fallet ger ett värde i 1 tillstånd för att den nya snapshoten ska kunna uppträda.

[ @force_reinit_subscription = ] force_reinit_subscription

Erkänner att om man lägger bort artikeln måste befintliga prenumerationer ominitialiseras. @force_reinit_subscription är lite, med standardvärdet 0.

  • 0 specificerar att borttagning av artikeln inte leder till att prenumerationen initialiseras igen.

  • 1 innebär att om artikeln tas bort får befintliga prenumerationer att initieras om, och ger tillåtelse för prenumerationsominitiering.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Anmärkningar

sp_dropmergearticle används vid sammanslagningsreplikation. För mer information om att ta bort artiklar, se Lägg till artiklar till och Ta bort artiklar från befintliga publikationer.

Att köra sp_dropmergearticle för att ta bort en artikel från en publikation tar inte bort objektet från publikationsdatabasen eller motsvarande objekt från prenumerationsdatabasen. Använd DROP <object> det för att ta bort dessa objekt manuellt om det behövs.

Permissions

Endast medlemmar av sysadmin-rollen med fast server eller db_owner fast databasroll kan köra sp_dropmergearticle.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Ta bort artiklar från en sammanslagningspublikation

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';

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

EXECUTE 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.
EXECUTE 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.
EXECUTE 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.
EXECUTE sp_dropmergearticle
    @publication = @publication,
    @article = @table3,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

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

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