SQL Server:在非常大的表中将列更改为非null

时间:2013-05-12 11:27:23

标签: sql sql-server sql-server-2012 sql-server-express

我正在尝试在3.5 gb表(SQL Server Express)上将列更改为not null

所有行都包含表格中的值。

我从allow null中删除复选框,然后点击保存。

我明白了:

  

无法修改表格   超时已过期。操作完成之前经过的超时时间或服务器没有响应。

我怎样才能克服这个?

3 个答案:

答案 0 :(得分:4)

它可能不会直接起作用。你需要这样做

首先使表中的所有NULL值为空

UPDATE tblname SET colname=0 WHERE colname IS NULL

然后更新你的表

ALTER TABLE tblname ALTER COLUMN colname INTEGER NOT NULL

希望这可以解决您的问题。

答案 1 :(得分:2)

试试这个:

 ALTER TABLE tblname ADD CONSTRAINT [DF_tblname_colnamename] DEFAULT (0) FOR  colname
 ALTER TABLE tblname ALTER COLUMN colname INTEGER  NOT NULL

答案 2 :(得分:1)

您还可以增加或覆盖超时。

  1. 在SQL Server Managment Studio中,单击“工具” - >“选项”
  2. 展开“设计师”并在左侧选择“表格和数据库设计师”(参见图片)
  3. 从此处您可以选择覆盖超时或增加超时:

    • 增加“事后超时:”(见图)

      或者

    • 取消选中“覆盖表设计器更新的连接字符串超时值:”

  4. enter image description here

    您可以看到默认超时为30秒。这些选项记录在MS Support page here