1

出于某种原因,sql server 2008 不允许我将列添加到现有表中。

顺便说一句,桌子是空的。

是否有阻止修改 sql 2008 中的表的设置?

4

2 回答 2

4

是的,您可以更改设置以停止此操作。详情在这里

于 2008-11-12T19:51:25.153 回答
4

当您使用 SSMS 在数据库中设计表,然后尝试对表结构进行更改(例如添加不在末尾的列)时,必须重新创建表。默认设置是不允许您保存任何需要重新创建的更改。

你可以:

  1. 转到工具 | 选项 | 设计师 | 表和设计器并取消选中阻止保存需要重新创建表的更改选项。
  2. 编写更改脚本并自己运行。

警告

请注意,将其设置为默认值的原因是,在生产数据库中重新创建表可能非常有害,并且在某些极端情况下,自动脚本可能会出错。如果您在具有数十亿行的多个文件组上有一个非常复杂的分区表怎么办?假设您实际上拥有两个表副本以及一个绝对庞大的事务日志所需的巨大空间,这将破坏您的整个数据库数小时,并且可能会弄乱最终结果。或者,如果您的新表无法插入(例如在没有默认值的情况下添加非空列的情况),那么脚本可能会在没有正确恢复的情况下使插入步骤失败,并且您最终会得到一个空的桌子。

思路:先备份!

如果您不了解风险,请不要做任何事情。

丢失数据示例

这是某人通过使用此选项丢失数据的完美示例。别说我没警告过你。

于 2012-02-12T00:29:38.137 回答