Vorgehensweise: Löschen einer Veröffentlichung (Replikationsprogrammierung mit Transact-SQL)

Veröffentlichungen können programmgesteuert mit gespeicherten Replikationsprozeduren gelöscht werden. Welche gespeicherten Prozeduren Sie verwenden, hängt vom Typ der zu löschenden Veröffentlichung ab.

HinweisHinweis

Durch das Löschen einer Veröffentlichung werden weder die veröffentlichten Objekte aus der Veröffentlichungsdatenbank noch die zugehörigen Objekte aus der Abonnementdatenbank entfernt. Verwenden Sie den DROP <object>-Befehl, um diese Objekte bei Bedarf manuell zu entfernen.

So löschen Sie eine Snapshot- oder Transaktionsveröffentlichung.

  1. Führen Sie eines der folgenden Verfahren aus:

    • Um eine einzelne Veröffentlichung zu löschen, führen Sie sp_droppublication auf dem Verleger für die Veröffentlichungsdatenbank aus.

    • Führen Sie sp_removedbreplication auf dem Verleger aus, um alle Veröffentlichungen in und alle Replikationsobjekte aus einer veröffentlichten Datenbank zu entfernen. Geben Sie für @type den Wert tran an. (Optional) Wenn nicht auf den Verteiler zugegriffen werden kann oder wenn der Status der Datenbank fehlerverdächtig oder offline ist, geben Sie für @force den Wert 1 an. (Optional) Geben Sie für @dbname den Namen der Datenbank an, wenn sp_removedbreplication an der Veröffentlichungsdatenbank nicht ausgeführt wird.

      HinweisHinweis

      Bei Angabe des Werts 1 für @force bleiben möglicherweise replikationsbezogene Veröffentlichungsobjekte in der Datenbank zurück.

  2. (Optional) Wenn diese Datenbank keine anderen Veröffentlichungen besitzt, führen Sie sp_replicationdboption (Transact-SQL) aus, um die Veröffentlichung der aktuellen Datenbank mit der Snapshot- oder der Transaktionsreplikation zu deaktivieren.

  3. (Optional) Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_subscription_cleanup aus, um alle verbleibenden Replikationsmetadaten aus der Abonnementdatenbank zu entfernen.

So löschen Sie eine Mergeveröffentlichung

  1. Führen Sie eines der folgenden Verfahren aus:

    • Um eine einzelne Veröffentlichung zu löschen, führen Sie sp_dropmergepublication (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.

    • Führen Sie sp_removedbreplication auf dem Verleger aus, um alle Veröffentlichungen in und alle Replikationsobjekte aus einer veröffentlichten Datenbank zu entfernen. Geben Sie für @type den Wert merge an. (Optional) Wenn nicht auf den Verteiler zugegriffen werden kann oder wenn der Status der Datenbank fehlerverdächtig oder offline ist, geben Sie für @force den Wert 1 an. (Optional) Geben Sie für @dbname den Namen der Datenbank an, wenn sp_removedbreplication an der Veröffentlichungsdatenbank nicht ausgeführt wird.

      HinweisHinweis

      Bei Angabe des Werts 1 für @force bleiben möglicherweise replikationsbezogene Veröffentlichungsobjekte in der Datenbank zurück.

  2. (Optional) Wenn diese Datenbank keine anderen Veröffentlichungen besitzt, führen Sie sp_replicationdboption (Transact-SQL) aus, um die Veröffentlichung der aktuellen Datenbank mit der Mergereplikation zu deaktivieren.

  3. (Optional) Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_mergesubscription_cleanup (Transact-SQL) aus, um alle verbleibenden Replikationsmetadaten aus der Abonnementdatenbank zu entfernen.

Beispiel

Dieses Beispiel zeigt, wie eine Transaktionsveröffentlichung entfernt und die Transaktionsveröffentlichung für eine Datenbank deaktiviert wird. In diesem Beispiel wird davon ausgegangen, dass alle Abonnements vorher entfernt wurden. Weitere Informationen finden Sie unter Vorgehensweise: Löschen eines Pullabonnements (Replikationsprogrammierung mit Transact-SQL) oder Vorgehensweise: Löschen eines Pushabonnements (Replikationsprogrammierung mit Transact-SQL).

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

Dieses Beispiel zeigt, wie eine Mergeveröffentlichung entfernt und die Mergeveröffentlichung für eine Datenbank deaktiviert wird. In diesem Beispiel wird davon ausgegangen, dass alle Abonnements vorher entfernt wurden. Weitere Informationen finden Sie unter Vorgehensweise: Löschen eines Pullabonnements (Replikationsprogrammierung mit Transact-SQL) oder Vorgehensweise: Löschen eines Pushabonnements (Replikationsprogrammierung mit Transact-SQL).

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks2008R2'

-- Remove the merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO