Rimuovere manualmente la replica in SQL Server

Questo articolo illustra come rimuovere manualmente la replica in SQL Server.

Versione originale del prodotto: SQL Server
Numero KB originale: 324401

Riepilogo

Questo articolo descrive come rimuovere una replica da un computer che esegue Microsoft SQL Server. Per rimuovere una replica, è necessario eliminare le sottoscrizioni, le pubblicazioni e il server di distribuzione configurato per la replica. È possibile rimuovere la replica eseguendo lo script Transact-SQL generato da SQL Server Enterprise Manager o SQL Server Management Studio. Tuttavia, se non è possibile generare lo script Transact-SQL per rimuovere la replica, è possibile rimuovere manualmente la replica usando stored procedure di sistema e altre istruzioni Transact-SQL. Questo articolo contiene informazioni sulle stored procedure di sistema che possono essere usate in questo processo.

Nota

Per altre informazioni sulle stored procedure di sistema indicate in questo articolo, vedere SQL Server Documentazione online.

Rimuovere manualmente una replica

È possibile rimuovere manualmente una replica usando stored procedure di sistema e altre istruzioni Transact-SQL. Per rimuovere completamente una replica, seguire questa procedura:

  1. Eliminare tutte le sottoscrizioni configurate per la replica.
  2. Eliminare tutte le pubblicazioni configurate per la replica.
  3. Eliminare il server di distribuzione configurato per la replica.

Nota

Le stored procedure di sistema per ogni tipo di replica sono elencate più avanti in questo articolo. Usare le stored procedure appropriate, a seconda del tipo di replica che si desidera rimuovere.

Eliminare le sottoscrizioni

Per eliminare le sottoscrizioni da un'istanza di SQL Server, è possibile usare le stored procedure seguenti e i parametri appropriati:

  • sp_dropsubscription : è possibile utilizzare la sp_dropsubscription stored procedure di sistema per eliminare le sottoscrizioni a un determinato articolo, pubblicazione o set di sottoscrizioni nel server di pubblicazione. È necessario eseguire la stored procedure nel server di pubblicazione nel database di pubblicazione.

  • sp_droppullsubscription : è possibile utilizzare la sp_droppullsubscription stored procedure di sistema per eliminare una sottoscrizione nel database corrente del Sottoscrittore. È necessario eseguire la stored procedure nel Sottoscrittore nel database della sottoscrizione pull.

  • sp_dropmergesubscription: è possibile utilizzare la sp_dropmergesubscription stored procedure di sistema per eliminare una sottoscrizione a una pubblicazione di tipo merge e alla agente di merge associata alla pubblicazione di tipo merge. È necessario eseguire la stored procedure nel server di pubblicazione nel database di pubblicazione.

  • sp_dropmergepullsubscription : è possibile usare la sp_dropmergepullsubscription stored procedure di sistema per eliminare una sottoscrizione pull di tipo merge. È necessario eseguire la stored procedure nel Sottoscrittore nel database della sottoscrizione pull.

Eliminare sottoscrizioni snapshot

Per eliminare una sottoscrizione push a tutti gli articoli per una pubblicazione snapshot, eseguire lo script seguente nel server di pubblicazione:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

Per eliminare una sottoscrizione di snapshot pull a tutti gli articoli per una pubblicazione snapshot, seguire questa procedura:

  1. Eseguire lo script SQL seguente nel Sottoscrittore:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'
    
  2. Eseguire lo script seguente in Publisher:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication=N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'all'
    

Eliminare una sottoscrizione transazionale

Per eliminare una sottoscrizione push a tutti gli articoli per una pubblicazione transazionale, eseguire lo script seguente in Publisher:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

Per eliminare una sottoscrizione pull a tutti gli articoli per una pubblicazione transazionale, seguire questa procedura:

  1. Eseguire lo script seguente nel Sottoscrittore:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'
    
  2. Eseguire lo script seguente in Publisher:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication =N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'<Destination database name>'
    

Eliminare una sottoscrizione di tipo merge

Per eliminare una sottoscrizione push, eseguire lo script seguente nel server di pubblicazione:

USE < **Publication database name** >
GO
EXEC sp_dropmergesubscription @publication = N'<Publication name>', @subscriber = N'<Publisher server name>', @subscriber_db = N'<Subscription database name>', @subscription_type = N'push'

