合并复制 sql 服务器孤立约束

merge replication sql server orphan constraints

我们最近迁移到了一台新服务器,首先恢复了数据库,然后设置了复制。相同的合并代理适用于现有服务器但不适用于新的 one.Below 是当合并代理为 运行:

时弹出的错误

The schema script 'Subscribed_Userdb99ffc3_18.sch' could not be propagated to the subscriber. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001) Get help: http://help/MSSQL_REPL-2147201001 Could not drop object 'dbo.Subscribed_Users_Temp_Storage' because it is referenced by a FOREIGN KEY constraint. (Source: MSSQLServer, Error number: 3726) Get help: http://help/3726

当我尝试删除 table 时,它显示 table 被外键引用 key.When 我试图禁用它显示的外键

Msg 3733, Level 16, State 2, Line 1 Constraint 'FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage' does not belong to table 'subscribed_users_temp_storage'. Msg 3727, Level 16, State 0, Line 1

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

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

查看您问题中的 drop FK 错误消息,我认为您正试图将其放在错误的地方 table。请注意,最初复制代理试图删除 dbo.Subscribed_Users_Temp_Storage table,但报告有一个外键,引用它。

您找到了提到的 FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage 外键,但它不在 dbo.Subscribed_Users_Temp_Storage 中,而是根据它的名称我认为它在 Subscribed_User_Paypal_Details table,而您正试图将其放入 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 table 也驻留在 [dbo] 架构中。如果它驻留在不同的架构中,请相应地更改语句。

注意,可能有其他外键引用 dbo.Subscribed_Users_Temp_Storage table。在复制代理重新创建 dbo.Subscribed_Users_Temp_Storage table.

之后,您将需要 drop/disable 然后 recreate/enable 它们

要找出所有引用 dbo.Subscribed_Users_Temp_Storage 的外键,请执行以下命令:

exec sp_help 'dbo.Subscribed_Users_Temp_Storage'

并向下滚动到名为 Table is referenced by foreign keySELECT 结果。

HTH