当我在SQL Server中创建一个表并保存它时,如果我尝试编辑表设计,比如将列类型从int更改为real,我会得到这个错误:

不允许保存更改。您所做的更改要求删除并重新创建下面的表。您对无法重新创建的表进行了更改,或者启用了防止保存需要重新创建表的更改的选项。

为什么我要重新创建表格?我只是想把一个数据类型从smallint改为real。

桌子是空的,我直到现在才用过。


当前回答

如果在这样的列表中看不到“防止保存需要重新创建表的更改” 图像

您需要启用变更跟踪。

右键单击数据库,然后单击属性 单击更改跟踪并启用它 再次打开工具->选项->设计器,然后取消勾选。

其他回答

以防这里有人也没有注意到(比如我):

对于Microsoft SQL Server 2012,在选项对话框中,有一个偷偷摸摸的小复选框,显然隐藏了所有其他设置。虽然我不得不说,我一直都很想念那个小怪物!!

在那之后,你可以继续步骤,设计,取消勾选防止保存等等等等…

如果你正在使用SSMS:

进入“工具>>选项>>设计器”菜单,取消勾选“防止保存需要重新创建表的更改”

如果在这样的列表中看不到“防止保存需要重新创建表的更改” 图像

您需要启用变更跟踪。

右键单击数据库,然后单击属性 单击更改跟踪并启用它 再次打开工具->选项->设计器,然后取消勾选。

从“工具”菜单中,单击“选项”,从侧菜单中选择“设计器”,并取消勾选防止可能导致重新创建表的更改。然后保存更改

从此链接复制 “…重要事项:我们强烈建议您不要通过关闭“防止保存需要重新创建表的更改”选项来解决此问题。有关关闭此选项的风险的更多信息,请参阅“更多信息”部分。”

“…要解决此问题,请使用Transact-SQL语句对表的元数据结构进行更改。有关更多信息,请参阅SQL Server联机书籍中的以下主题

例如,要更改MyTable中datetime类型的MyDate列以接受NULL值,您可以使用:

修改表MyDate7为空