Sql Server'不允许保存更改'错误►防止保存需要重新创建表的更改

时间:2011-07-24 23:22:17

标签: sql-server-2008 save ssms menuitem

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

  

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

为什么我必须重新创建表格?我只想将数据类型从smallint更改为real

该表是空的,直到现在我才使用它。

16 个答案:

答案 0 :(得分:1326)

来自Save (Not Permitted) Dialog Box on MSDN

  

保存(未允许)对话框会警告您保存更改   不允许,因为您所做的更改需要列出   要删除和重新创建的表。

     

以下操作可能需要重新创建表:

     
      
  • 在表格中间添加新列
  •   
  • 删除列
  •   
  • 更改列可为空性
  •   
  • 更改列的顺序
  •   
  • 更改列的数据类型<<<<<
  •   
     

要更改此选项,请在工具菜单上点击选项,然后展开   设计人员,然后点击表格和数据库设计人员。   选择或清除阻止保存需要该表的更改   重新创建复选框。

另见 Colt Kwong博客文章:
 Saving changes is not permitted in SQL 2008 Management Studio

答案 1 :(得分:184)

您使用SSMS吗?

如果是,请转到菜单工具>>选项>>设计人员并取消选中 “阻止保存需要重新创建表格的更改”

答案 2 :(得分:65)

  

防止保存需要重新创建表格的更改

     

五次快速点击

     

Prevent saving changes that require table re-creation in five clicks

     
      
  1. 工具
  2.   
  3. 选项
  4.   
  5. 设计者
  6.   
  7. 防止保存需要重新创建表格的更改
  8.   
  9. 确定即可。
  10.         

    保存后,重复此过程以重新勾选此框。这可以防止意外数据丢失。

进一步说明

  • 默认情况下,SQL Server Management Studio会阻止删除表,因为删除表时数据内容会丢失。*

  • 在表设计视图中更改列的数据类型时,保存更改时,数据库会在内部删除表,然后重新创建新表。

*由于您的桌子是空的,因此您的具体情况不会造成后果。我完全提供这个解释,以提高您对程序的理解。

答案 3 :(得分:23)

要更改“需要重新创建表格”选项的“阻止保存更改”,请执行以下步骤:

打开SQL Server Management Studio(SSMS)。 在“工具”菜单上,单击“选项”。

在“选项”窗口的导航窗格中,单击“设计器”。

选中或清除“禁止保存需要重新创建表的更改”复选框,然后单击“确定”。

注意:如果禁用此选项,则在保存表时您不会收到警告,表明您所做的更改已更改了表的元数据结构。在这种情况下,保存表时可能会丢失数据。

enter image description here

答案 4 :(得分:20)

通过以下步骤可以在5秒内修复非常简单的设置问题

要允许您在更改表后保存更改,请按照以下步骤进行SQL设置:

  1. 打开Microsoft SQL Server Management Studio 2008
  2. 单击“工具”菜单选项,然后单击“选项”
  3. 选择设计师
  4. 取消选中“阻止保存需要重新创建表格的更改”选项
  5. 点击确定
  6. 尝试改变你的表格
  7. 您的更改将按照需要执行

答案 5 :(得分:17)

点击顶部菜单中的工具 从下拉列表中选择选项。现在,您可以选择位于左侧菜单栏中的设计师选项。取消选中阻止保存需要重新创建表格的更改选项。单击“确定”按钮。

答案 6 :(得分:12)

取消勾选 工具►选项►设计师标签中的Prevent saving changes that require table re-creation框。

SQL Server 2012示例:

enter image description here

答案 7 :(得分:7)

可以在 Microsoft SQL Server 中轻松更改。

  
      
  1. 打开Microsoft SQL Server Management Studio 2008
  2.   
  3. 点击工具菜单
  4.   
  5. 点击选项
  6.   
  7. 选择设计师
  8.   
  9. 取消选中“防止保存需要重新创建表的更改”
  10.   
  11. 点击确定
  12.   

enter image description here

答案 8 :(得分:6)

this link复制 “...重要我们强烈建议您不要通过关闭”禁止保存需要重新创建表格的更改“选项来解决此问题。有关关闭此选项的风险的详细信息,请参阅”更多信息“部分。''

“...要解决此问题,请使用Transact-SQL语句对表的元数据结构进行更改。有关其他信息,请参阅SQL Server Books Online中的以下主题

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

alter table MyTable alter column MyDate7 datetime NULL“

答案 9 :(得分:6)

如果有人在这里也没注意(像我一样):

对于Microsoft SQL Server 2012,在选项对话框中,有一个偷偷摸摸的小复选框,表示隐藏所有其他设置。虽然我得说我一直都错过了这个小怪物!!!

在那之后,你可以继续执行步骤,设计师,取消选中以防止挽救等等等等......

sneaky_check_box_in_option

答案 10 :(得分:4)

工具>>选项>>设计师并取消选中“防止保存需要重新创建表的更改”:

Description in Photos format

答案 11 :(得分:1)

1)打开顶部的工具 2)从Picklist中选择选项 3)现在进入弹出窗口,您现在可以从左侧菜单列表中选择设计器选项。
4)现在防止需要取消选中需要重新创建表的保存更改。 现在点击“确定”。

答案 12 :(得分:1)

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

答案 13 :(得分:0)

如果您无法在列表中看到“防止需要重新创建表的保存更改” The image

您需要启用更改跟踪。

  • 右键单击您的数据库,然后单击属性
  • 点击更改跟踪并启用
  • Go Tools - >选项 - >设计师再次取消选中它。

答案 14 :(得分:0)

如果使用sql server Management Studio,请转到 工具>>选项>>设计器,然后取消选中“防止保存需要重新创建表的更改” 与我合作

答案 15 :(得分:0)

实际上,您被SSMS而非SQL Server阻止了。

因此解决方案是更改SSMS的设置或使用SQL查询。