Procedura: Disattivazione della pubblicazione e della distribuzione (programmazione Transact-SQL della replica)

La pubblicazione e la distribuzione della replica possono essere disattivate a livello di programmazione tramite le stored procedure di replica.

Per disattivare la pubblicazione e la distribuzione

  1. Interrompere tutti i processi correlati alla replica. Per un elenco di nomi di processo, vedere la sezione "Protezione agente in SQL Server" sezione di Modello di protezione dell'agente di replica.

  2. Nel database di sottoscrizione di ogni Sottoscrittore eseguire sp_removedbreplication per rimuovere gli oggetti di replica dal database. Questa stored procedure non rimuoverà i processi di replica nel server di distribuzione.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_removedbreplication per rimuovere gli oggetti di replica dal database.

  4. Se il database di pubblicazione utilizza un server di distribuzione remoto, eseguire sp_dropdistributor.

  5. Nel server di distribuzione eseguire sp_dropdistpublisher. Questa stored procedure deve essere eseguita una volta per ogni server di pubblicazione registrato nel server di distribuzione.

  6. Nel database di distribuzione eseguire sp_dropdistributiondb per eliminare il database di distribuzione. Questa stored procedure deve essere eseguita una volta per ogni server di pubblicazione registrato nel server di distribuzione. Verranno anche rimossi gli eventuali processi dell'agente di lettura coda associati al database di distribuzione.

  7. Nel server di distribuzione eseguire sp_dropdistributor per rimuovere la designazione di server di distribuzione dal server.

    Nota

    Se prima dell'esecuzione di sp_dropdistpublisher e sp_dropdistributor non vengono eliminati tutti gli oggetti di pubblicazione e distribuzione della replica, queste procedure restituiranno un errore. Per eliminare tutti gli oggetti correlati alla replica quando un server di pubblicazione o un server di distribuzione viene eliminato, è necessario impostare il parametro @no_checks su 1. Se un server di pubblicazione o un server di distribuzione non è in linea o non è raggiungibile, il parametro @ignore_distributor può essere impostato su 1 in modo che possa essere eliminato. Tuttavia, gli eventuali oggetti di pubblicazione e distribuzione rimasti devono essere rimossi manualmente.

Esempio

In questo esempio di script vengono rimossi oggetti della replica dal database di sottoscrizione.

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

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

In questo esempio di script vengono disattivate la pubblicazione e la distribuzione in un server che è un server di pubblicazione e un server di distribuzione e il database di distribuzione viene eliminato.

-- 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'AdventureWorks2008R2';

-- Disable the publication database.
USE [AdventureWorks2008R2]
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