sp_droparticle (Transact-SQL)
从快照发布或事务发布中删除一个项目。如果项目存在一个或多个订阅,则不能删除该项目。此存储过程在发布服务器的发布数据库中执行。
语法
sp_droparticle [ @publication= ] 'publication'
, [ @article= ] 'article'
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @force_invalidate_snapshot= ] force_invalidate_snapshot ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @from_drop_publication = ] from_drop_publication ]
参数
- [ @publication=] 'publication'
包含要删除的项目的发布名称。publication 的数据类型为 sysname,无默认值。
- [ @article = ] 'article'
要删除的项目的名称。article 的数据类型为 sysname,无默认值。
- [ @ignore_distributor = ] ignore_distributor
仅限内部使用。
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
确认此存储过程所执行的操作是否会使现有快照失效。force_invalidate_snapshot 的数据类型为 bit,默认值为 0。0 指定对项目所做的更改不会导致快照失效。如果该存储过程检测到更改确实需要新的快照,则会发生错误,并且不执行任何更改。
1 指定对项目所做的更改可能会导致快照失效,如果存在需要新快照的现有订阅,则向其授予将现有快照标记为过时并生成新快照的权限。
[ @publisher= ] 'publisher'
指定一个非 Microsoft SQL Server 发布服务器。publisher 是 sysname,默认值为 NULL。注意: 更改 SQL Server 发布服务器上的项目属性时,不应使用 publisher。
- [ @from_drop_publication= ] from_drop_publication
仅限内部使用。
返回代码值
0(成功)或 1(失败)
备注
sp_droparticle 用于快照复制和事务复制。
对于水平筛选的项目,sp_droparticle 将在 sysarticles (Transact-SQL) 表中检查项目的 type 列,以确定是否也应删除某个视图或筛选器。如果视图或筛选是自动生成的,则将其与项目一起删除。如果是手动创建的,则不将其删除。
执行 sp_droparticle 从发布中删除项目时,不会删除发布数据库中的对象,也不会删除订阅数据库中的相应对象。如果需要,请使用 DROP <object>
手动删除这些对象。
权限
只有 sysadmin 固定服务器角色的成员或 db_owner 固定数据库角色的成员才能执行 sp_droparticle。
示例
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
-- Drop the transactional article.
USE [AdventureWorks]
EXEC sp_droparticle
@publication = @publication,
@article = @article,
@force_invalidate_snapshot = 1;
GO
请参阅
参考
sp_addarticle (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
复制存储过程 (Transact-SQL)
其他资源
How to: Delete an Article (Replication Transact-SQL Programming)
向现有发布添加项目和从中删除项目