Condividi tramite


Eliminazione di un articolo

Si applica a: SQL Server e Istanza gestita di SQL di Azure

Questo argomento descrive come eliminare un articolo in SQL Server tramite Transact-SQL o Replication Management Objects (RMO). Per informazioni sulle condizioni per l'eliminazione degli articoli e sulla necessità di creare un nuovo snapshot o reinizializzare le sottoscrizioni in seguito all'eliminazione di un articolo, vedere Aggiungere ed eliminare articoli in pubblicazioni esistenti.

Contenuto dell'articolo

Utilizzo di Transact-SQL

È possibile eliminare gli articoli a livello di programmazione tramite le stored procedure di replica. Le stored procedure utilizzate dipenderanno dal tipo di pubblicazione a cui appartiene l'articolo.

Per eliminare un articolo da una pubblicazione snapshot o transazionale

  1. Eseguire sp_droparticle (Transact-SQL) per eliminare un articolo, specificato da @article, da una pubblicazione, specificata da @publication. Specificare il valore 1 per @force_invalidate_snapshot.

  2. (Facoltativo) Per rimuovere completamente l'oggetto pubblicato dal database, eseguire il comando DROP <objectname> nel database di pubblicazione del server di pubblicazione.

Per eliminare un articolo da una pubblicazione di tipo merge

  1. Eseguire sp_dropmergearticle (Transact-SQL) per eliminare un articolo, specificato da @article, da una pubblicazione, specificata da @publication. Se necessario, specificare un valore 1 per @force_invalidate_snapshot e il valore 1 per @force_reinit_subscription.

  2. (Facoltativo) Per rimuovere completamente l'oggetto pubblicato dal database, eseguire il comando DROP <objectname> nel database di pubblicazione del server di pubblicazione.

Esempi (Transact-SQL)

Nell'esempio seguente un articolo viene eliminato da una pubblicazione transazionale. Perché questa modifica rende non valido lo snapshot esistente, viene specificato il valore 1 per il parametro @force_invalidate_snapshot .

DECLARE @publication AS sysname;  
DECLARE @article AS sysname;  
SET @publication = N'AdvWorksProductTran';   
SET @article = N'Product';   
  
-- Drop the transactional article.  
USE [AdventureWorks]  
EXEC sp_droparticle   
  @publication = @publication,   
  @article = @article,  
  @force_invalidate_snapshot = 1;  
GO  

Nell'esempio seguente due articoli vengono eliminati da una pubblicazione di tipo merge. Perché queste modifiche rendono non valido lo snapshot esistente, viene specificato il valore 1 per il parametro @force_invalidate_snapshot .

DECLARE @publication AS sysname;  
DECLARE @article1 AS sysname;  
DECLARE @article2 AS sysname;  
SET @publication = N'AdvWorksSalesOrdersMerge';  
SET @article1 = N'SalesOrderDetail';   
SET @article2 = N'SalesOrderHeader';   
  
-- Remove articles from a merge publication.  
USE [AdventureWorks]  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article1,  
  @force_invalidate_snapshot = 1;  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article2,  
  @force_invalidate_snapshot = 1;  
GO  

Utilizzo di RMO (Replication Management Objects)

È possibile eliminare articoli a livello di programmazione tramite gli oggetti RMO (Replication Management Objects). Le classi RMO utilizzate per l'eliminazione di un articolo dipendono dal tipo di pubblicazione cui appartiene l'articolo.

Per eliminare un articolo che appartiene a una pubblicazione snapshot o transazionale

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe TransArticle.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .

  5. Controllare la proprietà IsExistingObject per verificare che l'articolo esista. Se il valore di questa proprietà è false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. Chiamare il metodo Remove .

  7. Chiudere tutte le connessioni.

Per eliminare un articolo che appartiene a una pubblicazione di tipo merge

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe MergeArticle.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .

  5. Controllare la proprietà IsExistingObject per verificare che l'articolo esista. Se il valore di questa proprietà è false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. Chiamare il metodo Remove .

  7. Chiudere tutte le connessioni.