How to: Disable Publishing and Distribution (Replication Transact-SQL Programming)

Die Veröffentlichung und die Verteilung können mit gespeicherten Replikationsprozeduren programmgesteuert deaktiviert werden.

So deaktivieren Sie die Veröffentlichung und Verteilung

  1. Beenden Sie alle replikationsbezogenen Aufträge. Eine Auflistung der Auftragsnamen finden Sie im Abschnitt "Agentsicherheit mit SQL Server-Agent" unter Sicherheitsmodell des Replikations-Agents.

  2. Führen Sie für jeden Abonnenten der Abonnementdatenbank sp_removedbreplication aus, um Replikationsobjekte aus der Datenbank zu entfernen. Diese gespeicherte Prozedur entfernt keine Replikationsaufträge vom Verteiler.

  3. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_removedbreplication aus, um Replikationsobjekte aus der Datenbank zu entfernen.

  4. Wenn der Verleger einen Remoteverteiler verwendet, führen Sie sp_dropdistributor aus.

  5. Führen Sie auf dem Verteiler sp_dropdistpublisher aus. Diese gespeicherte Prozedur sollte für jeden auf dem Verteiler registrierten Verleger einmal ausgeführt werden.

  6. Führen Sie auf dem Verteiler sp_dropdistributiondb aus, um die Verteilerdatenbank zu löschen. Diese gespeicherte Prozedur sollte für jede Verteilungsdatenbank auf dem Verteiler einmal ausgeführt werden. Dadurch werden außerdem alle der Verteilungsdatenbank zugeordnete Warteschlangenlese-Agentaufträge entfernt.

  7. Führen Sie auf dem Verteiler sp_dropdistributor aus, um die Verteilerbezeichnung vom Server zu entfernen.

    HinweisHinweis

    Wenn nicht alle Replikationsveröffentlichungs- und Verteilungsobjekte gelöscht wurden, bevor Sie sp_dropdistpublisher und sp_dropdistributor ausführen, geben diese Prozeduren einen Fehler zurück. Damit alle replikationsbezogenen Objekte gelöscht werden, wenn ein Verleger oder ein Verteiler gelöscht wird, muss der @no_checks-Parameter auf 1 festgelegt sein. Wenn ein Verleger oder Verteiler offline oder nicht erreichbar ist, kann der @ignore_distributor-Parameter auf 1 festgelegt werden, damit der Verleger/Verteiler gelöscht werden kann: Jedoch müssen verbleibende Veröffentlichungs- und Verteilungsobjekte manuell entfernt werden.

Beispiel

Dieses Beispielskript entfernt Replikationsobjekte aus der Abonnementdatenbank.

-- Remove replication objects from the subscription database on MYSUB.
DECLARE @subscriptionDB AS sysname
SET @subscriptionDB = N'AdventureWorksReplica'

-- Remove replication objects from a subscription database (if necessary).
USE master
EXEC sp_removedbreplication @subscriptionDB
GO

Dieses Beispielskript deaktiviert die Veröffentlichung und die Verteilung auf einem Server, der ein Verleger und Verteiler ist, und löscht die Verteilungsdatenbank.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Disable publishing and distribution.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB as sysname;
SET @distributionDB = N'distribution';
SET @publisher = $(DistPubServer);
SET @publicationDB = N'AdventureWorks';

-- Disable the publication database.
USE [AdventureWorks]
EXEC sp_removedbreplication @publicationDB;

-- Remove the registration of the local Publisher at the Distributor.
USE master
EXEC sp_dropdistpublisher @publisher;

-- Delete the distribution database.
EXEC sp_dropdistributiondb @distributionDB;

-- Remove the local server as a Distributor.
EXEC sp_dropdistributor;
GO