无法在SQL Server 2008中更改表设计

tha*_*ksh 46 sql sql-server sql-server-2008

我创建了一个表tbl_Candidate...但我忘了将主键设置为表,并且在没有主键的情况下保存了它...

下次我要在SQL Server 2008 Express中设置主键时,我得到一条消息,就像我必须删除表并重新创建当我要用主键更改来保存表时...

这是当我试图保存表格中的更改时弹出的消息...... !!

不允许保存更改.您所做的更改需要删除并重新创建以下表.您已对表格进行了无法重新创建的更改,或者启用了该选项以防止保存需要重新创建表格的更改

我使用Windows身份验证登录到SQL Server,服务器类型作为数据库引擎,服务器名称为.\SQLExpress.

请给我一个方法来纠正这个问题或更改SQL Server设置的方法...请给我一个指示..谢谢..

pyl*_*ver 95

答案在MSDN网站上:

"保存(不允许)"对话框警告您不允许保存更改,因为您所做的更改需要删除并重新创建列出的表.

以下操作可能需要重新创建表:

  • 将新列添加到表的中间
  • 删除列
  • 改变列的可空性
  • 更改列的顺序
  • 更改列的数据类型

编辑1:

来自此处的其他有用信息:

若要更改"需要重新创建表"选项的"阻止保存更改",请按照下列步骤操作:

  1. 打开SQL Server Management Studio(SSMS).
  2. 在"工具"菜单上,单击"选项".
  3. 在"选项"窗口的导航窗格中,单击"设计器".
  4. 选中或清除"禁止保存需要重新创建表的更改"复选框,然后单击"确定".

注意如果禁用此选项,则在保存表时您不会收到警告,表明您所做的更改已更改了表的元数据结构.在这种情况下,保存表时可能会发生数据丢失.

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

虽然关闭此选项可以帮助您避免重新创建表,但它也可能导致更改丢失.例如,假设您在SQL Server 2008中启用"更改跟踪"功能以跟踪对表的更改.当您执行导致重新创建表的操作时,您会收到"症状"部分中提到的错误消息.但是,如果关闭此选项,则在重新创建表时将删除现有的更改跟踪信息.因此,我们建议您不要通过关闭该选项来解决此问题.

设置,屏幕截图


Kni*_*ins 7

防止保存需要重新创建表的更改

快速点击五次

防止保存需要通过五次单击重新创建表的更改

  1. 工具
  2. 选项
  3. 设计师
  4. 防止保存需要重新创建表的更改
  5. 好的

保存后,重复该过程以重新勾选该框。这可以防止意外数据丢失。

进一步说明

  • 默认情况下,SQL Server Management Studio 会阻止删除表,因为当删除表时,其数据内容就会丢失。*

  • 在表设计视图中更改列的数据类型时,保存更改时,数据库会在内部删除该表,然后重新创建一个新表。

*您的具体情况不会造成任何后果,因为您的桌子是空的。我提供此解释完全是为了提高您对该过程的理解。


Kis*_*mar 6

您可以直接为表添加约束

ALTER TABLE TableName
ADD CONSTRAINT ConstraintName PRIMARY KEY(ColumnName)
GO 
Run Code Online (Sandbox Code Playgroud)

确保您的主键列不应具有任何空值.

选项2:

您可以更改SQL Management Studio选项

若要更改此选项,请在"工具"菜单上单击"选项",再展开"设计器",然后单击"表和数据库设计器".选中或清除"禁止保存需要重新创建表的更改"复选框.