【问题标题】:merge replication sql server orphan constraints合并复制sql server孤儿约束
【发布时间】:2018-08-06 23:23:33
【问题描述】:

我们最近迁移到了一个新服务器,首先恢复了数据库,然后设置了复制。相同的 Merge 代理适用于现有服务器,但不适用于新服务器。以下是运行合并代理时弹出的错误:

无法使用架构脚本“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'。消息 3727,级别 16,状态 0,第 1 行

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

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

【问题讨论】:

    标签: sql-server merge-replication


    【解决方案1】:

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

    您已找到提到的FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage 外键,但它不在dbo.Subscribed_Users_Temp_Storage 中,而是基于它的名称,我认为它位于Subscribed_User_Paypal_Details 表中,而您正试图将其放入@ 987654325@.

    我认为正确的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'
    

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

    HTH

    【讨论】:

    • 感谢您的帖子,已更正,一切正常。
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多