Share via


Eliminazione di un articolo

In questo argomento viene descritto come eliminare un articolo in SQL Server 2012 tramite Transact-SQL o RMO (Replication Management Objects). 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 Aggiunta ed eliminazione di articoli a e da pubblicazioni esistenti.

Contenuto dell'argomento

  • Per eliminare un articolo tramite:

    Transact-SQL

    Oggetti RMO (Replication Management Objects)

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, indicato da @article, da una pubblicazione, indicata 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, indicato da @article, da una pubblicazione, indicata 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 [AdventureWorks2012]
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

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table3,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the Employee table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table1,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

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, PublicationName e 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, PublicationName e 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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Concetti

Aggiunta ed eliminazione di articoli a e da pubblicazioni esistenti

Concetti di base relativi alle stored procedure del sistema di replica