Eliminazione di un articoloDelete an Article

In questo argomento viene descritto come eliminare un articolo in SQL Server 2017SQL Server 2017 tramite Transact-SQLTransact-SQL o RMO (Replication Management Objects).This topic describes how to delete an article in SQL Server 2017SQL Server 2017 by using Transact-SQLTransact-SQL or 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.For information about the conditions under which articles can be dropped and whether dropping an article requires a new snapshot or the reinitialization of subscriptions, see Add Articles to and Drop Articles from Existing Publications.

Contenuto dell'argomentoIn This Topic

Utilizzo di Transact-SQL Using Transact-SQL

È possibile eliminare gli articoli a livello di programmazione tramite le stored procedure di replica.Articles can be deleted programmatically using replication stored procedures. Le stored procedure utilizzate dipenderanno dal tipo di pubblicazione a cui appartiene l'articolo.The stored procedures that you use depend on the type of publication to which the article belongs.

Per eliminare un articolo da una pubblicazione snapshot o transazionaleTo delete an article from a snapshot or transactional publication

  1. Eseguire sp_droparticle (Transact-SQL) per eliminare un articolo, indicato da @article, da una pubblicazione, indicata da @publication.Execute sp_droparticle (Transact-SQL) to delete an article, specified by @article, from a publication, specified by @publication. Specificare il valore 1 per @force_invalidate_snapshot.Specify a value of 1 for @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.(Optional) To remove the published object from the database entirely, execute the DROP <objectname> command at the Publisher on the publication database.

Per eliminare un articolo da una pubblicazione di tipo mergeTo delete an article from a merge publication

  1. Eseguire sp_dropmergearticle (Transact-SQL) per eliminare un articolo, indicato da @article, da una pubblicazione, indicata da @publication.Execute sp_dropmergearticle (Transact-SQL) to delete an article, specified by @article, from a publication, specified by @publication. Se necessario, specificare un valore 1 per @force_invalidate_snapshot e il valore 1 per @force_reinit_subscription.If necessary, specify a value of 1 for @force_invalidate_snapshot and a value of 1 for @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.(Optional) To remove the published object from the database entirely, execute the DROP <objectname> command at the Publisher on the publication database.

Esempi (Transact-SQL) Examples (Transact-SQL)

Nell'esempio seguente un articolo viene eliminato da una pubblicazione transazionale.The following example deletes an article from a transactional publication. Perché questa modifica rende non valido lo snapshot esistente, viene specificato il valore 1 per il parametro @force_invalidate_snapshot .Because this change invalidates the existing snapshot, a value of 1 is specified for the @force_invalidate_snapshot parameter.

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.The following example deletes two articles from a merge publication. Perché queste modifiche rendono non valido lo snapshot esistente, viene specificato il valore 1 per il parametro @force_invalidate_snapshot .Because these changes invalidate the existing snapshot, a value of 1 is specified for the @force_invalidate_snapshot parameter.

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) Using Replication Management Objects (RMO)

È possibile eliminare articoli a livello di programmazione tramite gli oggetti RMO (Replication Management Objects).You can delete articles programmatically by using Replication Management Objects (RMO). Le classi RMO utilizzate per l'eliminazione di un articolo dipendono dal tipo di pubblicazione cui appartiene l'articolo.The RMO classes you use to delete an article depend on the type of publication to which the article belongs.

Per eliminare un articolo che appartiene a una pubblicazione snapshot o transazionaleTo delete an article that belongs to a snapshot or transactional publication

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe TransArticle .Create an instance of the TransArticle class.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .Set the Name, PublicationName, and DatabaseName properties.

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .Set the connection from step 1 for the ConnectionContext property.

  5. Controllare la proprietà IsExistingObject per verificare che l'articolo esista.Check the IsExistingObject property to verify that the article exists. 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.If the value of this property is false, either the article properties in step 3 were defined incorrectly or the article does not exist.

  6. Chiamare il metodo Remove .Call the Remove method.

  7. Chiudere tutte le connessioni.Close all connections.

Per eliminare un articolo che appartiene a una pubblicazione di tipo mergeTo delete an article that belongs to a merge publication

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe MergeArticle .Create an instance of the MergeArticle class.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .Set the Name, PublicationName, and DatabaseName properties.

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .Set the connection from step 1 for the ConnectionContext property.

  5. Controllare la proprietà IsExistingObject per verificare che l'articolo esista.Check the IsExistingObject property to verify that the article exists. 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.If the value of this property is false, either the article properties in step 3 were defined incorrectly or the article does not exist.

  6. Chiamare il metodo Remove .Call the Remove method.

  7. Chiudere tutte le connessioni.Close all connections.

Vedere ancheSee Also

Aggiungere ed eliminare articoli in pubblicazioni esistenti Add Articles to and Drop Articles from Existing Publications
Replication System Stored Procedures ConceptsReplication System Stored Procedures Concepts