Freigeben über


sp_dropmergearticle (Transact-SQL)

Gilt für: SQL Server

Entfernt einen Artikel aus einer Mergeveröffentlichung. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

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

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, aus der ein Artikel gelöscht werden soll. @publication ist "sysname" ohne Standard.

[ @article = ] N'article'

Der Name des Artikels, der aus der angegebenen Publikation entfernt werden soll. @article ist "sysname" ohne Standard. Wenn allalle vorhandenen Artikel in der angegebenen Zusammenführungsveröffentlichung entfernt werden. Auch wenn @article ist all, muss die Publikation weiterhin getrennt vom Artikel abgelegt werden.

[ @ignore_distributor = ] ignore_distributor

Gibt an, ob diese gespeicherte Prozedur ausgeführt wird, ohne eine Verbindung mit dem Verteiler herzustellen. @ignore_distributor ist bit, mit einem Standardwert von 0.

[ @reserved = ] reserviert

Für die zukünftige Verwendung reserviert. @reserved ist bit, mit einem Standardwert von 0.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Aktiviert oder deaktiviert die Möglichkeit, eine Momentaufnahme für ungültig zu erklären. @force_invalidate_snapshot ist bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass Änderungen am Seriendruckartikel nicht dazu führen, dass die Momentaufnahme ungültig ist.

  • 1 bedeutet, dass Änderungen am Seriendruckartikel dazu führen können, dass die Momentaufnahme ungültig ist, und wenn dies der Fall ist, erhält ein Wert der 1 Berechtigung für die neue Momentaufnahme.

[ @force_reinit_subscription = ] force_reinit_subscription

Bestätigt, dass durch das Löschen des Artikels eine erneute Initialisierung der vorhandenen Abonnements erforderlich wird. @force_reinit_subscription ist bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass das Ablegen des Artikels nicht dazu führt, dass das Abonnement erneut initialisiert wird.

  • 1 bedeutet, dass das Ablegen des Artikels bewirkt, dass vorhandene Abonnements erneut initialisiert werden, und erteilt die Berechtigung für die Erneute Initialisierung des Abonnements.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_dropmergearticle wird in der Seriendruckreplikation verwendet. Weitere Informationen zum Ablegen von Artikeln finden Sie unter Hinzufügen von Artikeln zu und Ablegen von Artikeln aus vorhandenen Publikationen.

Wenn sp_dropmergearticle Sie ausführen, um einen Artikel aus einer Publikation abzulegen, wird das Objekt nicht aus der Publikationsdatenbank oder dem entsprechenden Objekt aus der Abonnementdatenbank entfernt. Verwenden Sie DROP <object>, um diese Objekte bei Bedarf manuell zu entfernen.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder die db_owner feste Datenbankrolle können ausgeführt werden sp_dropmergearticle.

Beispiele

Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022- oder AdventureWorksDW2022-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.

A. Entfernen von Artikeln aus einer Zusammenführungsveröffentlichung

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