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

Bic*_*ick 2 sql sql-server sql-server-express sql-server-2012

我正在尝试将列更改为not null3.5 GB 表 (SQL Server Express)。

所有行都包含表中的值。

我删除了该复选框allow null并单击“保存”。

我得到:

无法修改表。
超时已过。操作完成之前超时时间已过,或者服务器未响应。

我怎样才能克服这个问题?

tra*_*ank 5

可能无法直接运行。你需要这样做

首先将表中的所有 NULL 值设置为非空

UPDATE tblname SET colname=0 WHERE colname IS NULL
Run Code Online (Sandbox Code Playgroud)

然后更新你的表

ALTER TABLE tblname ALTER COLUMN colname INTEGER NOT NULL
Run Code Online (Sandbox Code Playgroud)

希望这能解决您的问题。