代码之家  ›  专栏  ›  技术社区  ›  Alex

SQL Server管理工作室搞砸了我的数据库!

  •  3
  • Alex  · 技术社区  · 15 年前

    这实际上毁了我的一天。我有大量的表,它们之间有许多FK关系。其中一个表(我们称之为table A)有一个计算列,该列是通过带有schemabinding的UDF计算的,并且也是全文索引的。

    如果我编辑 任何桌子 (让我们称之为表B)以任何方式与具有全文索引计算列的表(表A)相关(例如通过FK),并且我保存它,会发生以下情况:

    • 保存对表(表B)的更改
    • 删除表B中所有表的所有FK关系

    1 回复  |  直到 15 年前
        1
  •  2
  •   Blootac    15 年前

    我也遇到过同样的问题。正如A所说,management studio将执行以下步骤来更新表及其外键:

    1. 创建一个名为temp的新表_
    2. 将旧表中的内容复制到新表中
    3. 删除所有约束、索引和外键
    4. 重新创建外键、索引和约束

    我可能把前3个顺序弄错了,但你明白了。

    在执行更改脚本之前,请检查它,确保它看起来合理。

    @天哪,如果表中有数据,为什么不能删除外键?当然可以。对于在包含数据的表上创建外键只有限制,但只有在它打破了约束的情况下。但是,即使这样也可以通过在创建密钥时使用WITHNOCHECK选项来避免。是的,我知道当你试图更新损坏的结果集时,它会中断。

    推荐文章