当您试图将表保存在 SQL Server 中的错误消息:"将更改保存为不允许的"

文章翻译 文章翻译
文章编号: 956176 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当您修改表,使用数据定义语言 (DDL),然后再尝试保存表 Microsoft SQL Server 2008 年时,您可能会收到以下消息:
不允许保存更改。您所做的更改需要删除并重新创建下表。您已对无法重新创建或启用该选项防止保存更改的表的更改需要重新创建表。

原因

出现此问题时 防止保存要求重新创建表的更改 启用选项,和一个或多个以下的更改对表:
  • 您的更改 允许空值 列的设置。
  • 在表中的列重新排序。
  • 您可以更改列的数据类型。
  • 您可以添加新列。
在更改表,以便您可以修改表中的元数据结构,然后保存表时,表必须重新创建基于这些更改。在重新创建表的过程中,这可能会导致丢失的元数据和数据的直接损失。如果您启用 防止保存要求重新创建表的更改 中的选项 设计器 部分 SQL Server 管理 Studio (SSMS) 选项 窗口中,您会收到"症状"一节中提到的错误消息。

替代方法

若要解决此问题,请使用 ? ° SQL 语句对表的元数据结构进行更改。有关其他信息,请参阅 SQL Server 联机丛书中的以下主题:

http://msdn.microsoft.com/en-us/library/ms190273.aspx

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

alter table MyTable alter column MyDate7 datetime NULL

重要我们强烈建议则不起作用,该问题通过关闭阻止保存的对表重新创建需要的选项。有关的风险,关闭该选项的详细信息,请参阅"更多信息"一节。

状态

Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的错误。

更多信息

若要更改 防止保存要求重新创建表的更改 选项,请按照下列步骤操作:
  1. 打开 SQL Server 管理 Studio (SSMS)。
  2. 在上 工具 菜单上,单击 选项.
  3. 在导航窗格中 选项 窗口中,单击 设计器.
  4. 选中或清除 防止保存要求重新创建表的更改 复选框,然后单击 确定.
注意如果您禁用此选项,会警告您保存表时所做的更改已经更改了表的元数据结构。在这种情况下,当您保存表时,可能会发生数据丢失。

关闭"保存更改,需要表重新创建阻止"选项的风险

虽然关闭该选项可以帮助您避免重新创建表,则还可能会丢失的更改。例如,假设您启用 SQL Server 2008 年跟踪对表中的修订功能。在执行某项操作,从而导致重新创建表时,您会收到"症状"一节中提到的错误消息。但是,如果您关闭此选项,请重新创建表时被删除现有的更改跟踪信息。因此,我们建议则不起作用,该问题通过关闭选项。

要确定是否为表启用更改跟踪功能,请执行以下步骤:
  1. 在 SQL Server 管理 Studio 中,请在对象资源管理器中查找的表。
  2. 表中,用鼠标右键单击,然后单击属性
  3. 表格属性对话框中,单击修订
更改跟踪项的值为True,如果启用此选项的表。如果值为False,则此选项被禁用。

当启用了更改跟踪功能时,使用 ? ° SQL 语句更改表的元数据结构。

要重现此问题的步骤

  1. 在 SQL Server 管理 Studio 中,创建一个包含表设计器工具中的主键的表。
  2. 用鼠标右键单击包含此表的数据库,然后单击 属性.
  3. 在中 数据库属性 对话框中,单击 更改跟踪.
  4. 设置的值 更改跟踪 项目 则返回 true然后单击 确定.
  5. 表中,用鼠标右键单击,然后单击 属性.
  6. 在中 表属性 对话框中,单击 更改跟踪.
  7. 设置的值 更改跟踪 项目 则返回 true然后单击 确定.
  8. 在上 工具 菜单上,单击 选项.
  9. 在中 选项 对话框中,单击 设计器.
  10. 单击以选中 防止保存要求重建表的更改 复选框,然后单击 确定。
  11. 在表设计器工具中,更改 允许空值 将现有的列。
  12. 请尝试更改保存到表。

属性

文章编号: 956176 - 最后修改: 2012年6月6日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
关键字:?
kbsqlsetup sql2008relnotetools sql2008relnote kbprb kbmt KB956176 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 956176
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com