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
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.
(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.
(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
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.
(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.
(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