Per eliminare una sottoscrizione pull, seguire questa procedura:

  1. Eseguire lo script seguente nel Sottoscrittore:

    USE < **Subscription database name** >
    GO
    EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'
    
  2. Eseguire lo script seguente in Publisher:

    USE < **Publication database name** >
    GO
    EXEC sp_dropmergesubscription @subscription_type = N'pull', @publication = N'<Publication name>', @subscriber = N'<Subscriber server name>', @subscriber_db = N'<Subscription database name>'
    

Eliminare le pubblicazioni

Dopo aver rimosso tutte le sottoscrizioni che sottoscrivono una pubblicazione, è possibile rimuovere la pubblicazione. Dopo aver rimosso le pubblicazioni nel database di pubblicazione, è necessario impostare l'opzione del database di replica per il database di pubblicazione su false. Per rimuovere una pubblicazione, è possibile utilizzare le stored procedure di sistema seguenti:

  • sp_droppublication: è possibile utilizzare la sp_droppublication stored procedure di sistema per eliminare una pubblicazione e gli articoli associati alla pubblicazione. È necessario eseguire la stored procedure in Publisher nel database di pubblicazione.
  • sp_dropmergepublication: è possibile utilizzare la sp_dropmergepublication stored procedure di sistema per eliminare una pubblicazione di tipo merge e il agente di snapshot associato alla pubblicazione di tipo merge. Vengono eliminati anche gli articoli associati alla pubblicazione. È necessario eseguire la stored procedure in Publisher nel database di pubblicazione.
  • sp_replicationdboption: è possibile utilizzare la sp_replicationdboption stored procedure di sistema per impostare un'opzione del database di replica per il database corrente. È necessario eseguire la stored procedure nel server di pubblicazione.

Per eliminare una pubblicazione snapshot, eseguire lo script seguente nel server di pubblicazione:

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

Per eliminare una pubblicazione transazionale, eseguire lo script seguente nel server di pubblicazione:

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

Per eliminare una pubblicazione di tipo merge, eseguire lo script seguente nel server di pubblicazione:

USE < **Publication database name** >
GO
EXEC sp_dropmergepublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value = N'false'

Eliminare il server di distribuzione

Dopo aver eliminato tutte le sottoscrizioni e le pubblicazioni, è possibile eliminare il server di distribuzione pertinente. Tuttavia, prima di eliminare il server di distribuzione, è necessario eliminare la designazione del sottoscrittore dal server di pubblicazione. A tale scopo, usare le stored procedure seguenti:

  • sp_dropsubscriber: è possibile utilizzare la sp_dropsubscriber stored procedure di sistema per eliminare la designazione del sottoscrittore da un server registrato. La stored procedure rimuove la voce del Registro di sistema per il sottoscrittore. La stored procedure viene eseguita in Publisher nel database di pubblicazione.

  • sp_dropdistributor: è possibile usare la sp_dropdistributor stored procedure di sistema per rimuovere il server di distribuzione. La stored procedure viene eseguita nel server di distribuzione. Per eliminare la designazione del sottoscrittore dal server di pubblicazione, eseguire lo script seguente nel server di pubblicazione:

    USE master
    GO
    EXEC sp_dropsubscriber @subscriber = N'<Subscriber server name>', @reserved = N'drop_subscriptions'
    

    Per rimuovere il server di distribuzione, eseguire lo script seguente nel server di distribuzione:

    USE master
    GO
    EXEC sp_dropdistributor @no_checks = 1
    

Usare le stored procedure

Quando si rimuove la replica, è anche possibile usare le stored procedure seguenti:

  • sp_removedbreplication: è possibile utilizzare la sp_removedbreplication stored procedure di sistema per rimuovere tutti gli oggetti di replica da un database senza aggiornare i dati nel server di distribuzione. È necessario eseguire la stored procedure in Publisher nel database di pubblicazione o nel Sottoscrittore nel database di sottoscrizione. Di seguito è riportata la sintassi per questa stored procedure:

    sp_removedbreplication '<Database name>'
    
  • sp_droparticle: è possibile utilizzare la sp_droparticle stored procedure di sistema per eliminare un articolo da una pubblicazione snapshot o dalla pubblicazione transazionale. Non è possibile rimuovere un articolo se esistono ancora una o più sottoscrizioni all'articolo pubblicato. È necessario eseguire la stored procedure in Publisher nel database di pubblicazione. Di seguito è riportata la sintassi per questa stored procedure:

    sp_droparticle @publication = N'<Publication name>', @article = N'<Article name>', @force_invalidate_snapshot = 1
    

Riferimenti

Per altre informazioni, vedere gli argomenti seguenti nella documentazione online di SQL Server: