阻止保存更改需要重新创建表(Saving changes is not permitted)
MS SQL 2008下,在修改表结构的时候,提示:不允许保存更改。您所做的更改要求删除并重新创建以下表。
记录以下网址
根据第一个地址
This problem occurs when the Prevent saving changes that require the table re-creation option is enabled, and you make one or more of the following changes to the table:
You change the Allow Nulls setting for a column.
You reorder columns in the table.
You change the column data type.
You add a new column.
在studio里,修改是否允许null值、重新给列排序、修改数据类型、添加新列的时候,会要求“重建表”
我把脚本导出来看过,有这两句的:
DROP TABLE dbo.Users
GO
EXECUTE sp_rename N'dbo.Tmp_Users', N'Users', 'OBJECT'
GO
就是说,这些修改是先创建一个临时表,把数据全部导过去,然后呢,删除原来的表,把临时表改名成原表的名字,这就是重建表
百度好多人都说要修改设置,在“工具”->“选项”里,选择“Designers\表设计器和数据库设计器”,再把“阻止保存要求重新创建表的更改”前的勾去掉,如下图:
就是,官方不建议这样子做,在第一个链接里提到了:
We strongly recommend that you do not work around this problem by turning off the Prevent saving changes that require table re-creation option.
官方不建议是因为去掉这个选项后,有可能会导致数据丢失
比如,在sql 2008里多了一个Change Tracking,可以跟踪一个表的数据更改
如果这里的选项设置为true,在重建表的时候,重建表以前的跟踪记录会被删除
官方建议在这种情况下,使用tsql修改表结构,不要把“阻止保存要求重新创建表的更改”前的勾去掉