不推荐的解决办法:工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可。
推荐的办法:使用alter语句修改表结构,参见文章下面的替代方法
产生这个问题的原因:参见文章下面的原因以及更多信息
原文链接
https://social.msdn.microsoft.com/forums/zh-CN/ab33831a-44f0-449e-acf5-e9c230b629b0
https://support.microsoft.com/zh-cn/kb/956176
症状
当您使用数据定义语言 (DDL) 来修改一个表,然后再将 Microsoft SQL Server 2008年中保存表时,可能会收到以下消息:
不允许保存更改。
所做的更改要求下表,以删除并重新创建。
必须进行不能重新创建或启用阻止保存更改的选项的表的更改要求重新创建表。
原因
启用阻止保存的更改要求重新创建表的选项,并对表进行一个或多个以下更改时,将发生此问题:
- 您可以更改某一列允许 null 值设置。
- 对表中的列进行重新排序。
- 您可以更改列的数据类型。
- 添加一个新列。
替代方法
要变通解决此问题,请使用事务处理 SQL 语句所做的更改对表的元数据结构。有关其他信息请参阅 SQL Server 联机丛书中的下列主题:
http://msdn.microsoft.com/zh-cn/library/ms190273.aspx
例如,若要更改MyDate列在表类型中的日期时间的名为MyTable接受 NULL 值,您可以使用:
重要:我们强烈建议您不能解决这个问题通过关闭阻止保存的更改要求重新创建表的选项。关闭该选项的风险有关的详细信息,请参阅"更多信息"一节。
http://msdn.microsoft.com/zh-cn/library/ms190273.aspx
例如,若要更改MyDate列在表类型中的日期时间的名为MyTable接受 NULL 值,您可以使用:
alter table MyTable alter column MyDate7 datetime NULL
重要:我们强烈建议您不能解决这个问题通过关闭阻止保存的更改要求重新创建表的选项。关闭该选项的风险有关的详细信息,请参阅"更多信息"一节。
更多信息
若要更改保存的更改,要求重新创建表的阻止选项,请执行以下步骤:
要确定是否为表启用更改跟踪功能,请执行以下步骤:
启用更改跟踪功能时,使用事务处理 SQL 语句来更改表的元数据结构。
- 打开 SQL Server 管理 Studio (SSMS)。
- 在工具菜单上,单击选项。
- 在选项窗口的导航窗格中,单击设计器。
- 选择或清除阻止保存的更改,要求重新创建表复选框,然后单击确定。
关闭"保存更改,要求重新创建表的阻止"选项的风险
虽然关闭该选项可以帮助您避免重新创建一个表,则还可能会丢失的更改。例如,假设您启用跟踪表更改的 SQL Server 2008年中的修订功能。当您执行的操作会导致重新创建表时,您会收到在"症状"一节中提到的错误消息。但是,如果关闭此选项时,重新创建表时,会删除现有的更改跟踪信息。因此,我们建议您不能解决此问题的关闭选项。要确定是否为表启用更改跟踪功能,请执行以下步骤:
- 在 SQL Server 管理 Studio 中,在对象资源管理器中查找的表。
- 用鼠标右键单击表,然后单击属性。
- 在表格属性对话框中,单击修订。
启用更改跟踪功能时,使用事务处理 SQL 语句来更改表的元数据结构。
重现问题的步骤
- 在 SQL Server 管理 Studio 中,创建一个包含表设计器工具中的主键的表。
- 用鼠标右键单击包含此表的数据库,然后单击 属性.
- 在中 数据库属性 对话框中,单击 更改跟踪.
- 设置的值 更改跟踪 项目 则返回 true然后单击 确定.
- 表中,用鼠标右键单击,然后单击 属性.
- 在中 表属性 对话框中,单击 更改跟踪.
- 设置的值 更改跟踪 项目 则返回 true然后单击 确定.
- 在上 工具 菜单上,单击 选项.
- 在中 选项 对话框中,单击 设计器.
- 单击以选中 防止保存要求重建表的更改 复选框,然后单击 确定。
- 在表设计器工具中,更改 允许空值 将现有的列。
- 请尝试更改保存到表。