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'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks]
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'AdventureWorks'

-- Remove the merge publication.
USE [AdventureWorks]
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