sp_dropmergearticle (Transact-SQL)
Область применения: SQL Server
Удаляет статью из публикации слиянием. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_dropmergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @reserved = ] reserved ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @ignore_merge_metadata = ] ignore_merge_metadata ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации, из которой нужно удалить статью. @publication — sysname без значения по умолчанию.
[ @article = ] N'article'
Имя статьи, отбрасываемой из данной публикации. @article — sysname без значения по умолчанию. Если all
все существующие статьи в указанной публикации слиянием удаляются. Даже если @article , all
публикация по-прежнему должна быть удалена отдельно от статьи.
[ @ignore_distributor = ] ignore_distributor
Указывает, исполняется ли данная хранимая процедура без подключения к распространителю. @ignore_distributor имеет значение по умолчанию0
.
[ @reserved = ] зарезервировано
Зарезервировано для последующего использования. @reserved бит с значением по умолчанию0
.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Определяет возможность недействительности моментального снимка. @force_invalidate_snapshot бит с значением по умолчанию0
.
0
указывает, что изменения в статье слияния не вызывают недопустимого моментального снимка.1
означает, что изменения в статье слияния могут привести к недопустимому моментальному снимку, и если это так, значение1
дает разрешение на создание нового моментального снимка.
[ @force_reinit_subscription = ] force_reinit_subscription
Подтверждает, что удаление статьи требует повторной инициализации существующих подписок. @force_reinit_subscription бит с значением по умолчанию0
.
0
указывает, что удаление статьи не приводит к повторной инициализации подписки.1
означает, что удаление статьи приводит к повторной инициализации существующих подписок и дает разрешение на повторную инициализацию подписки.
[ @ignore_merge_metadata = ] ignore_merge_metadata
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_dropmergearticle
используется в репликации слиянием. Дополнительные сведения об удалении статей см. в разделе "Добавление статей в существующие публикации" и "Удаление статей".
sp_dropmergearticle
При удалении статьи из публикации объект не удаляется из базы данных публикации или соответствующего объекта из базы данных подписки. При необходимости эти объекты могут быть удалены вручную при помощи инструкции DROP <object>
.
Разрешения
Могут выполняться sp_dropmergearticle
только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.
А. Удаление статей из публикации слиянием
USE [AdventureWorks2022];
GO
DECLARE @publication AS SYSNAME;
DECLARE @article1 AS SYSNAME;
DECLARE @article2 AS SYSNAME;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail';
SET @article2 = N'SalesOrderHeader';
EXEC sp_dropmergearticle @publication = @publication,
@article = @article1,
@force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle @publication = @publication,
@article = @article2,
@force_invalidate_snapshot = 1;
GO
B. Удаление фильтров соединения слиянием и связанных статей
USE [AdventureWorks2022];
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;
-- Drop 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;
-- Drop the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table3,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the Employee table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO