合并复制sql server孤立约束

时间:2018-02-27 10:33:52

标签: sql-server merge-replication

我们最近迁移到新服务器,首先恢复数据库,然后设置复制。相同的Merge代理程序可以与现有服务器一起使用,但不能与新服务器一起使用.Below是运行合并代理程序时弹出的错误:

  

架构脚本' Subscribed_Userdb99ffc3_18.sch'不可能   传播给订户。 (来源:MSSQL_REPL,错误号码:   MSSQL_REPL-2147201001)获取帮助:http://help/MSSQL_REPL-2147201001   无法删除对象' dbo.Subscribed_Users_Temp_Storage'因为它   由FOREIGN KEY约束引用。 (来源:MSSQLServer,错误   号码:3726)求助:http://help/3726

当我试图删除表时,它显示的表被外键引用。当我尝试禁用它显示的外键时

  

Msg 3733,Level 16,State 2,Line 1 Constraint   ' FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage'不   不属于表' subscribed_users_temp_storage'。 Msg 3727,等级   16,状态0,第1行

当我检查表的架构时,它显示外键是否存在。

这是否意味着外键是一个孤儿,如果是,那么它的可能解决方案是什么。 无法删除约束。查看以前的错误。

1 个答案:

答案 0 :(得分:0)

查看问题中的丢弃FK错误消息我认为您正试图将其丢弃在错误的表格上。请注意,最初复制代理尝试删除dbo.Subscribed_Users_Temp_Storage表,但报告存在外键,引用它。

您找到了上面提到的FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage外键,但它没有驻留在dbo.Subscribed_Users_Temp_Storage中,而是根据其名称我认为它位于Subscribed_User_Paypal_Details表中,而您是试图将其放入dbo.Subscribed_Users_Temp_Storage

我认为正确的DROP FK语句应如下所示:

ALTER TABLE [dbo].[Subscribed_User_Paypal_Details] 
    DROP CONSTRAINT [FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage]

注意,我假设Subscribed_User_Paypal_Details表也驻留在[dbo]模式中。如果它位于不同的模式中,请相应地更改语句。

注意,可能有其他外键引用dbo.Subscribed_Users_Temp_Storage表。在复制代理重新创建dbo.Subscribed_Users_Temp_Storage表之后,您将需要删除/禁用然后重新创建/启用它们。

要查找引用dbo.Subscribed_Users_Temp_Storage的所有FK,请执行以下命令:

exec sp_help 'dbo.Subscribed_Users_Temp_Storage'

并向下滚动到名为SELECT的{​​{1}}结果。

HTH