Sql Server“保存更改不允许”错误►阻止保存需要重新创build表的更改
当我在SQL Server中创build一个表并保存它时,如果我尝试编辑表devise,如将列types从int更改为real,则会出现以下错误:
保存更改是不允许的。 您所做的更改要求删除并重新创build下表。 您要么对无法重新创build的表进行更改,要么禁止保存需要重新创build表的更改的选项。
为什么我必须重新创build表格? 我只是想将数据types从smallint
更改为real
。
桌子是空的,我到现在才使用它。
从MSDN上的“保存(不允许)”对话框中 :
“ 保存 (不允许)”对话框将警告您不允许保存更改,因为您所作的更改要求删除和重新创build列出的表。
以下操作可能需要重新创build表格:
- 在表格中间添加一个新列
- 丢下一列
- 改变列的可空性
- 改变列的顺序
- 更改列的数据types<<<<
要更改此选项,请在工具菜单上,单击选项 ,展开devise器 ,然后单击表和数据库devise器 。 选中或清除“ 保存要求重新创build表的更改”checkbox。
另见Colt Kwong Blog条目:
在SQL 2008 Management Studio中不允许保存更改
你使用SSMS吗?
如果是,转到菜单工具>>选项>>devise器,并取消选中“预防保存需要重新创build表的更改”
阻止保存需要重新创build表的更改
五个快速点击
- 工具
- 选项
- devise师
- 阻止保存需要重新创build表的更改
- 好的 。
保存后,重复此过程重新勾选该框。 这安全 – 防止意外的数据丢失。
进一步解释
-
默认情况下,SQL Server Management Studio将防止删除表,因为当删除表时,其数据内容将丢失。
-
在devise视图中更改列的数据types时,保存更改时,数据库会在内部删除表,然后重新创build一个新表。
*由于您的表格是空的,您的具体情况不会造成任何后果。 我完全提供这个解释来提高你对程序的理解。
按照这些步骤,可以在5秒内固定的设定问题非常简单容易
为了让您在更改表后保存更改,请按照以下步骤进行sql设置:
- 打开Microsoft SQL Server Management Studio 2008
- 点击工具菜单选项,然后点击选项
- selectdevise师
- 取消选中“防止保存需要重新创build表格的更改”选项
- 点击OK
- 试着改变你的桌子
- 您的更改将按需要执行
去顶部菜单上的工具 。
从下拉菜单中select选项 。现在select位于菜单左侧的“ devise者”选项。 取消选中防止保存需要重新创build表的更改选项。 点击确定button。
要更改防止保存需要重新创build表的选项的更改,请按照下列步骤操作:
打开SQL Serverpipe理工作室(SSMS)。 在工具菜单上,单击选项。
在“选项”窗口的导航窗格中,单击“devise器”。
选中或清除“禁止保存需要重新创build表的更改”checkbox,然后单击“确定”。
注意 :如果禁用此选项,则在保存表时发生的更改不会更改表的元数据结构。 在这种情况下,保存表时可能会发生数据丢失。
从工具►选项►devise器选项卡中取消勾选 Prevent saving changes that require table re-creation
。
SQL Server 2012示例:
以防万一有人在这里也不注意(像我一样):
对于Microsoft SQL Server 2012,在选项对话框中,有一个鬼鬼祟祟的小checkbox,显示隐藏所有其他设置。 虽然我不得不说,我已经错过了这个小怪物!
之后,你可以继续步骤,devise师,取消防止保存等等等等等等…
从此链接复制“…重要我们强烈build议您通过closures”禁止保存需要重新创build表的选项“选项来解决此问题。有关closures此选项的风险的详细信息,请参阅”更多信息“部分”
“…要解决此问题,请使用Transact-SQL语句对表的元数据结构进行更改。有关其他信息,请参阅SQL Server联机丛书中的以下主题
例如,要更改名为MyTable的表中的types为datetime的MyDate列以接受NULL值,可以使用:
alter table MyTable alter column MyDate7 datetime NULL“
1)打开顶部的工具。
2)从选单中select选项。
3)现在出现popup窗口,您现在可以从左侧菜单列表中selectdevise者选项。
4)现在防止需要取消选中需要重新创build表的保存更改。 现在点击确定。
从“工具”菜单中,单击“选项”,从侧面菜单中select“devise器”,然后取消防止可能导致重新创build表的更改。 然后保存更改