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:
来自此处的其他有用信息:
若要更改"需要重新创建表"选项的"阻止保存更改",请按照下列步骤操作:
- 打开SQL Server Management Studio(SSMS).
- 在"工具"菜单上,单击"选项".
- 在"选项"窗口的导航窗格中,单击"设计器".
- 选中或清除"禁止保存需要重新创建表的更改"复选框,然后单击"确定".
注意如果禁用此选项,则在保存表时您不会收到警告,表明您所做的更改已更改了表的元数据结构.在这种情况下,保存表时可能会发生数据丢失.
关闭"防止保存更改需要重新创建表"选项的风险
虽然关闭此选项可以帮助您避免重新创建表,但它也可能导致更改丢失.例如,假设您在SQL Server 2008中启用"更改跟踪"功能以跟踪对表的更改.当您执行导致重新创建表的操作时,您会收到"症状"部分中提到的错误消息.但是,如果关闭此选项,则在重新创建表时将删除现有的更改跟踪信息.因此,我们建议您不要通过关闭该选项来解决此问题.
防止保存需要重新创建表的更改
快速点击五次
- 工具
- 选项
- 设计师
- 防止保存需要重新创建表的更改
- 好的。
保存后,重复该过程以重新勾选该框。这可以防止意外数据丢失。
进一步说明
默认情况下,SQL Server Management Studio 会阻止删除表,因为当删除表时,其数据内容就会丢失。*
在表设计视图中更改列的数据类型时,保存更改时,数据库会在内部删除该表,然后重新创建一个新表。
*您的具体情况不会造成任何后果,因为您的桌子是空的。我提供此解释完全是为了提高您对该过程的理解。
您可以直接为表添加约束
ALTER TABLE TableName
ADD CONSTRAINT ConstraintName PRIMARY KEY(ColumnName)
GO
Run Code Online (Sandbox Code Playgroud)
确保您的主键列不应具有任何空值.
选项2:
您可以更改SQL Management Studio选项
若要更改此选项,请在"工具"菜单上单击"选项",再展开"设计器",然后单击"表和数据库设计器".选中或清除"禁止保存需要重新创建表的更改"复选框.