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> 手动删除这些对象。
示例
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
-- Drop the transactional article.
USE [AdventureWorks2008R2]
EXEC sp_droparticle
@publication = @publication,
@article = @article,
@force_invalidate_snapshot = 1;
GO
权限
只有 sysadmin 固定服务器角色的成员或 db_owner 固定数据库角色的成员才能执行 sp_droparticle。