SQL Server Mgmt Studio弄乱了我的数据库!

时间:2010-07-11 17:37:07

标签: sql-server sql-server-2008 ssms

这实际上毁了我的一天。我有更多的表,其间有许多FK关系。其中一个表(我们称之为表A)有一个计算列,它是通过带有模式绑定的UDF计算的,也是全文索引的。

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

  • 保存对表(表B)的更改
  • 我收到错误:“列'abcd'没有全文索引。”关于表A,我甚至没有编辑,然后“用户取消了保存对话框”
  • 与表B中所有表格的所有FK关系都已删除

到底是怎么回事?有人可以向我解释这是怎么发生的吗?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。正如Will A所说,管理工作室将执行以下步骤来更新表及其外键:

  1. 创建一个名为temp _
  2. 的新表
  3. 将旧表中的内容复制到新的
  4. 删除所有约束,索引和外键
  5. 放弃旧桌子
  6. 将新表重命名为= old table
  7. 重新创建外键,索引和约束
  8. 我可能有错误顺序的前三个但你明白了。 在我的情况下,我丢失了整个表,而不仅仅是外键。我个人不喜欢它的方式,因为必须在包含大量数据的表上重新创建索引非常耗时。如果它只是一个很小的改变,我通常在T-SQL中自己做。

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

    @OMGPonies,如果表中有数据,为什么不能删除外键?当然可以。在具有数据的表上创建外键只有限制,但仅限于它违反约束。但是,即使这样也可以通过在创建密钥时使用WITH NOCHECK选项来避免。是的,我知道当你尝试更新损坏的结果集时它会中断。