我们最近迁移到新服务器,首先恢复数据库,然后设置复制。相同的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
当我试图删除表时,它显示表被外键引用。当我尝试禁用外键时,它显示
消息3733,级别16,状态2,行1约束'FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage'不属于表'subscribed_users_temp_storage'。 Msg 3727,Level 16,State 0,Line 1
当我检查表的架构时,它显示外键在那里。
这是否意味着外键是一个孤儿,如果是,那么它的可能解决方案是什么。无法删除约束。查看以前的错误。
查看你问题中的丢弃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
的Table is referenced by foreign key
结果。
HTH