Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: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>.
Разрешения
Могут выполняться только члены предопределенных ролей сервера sysadmin или sp_dropmergearticle db_owner предопределенных ролей базы данных.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества 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';
EXECUTE sp_dropmergearticle
@publication = @publication,
@article = @article1,
@force_invalidate_snapshot = 1;
EXECUTE 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.
EXECUTE 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.
EXECUTE 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.
EXECUTE sp_dropmergearticle
@publication = @publication,
@article = @table3,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the SalesOrderHeader table.
EXECUTE sp_dropmergearticle
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the Employee table.
EXECUTE sp_dropmergearticle
@publication = @publication,
@article = @table1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO