删除SQL Server复制订阅

时间:2012-02-20 13:04:35

标签: sql-server sql-server-2008 replication database-replication

我的机器上的复制存在问题,我在SSMS中显示了一些不存在的订阅。我尝试使用SSMS中的UI删除它们,并使用一些T-SQL ......但没有运气。这些出版物甚至不再存在(它们在同一台机器上)。

关于如何删除它们的任何想法?

更多信息: 这种情况我似乎在有3个订阅的地方(SSMS不会让我看,因为'它们不存在')。


enter image description here

3 个答案:

答案 0 :(得分:2)

您可能在分发数据库中有一些孤立的元数据。如果您不再发布任何数据,可能需要尝试Disabling Publishing and Distribution删除孤立的出版物和订阅。

答案 1 :(得分:2)

我觉得奇怪的是sp_removedbreplication没有用...可能会尝试sp_dropsubscription,并包含ignore_distributor参数:

declare @yourServer sysname
set @yourServer = @@servername

exec sp_dropsubscription 
    @publication='UD-ForCMS',
    @article='all',
    @subscriber=@yourServer,
    @destination_db='CMS',
    @ignore_distributor=1

答案 2 :(得分:0)

我发现有时复制创建的系统视图对象可以保持挂起状态。停止手动重建复制。我的解决方案是手动删除系统视图syncobj。我建议在删除上面的发布属性之前总是删除订阅和发布,因为我发现项目因为长期问题而遗留下来。

  

Msg 2714,Level 16,State 3:已经有一个名为的对象   数据库中的“syncobj_0x3437324238353830”。消息21745,等级16,   状态1,过程sp_MSrepl_articleview,第272行无法生成   过滤视图或过程。验证为。指定的值   可以将sp_addarticle的@filter_clause参数添加到WHERE中   SELECT语句的子句,用于生成有效查询。 Msg 3931,等级   16,状态1,过程sp_MSrepl_articleview,第401行当前   事务无法提交且无法回滚到   保存点。回滚整个交易。警告:分发   代理作业已被隐式创建并将在SQL下运行   服务器代理服务帐户。