当我在 SQL Server 中创建表并保存它时,如果我尝试编辑表设计,例如将列类型从 int 更改为 real,我会收到此错误:
不允许保存更改。您所做的更改需要删除并重新创建下表。您要么对无法重新创建的表进行了更改,要么启用了阻止保存需要重新创建表的更改的选项。
为什么我必须重新创建表?我只想将数据类型从 smallint
更改为 real
。
桌子是空的,我直到现在才使用它。
从 Save (Not Permitted) Dialog Box on MSDN :
保存(不允许)对话框警告您不允许保存更改,因为您所做的更改需要删除并重新创建列出的表。以下操作可能需要重新创建表: 在表的中间添加新列 删除列 更改列的可空性 更改列的顺序 更改列的数据类型 <<<< 更改此选项,在工具菜单上,单击选项,展开设计器,然后单击表和数据库设计器。选中或清除阻止保存需要重新创建表的更改复选框。
另请参阅 Colt Kwong 博客条目:
Saving changes is not permitted in SQL 2008 Management Studio
你使用 SSMS 吗?
如果是,请转到菜单工具>>选项>>设计器并取消选中“防止保存需要重新创建表的更改”
防止保存需要重新创建表的更改 五次快速单击 工具 选项 设计器 防止保存需要重新创建表的更改 确定。保存后,重复该程序以重新勾选该框。这可以防止意外的数据丢失。
进一步说明
默认情况下,SQL Server Management Studio 会阻止删除表,因为删除表时其数据内容会丢失。*
在表设计视图中更改列的数据类型时,在保存更改时,数据库会在内部删除表,然后重新创建一个新表。
*您的具体情况不会造成任何后果,因为您的桌子是空的。我提供此解释完全是为了提高您对程序的理解。
这可以在 Microsoft SQL Server 中轻松更改。
打开 Microsoft SQL Server Management Studio 2008 单击工具菜单 单击选项 选择设计器 取消选中“防止保存需要重新创建表的更改” 单击确定
https://i.stack.imgur.com/7oWB5.png
要更改阻止保存需要重新创建表的更改选项,请执行以下步骤:
打开 SQL Server 管理工作室 (SSMS)。在工具菜单上,单击选项。
在选项窗口的导航窗格中,单击设计器。
选中或清除阻止保存需要重新创建表的更改复选框,然后单击确定。
注意:如果禁用此选项,则在保存表时不会警告您所做的更改已更改表的元数据结构。在这种情况下,保存表时可能会发生数据丢失。
https://i.stack.imgur.com/bx2gs.png
这是一个非常简单的设置问题,通过以下步骤可以在 5 秒内修复
为了让您在更改表后保存更改,请按照以下步骤进行 sql 设置:
打开 Microsoft SQL Server Management Studio 2008 单击工具菜单选项,然后单击选项选择设计器取消选中“防止保存需要重新创建表的更改”选项单击确定尝试更改您的表您的更改将按需要执行
继续位于顶部菜单的工具。从下拉菜单中选择选项。您现在有一个弹出窗口,选择位于菜单左侧的 Designers 选项。取消选中选项阻止保存需要重新创建表的更改。单击确定按钮。
取消勾选 工具 ► 选项 ► 设计器 选项卡中的 Prevent saving changes that require table re-creation
框。
SQL Server 2012 示例:
https://i.stack.imgur.com/MBGSp.jpg
复制自 this link " ... 重要我们强烈建议您不要通过关闭阻止保存需要重新创建表的更改选项来解决此问题。有关关闭此选项的风险的详细信息,请参阅“更多信息”部分。''
" ...要解决此问题,请使用 Transact-SQL 语句更改表的元数据结构。有关其他信息,请参阅 SQL Server Books Online 中的以下主题
例如,要更改名为 MyTable 的表中 datetime 类型的 MyDate 列以接受 NULL 值,您可以使用:
更改表 MyTable 更改列 MyDate7 日期时间 NULL "
以防万一这里有人也没有注意(比如我):
对于 Microsoft SQL Server 2012,在选项对话框中,有一个偷偷摸摸的小复选框,显然隐藏了所有其他设置。虽然我不得不说我一直想念那个小怪物!!!
之后,您可以继续执行步骤,设计师,取消选中防止保存等等等等。
https://i.stack.imgur.com/qAO6X.png
工具>>选项>>设计器并取消选中“防止保存需要重新创建表的更改”:
https://i.stack.imgur.com/TmBv8.png
1) 打开顶部的工具。 2) 从 Picklist 中选择选项。 3) 现在出现弹出窗口,您现在可以从左侧菜单列表中选择设计师选项。 4)现在防止保存更改需要取消选中需要重新创建的表。现在单击确定。
从“工具”菜单中,单击“选项”,从侧面菜单中选择“设计器”,然后取消选中“防止可能导致重新创建表格的更改”。然后保存更改
如果您使用 sql server Management Studio,请转到工具>>选项>>设计器并取消选中“防止保存需要重新创建表的更改”它适用于我
如果您在类似 The image 的列表中看不到“防止保存需要重新创建表的更改”
您需要启用更改跟踪。
右键单击您的数据库,然后单击属性
单击更改跟踪并使其启用
再次转到工具 -> 选项 -> 设计器并取消选中它。
实际上,您被 SSMS 而不是 SQL Server 阻止。
解决方案是更改 SSMS 的设置或使用 SQL 查询。
使用 SQL 查询,您可以自由地进行更新。示例您要向表中添加新列,您可以这样做:
ALTER TABLE 客户添加电子邮件 varchar(255) NOT NULL DEFAULT 'OK';
其他选项是更改 SSMS 设置。请参考其他答案,正如许多人所解释的那样。
不定期副业成功案例分享