在新安装的SQL SERVER 2014上修改表结构,因为默认启用了"阻止保存要求重新创建表的更改",所以导致出现警告,提示不允许保存更改。其实这是一个老早的问题了,这个问题最早出现在SQL SERVER 2008上,只要对数据库进行相关设置即可解决问题,这里做个笔记记录下。

先看下错误截图:

mysql创建表保存1118 mysql创建表保存不了为什么_SQL

完整警告信息:

不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了"阻止保存要求重新创建表的更改"选项。

PS:本文编写时SQL SERVER最新版本为2014,此问题最早是在SQL SERVER 2008上遇到,目前2008至20014版本的数据库都会遇到这个问题,解决方法都是一样的。

解决SQL SERVER无法对已建好的表进行保存更改的问题

解决方法有3种,这里先说下我推荐的具体解决方法和步骤:

1、打开SQL Server 2014 Management Studio企业管理器,依次打开菜单栏中的工具->选项:

mysql创建表保存1118 mysql创建表保存不了为什么_保存更改_02

2、在选项编辑对话框中,依次点击设计器->表设计器和数据库设计器,将阻止保存要求重新创建表的更改选项取消勾选后,点击确定保存:

mysql创建表保存1118 mysql创建表保存不了为什么_mysql创建表保存1118_03

注意:有的版本翻译不同,这里设计器显示为英文Designers:

mysql创建表保存1118 mysql创建表保存不了为什么_mysql 不允许保存修改_04

3、到了这里就大功告成!尝试对表结构进行修改后保存,没有在弹出警告信息,操作成功!!!

此外还有两种解决方法,前提是没有使用上面推荐的方法下。

一种是使用T-SQL语句对表结构进行修改操作,比如你要添加一个新字段,在视图编辑器中添加会触发警告,但是如果使用T-SQL语句则可以成功修改,比如下面修改表中字段的类型语句:

ALTER TABLE [表名] ALTER COLUMN [列表] 类型

还有一种方法,就是删除整张表再重新创建,这个方法应该没人用吧^^

简单研究下触发无法保存更改警告的条件及原因

经过一些尝试,我发现修改字段的一些列属性会引发此问题,比如修改表中字段的数据类型,设置是否允许NULL值,以及添加和修改自动增长标识都会触发无法保存更改的警告。但是添加新的字段,或者修改字段名称则可以正常保存表。

由于我并不是专业的数据库管理员,所以对于数据库的一些较有深度的问题无法理解的很透彻。

我只能结合警告信息,大致猜测这些修改操作会删除并重新创建表,而SQL SERVER 2008以上版本默认则开启  “阻止保存要求重新创建表的更改”,因此数据库会阻止我们保存对表结构的修改!