sp_dropmergearticle (Transact-SQL)

Entfernt einen Artikel aus einer Mergeveröffentlichung. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_dropmergearticle [ @publication= ] 'publication'
        , [ @article= ] '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=] 'publication'
    Der Name der Veröffentlichung, aus der ein Artikel gelöscht werden soll. publicationist vom Datentyp sysname und hat keinen Standardwert.

  • [ @article=] 'article'
    Der Name des Artikels, der aus der angegebenen Veröffentlichung gelöscht werden soll. articleist vom Datentyp sysname und hat keinen Standardwert. Mit all werden alle vorhandenen Artikel in der angegebenen Mergeveröffentlichung entfernt. Selbst wenn all für article angegeben wird, muss die Veröffentlichung separat aus dem Artikel gelöscht werden.

  • [ @ignore_distributor = ] ignore_distributor
    Gibt an, ob diese gespeicherte Prozedur ausgeführt wird, ohne dass eine Verbindung mit dem Verteiler hergestellt wird. ignore_distributor ist vom Datentyp bit und hat den Standardwert 0.

  • [ @reserved=] reserved
    Ist für zukünftige Zwecke reserviert. reserved ist vom Datentyp nvarchar(20) und hat den Standardwert NULL.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Aktiviert oder deaktiviert die Möglichkeit, einen Snapshot für ungültig zu erklären. force_invalidate_snapshot ist vom Datentyp bit und hat den Standardwert 0.

    Durch 0 wird angegeben, dass der Snapshot nicht durch Änderungen am Mergeartikel ungültig werden kann.

    Der Wert 1 gibt an, dass Änderungen am Mergeartikel bewirken können, dass der Snapshot ungültig wird. Wenn dies zutrifft, erteilt der Wert 1 die Berechtigung für das Auftreten des neuen Snapshots.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Bestätigt, dass das Löschen des Artikels die erneute Initialisierung vorhandener Abonnements erfordert. force_reinit_subscription ist vom Datentyp bit und hat den Standardwert 0.

    Durch 0 wird angegeben, dass das Abonnement nicht durch das Löschen des Artikels erneut initialisiert werden kann.

    Der Wert 1 gibt an, dass vorhandene Abonnements durch das Löschen des Artikels erneut initialisiert werden können. Außerdem wird mit diesem Wert die Berechtigung zur erneuten Initialisierung der Abonnements erteilt.

  • [ @ignore_merge_metadata= ] ignore_merge_metadata
    Nur interne Verwendung.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_dropmergefilter wird für die Mergereplikation verwendet. Weitere Informationen zum Löschen von Artikeln finden Sie unter Hinzufügen und Löschen von Artikeln bei vorhandenen Veröffentlichungen.

Durch das Ausführen von sp_dropmergearticle zum Löschen eines Artikels aus einer Veröffentlichung wird das Objekt nicht aus der Veröffentlichungsdatenbank bzw. das entsprechende Objekt nicht aus der Abonnementdatenbank entfernt. Verwenden Sie DROP <object>, um diese Objekte bei Bedarf manuell zu entfernen.

Beispiel

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;

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

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

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

-- Drops the article for the Employee table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table1,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
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'; 

-- Remove articles from a merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article1,
  @force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article2,
  @force_invalidate_snapshot = 1;
GO

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_dropmergearticle ausführen.