Condividi tramite


Procedura: Eliminazione di una pubblicazione (programmazione Transact-SQL della replica)

È possibile eliminare pubblicazioni a livello di programmazione tramite le stored procedure di replica. Le stored procedure utilizzate dipendono dal tipo di pubblicazione eliminato.

Nota

L'eliminazione di una pubblicazione non comporta la rimozione degli oggetti pubblicati dal database di pubblicazione o degli oggetti corrispondenti dal database di sottoscrizione. Utilizzare il comando DROP <object> per rimuovere manualmente questi oggetti, se necessario.

Per eliminare una pubblicazione snapshot o transazionale

  1. Eseguire una delle operazioni seguenti:

    • Per eliminare una singola pubblicazione, eseguire sp_droppublication nel database di pubblicazione del server di pubblicazione.

    • Per eliminare tutte le pubblicazioni e rimuovere tutti gli oggetti di replica da un database pubblicato, eseguire sp_removedbreplication nel server di pubblicazione. Specificare il valore tran per @type. (Facoltativo) Se il server di distribuzione non è accessibile oppure se lo stato del database è sospetto o non in linea, specificare il valore 1 per @force. (Facoltativo) Specificare il nome del database per @dbname se sp_removedbreplication non viene eseguita nel database di pubblicazione.

      Nota

      Specificando il valore 1 per @force, è possibile che nel database rimangano oggetti di pubblicazione correlati alla replica.

  2. (Facoltativo) Se il database non contiene altre pubblicazioni, eseguire sp_replicationdboption (Transact-SQL) per disattivare la pubblicazione del database corrente utilizzando la replica snapshot o transazionale.

  3. (Facoltativo) Nel database di sottoscrizione del Sottoscrittore eseguire sp_subscription_cleanup per rimuovere gli eventuali metadati di replica rimanenti nel database di sottoscrizione.

Per eliminare una pubblicazione di tipo merge

  1. Eseguire una delle operazioni seguenti:

    • Per eliminare una singola pubblicazione, eseguire sp_dropmergepublication (Transact-SQL) nel database di pubblicazione del server di pubblicazione.

    • Per eliminare tutte le pubblicazioni e rimuovere tutti gli oggetti di replica da un database pubblicato, eseguire sp_removedbreplication nel server di pubblicazione. Specificare il valore merge per @type. (Facoltativo) Se il server di distribuzione non è accessibile oppure se lo stato del database è sospetto o non in linea, specificare il valore 1 per @force. (Facoltativo) Specificare il nome del database per @dbname se sp_removedbreplication non viene eseguita nel database di pubblicazione.

      Nota

      Specificando il valore 1 per @force, è possibile che nel database rimangano oggetti di pubblicazione correlati alla replica.

  2. (Facoltativo) Se il database non contiene altre pubblicazioni, eseguire sp_replicationdboption (Transact-SQL) per disattivare la pubblicazione del database corrente utilizzando la replica di tipo merge.

  3. (Facoltativo) Nel database di sottoscrizione del Sottoscrittore eseguire sp_mergesubscription_cleanup (Transact-SQL) per rimuovere gli eventuali metadati di replica rimanenti nel database di sottoscrizione.

Esempio

In questo esempio viene illustrato come rimuovere una pubblicazione transazionale e disattivare la pubblicazione transazionale per un database. Si presuppone che in precedenza siano state rimosse tutte le sottoscrizioni. Per ulteriori informazioni, vedere Procedura: Eliminazione di una sottoscrizione pull (programmazione Transact-SQL della replica) o Procedura: Eliminazione di una sottoscrizione push (programmazione Transact-SQL della replica).

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

In questo esempio viene illustrato come rimuovere una pubblicazione di tipo merge e disattivare la pubblicazione di tipo merge per un database. Si presuppone che in precedenza siano state rimosse tutte le sottoscrizioni. Per ulteriori informazioni, vedere Procedura: Eliminazione di una sottoscrizione pull (programmazione Transact-SQL della replica) o Procedura: Eliminazione di una sottoscrizione push (programmazione Transact-SQL della replica).

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