Supprimer un article
Cette rubrique explique comment supprimer un article dans SQL Server 2014 à l’aide de Transact-SQL ou de Replication Management Objects (RMO). 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.
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é
Exécutez sp_droparticle (Transact-SQL) pour supprimer un article, spécifié par @article, d’une publication spécifiée par @publication. Spécifiez la valeur 1 pour @force_invalidate_snapshot.
(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
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, spécifiez la valeur 1 pour @force_invalidate_snapshot et la valeur 1 pour @force_reinit_subscription.
(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. Étant donné que cette modification invalide la instantané existante, la valeur 1 est spécifiée pour le 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. Étant donné que ces modifications invalident le instantané existant, la valeur 1 est spécifiée pour le paramètre @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
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é.
Créez une connexion au serveur de publication en utilisant la classe ServerConnection .
Créez une instance de la classe TransArticle.
Définissez les propriétés Name, PublicationNameet DatabaseName .
Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .
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.Appelez la méthode Remove .
Fermez toutes les connexions.
Pour supprimer un article qui appartient à une publication de fusion
Créez une connexion au serveur de publication en utilisant la classe ServerConnection .
Créez une instance de la classe MergeArticle.
Définissez les propriétés Name, PublicationNameet DatabaseName .
Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .
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.Appelez la méthode Remove .
Fermez toutes les connexions.
Voir aussi
Ajouter et supprimer des articles de publications existantes
Replication System Stored Procedures Concepts