当我在SQL Server中创建一个表并保存它时,如果我尝试编辑表设计,比如将列类型从int更改为real,我会得到这个错误:
不允许保存更改。您所做的更改要求删除并重新创建下面的表。您对无法重新创建的表进行了更改,或者启用了防止保存需要重新创建表的更改的选项。
为什么我要重新创建表格?我只是想把一个数据类型从smallint改为real。
桌子是空的,我直到现在才用过。
当我在SQL Server中创建一个表并保存它时,如果我尝试编辑表设计,比如将列类型从int更改为real,我会得到这个错误:
不允许保存更改。您所做的更改要求删除并重新创建下面的表。您对无法重新创建的表进行了更改,或者启用了防止保存需要重新创建表的更改的选项。
为什么我要重新创建表格?我只是想把一个数据类型从smallint改为real。
桌子是空的,我直到现在才用过。
从MSDN上的保存(不允许)对话框:
The Save (Not Permitted) dialog box warns you that saving changes is not permitted because the changes you have made require the listed tables to be dropped and re-created. The following actions might require a table to be re-created: Adding a new column to the middle of the table Dropping a column Changing column nullability Changing the order of the columns Changing the data type of a column <<<< To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving changes that require the table to be re-created check box.
另请参阅 邝伟霆博客文章: 在SQL 2008 Management Studio中不允许保存更改
这是非常容易和简单的设置问题,可以在5秒内通过以下步骤解决
为了允许您在更改表后保存更改,请按照以下步骤进行sql设置:
打开Microsoft SQL Server Management Studio 2008 单击“工具”菜单选项,然后单击“选项” 选择设计师 取消选中“防止保存需要重新创建表的更改”选项 单击OK 试着改变一下你的桌子 您的更改将按预期执行
防止保存需要重新创建表的更改 五声急促的咔哒声 工具 选项 设计师 防止保存需要重新创建表的更改 好的。 保存后,重复上述步骤,重新勾选复选框。这可以防止意外数据丢失。
进一步的解释
默认情况下,SQL Server Management Studio阻止表的删除,因为当一个表被删除时,它的数据内容就丢失了 在表设计视图中更改列的数据类型时,在保存更改时,数据库将在内部删除表,然后重新创建一个新表。
*您的具体情况不会造成任何后果,因为您的表是空的。我提供这个解释完全是为了提高您对这个过程的理解。
从此链接复制 “…重要事项:我们强烈建议您不要通过关闭“防止保存需要重新创建表的更改”选项来解决此问题。有关关闭此选项的风险的更多信息,请参阅“更多信息”部分。”
“…要解决此问题,请使用Transact-SQL语句对表的元数据结构进行更改。有关更多信息,请参阅SQL Server联机书籍中的以下主题
例如,要更改MyTable中datetime类型的MyDate列以接受NULL值,您可以使用:
修改表MyDate7为空
1)打开顶部的工具。 2)从Picklist中选择选项。 3)现在弹出窗口,你可以从左边的菜单列表中选择设计师选项。 4)现在防止保存更改,需要重新创建表。现在单击OK。
要更改“防止保存需要重新创建表的更改”选项,请执行以下步骤:
打开SQL Server Management Studio (SSMS)。 在“工具”菜单上,单击“选项”。
在“选项”窗口的导航窗格中,单击“设计器”。
选中或清除“防止保存需要重新创建表的更改”复选框,然后单击“确定”。
注意:如果禁用此选项,则在保存表时不会警告您所做的更改更改了表的元数据结构。在这种情况下,在保存该表时可能会导致数据丢失。
以防这里有人也没有注意到(比如我):
对于Microsoft SQL Server 2012,在选项对话框中,有一个偷偷摸摸的小复选框,显然隐藏了所有其他设置。虽然我不得不说,我一直都很想念那个小怪物!!
在那之后,你可以继续步骤,设计,取消勾选防止保存等等等等…
如果在这样的列表中看不到“防止保存需要重新创建表的更改” 图像
您需要启用变更跟踪。
右键单击数据库,然后单击属性 单击更改跟踪并启用它 再次打开工具->选项->设计器,然后取消勾选。
这可以在Microsoft SQL Server中轻松更改。
打开Microsoft SQL Server Management Studio 2008 点击工具菜单 点击选项 选择设计师 取消勾选“防止保存需要重新创建表的更改” 单击OK
实际上,您被SSMS阻止,而不是SQL Server。
解决方案是更改SSMS的设置或使用SQL查询。
使用SQL查询,您可以自由地进行更新。 例如,你想在一个表中添加一个新列,你可以这样做:
ALTER TABLE Customers ADD Email varchar(255) NOT NULL DEFAULT 'OK'
其他选项是更改SSMS设置。请参考其他答案,因为许多人已经解释了它。