Löschen eines Artikels

Gilt für: SQL Server Azure SQL Managed Instance

In diesem Thema wird beschrieben, wie ein Artikel in SQL Server mit Transact-SQL oder Replikationsverwaltungsobjekten (RMO) gelöscht wird. Informationen über die Bedingungen, unter denen Artikel gelöscht werden können, und darüber, ob das Löschen eines Artikels eine neue Momentaufnahme oder die erneute Initialisierung der Abonnements erforderlich macht, finden Sie unter Hinzufügen und Löschen von Artikeln aus vorhandenen Veröffentlichungen.

In diesem Thema

Verwenden von Transact-SQL

Artikel können programmgesteuert mit gespeicherten Replikationsprozeduren gelöscht werden. Die verwendeten gespeicherten Prozeduren hängen vom Typ der Veröffentlichung ab, zu der der Artikel gehört.

So löschen Sie einen Artikel aus einer Momentaufnahme- oder Transaktionsveröffentlichung

  1. Führen Sie sp_droparticle (Transact-SQL) aus, um einen durch @article angegebenen Artikel aus der durch @publication angegebenen Veröffentlichung zu löschen. Geben Sie den Wert 1 für @force_invalidate_snapshotan.

  2. (Optional) Um das veröffentlichte Objekt vollständig aus der Veröffentlichungsdatenbank zu löschen, führen Sie den Befehl DROP <objectname> auf dem Verleger für die Veröffentlichungsdatenbank aus.

So löschen Sie einen Artikel aus einer Mergeveröffentlichung

  1. Führen Sie sp_dropmergearticle (Transact-SQL) aus, um einen durch @article angegebenen Artikel aus der durch @publication angegebenen Veröffentlichung zu löschen. Geben Sie dafür, falls notwendig, den Wert 1 für @force_invalidate_snapshot und den Wert 1 für @force_reinit_subscriptionan.

  2. (Optional) Um das veröffentlichte Objekt vollständig aus der Veröffentlichungsdatenbank zu löschen, führen Sie den Befehl DROP <objectname> auf dem Verleger für die Veröffentlichungsdatenbank aus.

Beispiele (Transact-SQL)

Im folgenden Beispiel wird ein Artikel aus einer Transaktionsveröffentlichung gelöscht. Da durch diese Änderung die vorhandene Momentaufnahme ungültig wird, wird der Wert 1 für den Parameter @force_invalidate_snapshot angegeben.

DECLARE @publication AS sysname;  
DECLARE @article AS sysname;  
SET @publication = N'AdvWorksProductTran';   
SET @article = N'Product';   
  
-- Drop the transactional article.  
USE [AdventureWorks]  
EXEC sp_droparticle   
  @publication = @publication,   
  @article = @article,  
  @force_invalidate_snapshot = 1;  
GO  

Im folgenden Beispiel werden zwei Artikel aus einer Mergeveröffentlichung gelöscht. Da durch diese Änderungen die vorhandene Momentaufnahme ungültig wird, wird der Wert 1 für den Parameter @force_invalidate_snapshot angegeben.

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 [AdventureWorks]  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article1,  
  @force_invalidate_snapshot = 1;  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article2,  
  @force_invalidate_snapshot = 1;  
GO  

Verwenden von Replikationsverwaltungsobjekten (RMO)

Sie können Artikel mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert löschen. Welche RMO-Klassen Sie zum Löschen eines Artikels verwenden, hängt vom Typ der Veröffentlichung ab, zu der der Artikel gehört.

So löschen Sie einen Artikel, der zu einer Momentaufnahme- oder Transaktionsveröffentlichung gehört

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der TransArticle-Klasse.

  3. Legen Sie die Eigenschaften Name, PublicationNameund DatabaseName fest.

  4. Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob der Artikel vorhanden ist. Wenn der Wert dieser Eigenschaft falselautet, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.

  6. Rufen Sie die Remove-Methode auf.

  7. Trennen Sie alle Verbindungen.

So löschen Sie einen Artikel, der zu einer Mergeveröffentlichung gehört

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergeArticle-Klasse.

  3. Legen Sie die Eigenschaften Name, PublicationNameund DatabaseName fest.

  4. Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob der Artikel vorhanden ist. Wenn der Wert dieser Eigenschaft falselautet, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.

  6. Rufen Sie die Remove-Methode auf.

  7. Trennen Sie alle Verbindungen.