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

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

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


当前回答

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

其他回答

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

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

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

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

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

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

去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/

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

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