合并复制sql server孤立约束

问题描述 投票:1回答:1

我们最近迁移到新服务器,首先恢复数据库,然后设置复制。相同的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

当我检查表的架构时,它显示外键在那里。

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

sql-server merge-replication
1个回答
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'

然后向下滚动到名为SELECTTable is referenced by foreign key结果。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.