我们最近迁移到新服务器,首先恢复数据库,然后设置复制。相同的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行
当我检查表的架构时,它显示外键是否存在。
这是否意味着外键是一个孤儿,如果是,那么它的可能解决方案是什么。 无法删除约束。查看以前的错误。
答案 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