Partager via


Supprimer un article

Cette rubrique explique comment supprimer un article dans SQL Server 2012 à l'aide de Transact-SQL ou des objets RMO (Replication Management Objects). Pour plus d'informations sur les conditions dans lesquelles un article peut être supprimé et pour savoir si la suppression d'un article requiert un nouvel instantané ou la réinitialisation des abonnements, consultez Ajouter et supprimer des articles de publications existantes.

Dans cette rubrique

  • Pour supprimer un article à l'aide de :

    Transact-SQL

    Objets RMO (Replication Management Objects)

Utilisation de Transact-SQL

Les articles peuvent être supprimés par programme en utilisant des procédures stockées de réplication. Les procédures stockées utilisées dépendent du type de publication auquel l'article appartient.

Pour supprimer un article d'une publication transactionnelle ou d'instantané

  1. Exécutez sp_droparticle (Transact-SQL) pour supprimer un article spécifié par @article d'une publication spécifiée par @publication. Affectez la valeur 1 à @force_invalidate_snapshot.

  2. (Facultatif) Pour supprimer entièrement l'objet publié de la base de données, exécutez la commande DROP <objectname> au niveau du serveur de publication dans la base de données de publication.

Pour supprimer un article d'une publication de fusion

  1. Exécutez sp_dropmergearticle (Transact-SQL) pour supprimer un article spécifié par @article d'une publication spécifiée par @publication. Si nécessaire, affectez la valeur 1 à @force_invalidate_snapshot et la valeur 1 à @force_reinit_subscription.

  2. (Facultatif) Pour supprimer entièrement l'objet publié de la base de données, exécutez la commande DROP <objectname> au niveau du serveur de publication dans la base de données de publication.

Exemples (Transact-SQL)

L'exemple suivant supprime un article d'une publication transactionnelle. Dans la mesure où cette modification invalide l'instantané existant, la valeur 1 est affectée au paramètre @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

L'exemple suivant supprime deux articles d'une publication de fusion. Dans la mesure où ces modifications invalident l'instantané existant, la valeur 1 est affectée au paramètre @force_invalidate_snapshot spécifié.

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

Icône de flèche utilisée avec le lien Retour en haut[Top]

Utilisation d'objets RMO (Replication Management Objects)

Vous pouvez supprimer des articles par programme à l'aide des objets RMO (Replication Management Objects). Les classes RMO à utiliser pour supprimer un article dépendent du type de publication auquel l'article appartient.

Pour supprimer un article qui appartient à une publication transactionnelle ou d'instantané.

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection.

  2. Créez une instance de la classe TransArticle.

  3. Définissez les propriétés Name, PublicationName et DatabaseName.

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  5. Vérifiez la propriété IsExistingObject pour vérifier que l'article existe. Si la valeur de cette propriété est false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. Appelez la méthode Remove.

  7. Fermez toutes les connexions.

Pour supprimer un article qui appartient à une publication de fusion

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection.

  2. Créez une instance de la classe MergeArticle.

  3. Définissez les propriétés Name, PublicationName et DatabaseName.

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  5. Vérifiez la propriété IsExistingObject pour vérifier que l'article existe. Si la valeur de cette propriété est false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. Appelez la méthode Remove.

  7. Fermez toutes les connexions.

Icône de flèche utilisée avec le lien Retour en haut[Top]

Voir aussi

Concepts

Ajouter et supprimer des articles de publications existantes

Concepts liés aux procédures stockées système de réplication