在SQL Server Management Studio中编辑表后保存更改

如果我想在一个表中保存任何更改,以前保存在SQL Server Management Studio(表中没有数据),我会得到一个错误消息:

不允许保存更改。所做的更改需要 下面要删除并重新创建的表。你要么做了 对不能重新创建或启用该选项的表的更改 防止保存需要重新创建表的更改

什么可以防止表格被轻易编辑?或者,这是SQL Server Management Studio要求重新创建表进行编辑的通常方式吗?这个"option防止保存更改"是什么?

256924 次浏览

要解决这个问题,可以使用SQL语句对表的元数据结构进行更改。

当启用“防止保存需要重新创建表的更改”选项时发生此问题。

来源:当您尝试在SQL Server 2008中保存表时,错误消息:“不允许保存更改”

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

发生这种情况是因为有时需要删除并重新创建表以更改某些内容。这可能需要一段时间,因为所有数据都必须复制到临时表,然后重新插入到新表中。由于SQL Server默认不相信你,你需要说“好吧,我知道我在做什么,现在让我做我的工作。”

在SQL Server Management Studio中的表编辑器中,您可以非常轻松地可视化地进行许多更改,实际上需要SSMS在后台删除表并从头开始重新创建它。即使是像重新排序列这样简单的事情也不能用标准的SQL DDL语句表示——SSMS所能做的就是删除并重新创建表。

这个操作可能是a)在一个大表上非常耗时,或者b)甚至可能因为各种原因(比如FK约束之类的)而失败。因此,SSMS在SQL Server 2008中引入了其他答案已经确定的新选项。

乍一看,防止这样的更改似乎是违反直觉的——而且这对开发服务器来说肯定是一件麻烦事。但是在生产服务器上,这个选项及其防止此类更改的默认值将成为潜在的救星!

您应该停止以这种方式编辑数据,而不是取消复选框(一个糟糕的解决方案)。如果必须更改数据,那么使用脚本进行更改,这样您就可以轻松地将其移植到生产环境中,从而使其处于源代码控制之下。这也使得在将生产推到开发后更容易刷新测试更改,从而使开发人员能够使用更新鲜的数据。

工具|选项|设计器|表和数据库设计器

< img src = " https://i.stack.imgur.com/hdWej.png " alt = " / >

取消选中“防止保存需要重新创建表的更改”选项。

去SSMS试试这个

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

这里有一个很好的解释: http://blog.sqlauthority.com/2009/05/18/sql-server-fix-management-studio-error-saving-changes-in-not-permitted-the-changes-you-have-made-require-the-following-tables-to-be-dropped-and-re-created-you-have-either-made-changes-to-a-tab/ < / p >

步骤重现问题

  1. 在SQL Server Management Studio中,在表设计器工具中创建包含主键的表。
  2. 右键单击包含该表的数据库,然后单击属性
  3. 在“数据库属性”对话框中,单击“更改跟踪”。
  4. 更改跟踪项的值设置为真正的,然后单击好吧
  5. 右键单击表,然后单击属性
  6. 在“表属性”对话框中,单击“更改跟踪”。
  7. 更改跟踪项的值设置为真正的,然后单击好吧
  8. 工具菜单上,单击选项
  9. 在“选项”对话框中,单击“设计师”。
  10. 单击以选中防止保存需要重新创建表的更改复选框,然后单击确定。
  11. 在表设计器工具中,更改现有列上的允许null设置。
  12. 尝试将更改保存到表中。