当在一个大的表上增加VARCHAR列的大小时会有什么问题?

我正在使用SQL Server 2008,我需要在大约500k行的表上创build一个更大的VARCHAR字段,从(200到1200)。 我需要知道的是,如果有什么问题我没有考虑。

我将使用这个TSQL语句:

ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) 

我已经在数据的副本上尝试过了,这个声明没有我能看到的不良影响。

那么这样做有没有可能的问题,我可能没有考虑?

顺便说一下,列没有索引。

这只是一个元数据更改:它很快。

观察:如果其中一个SET ANSI_xx设置不同,则明确指定NULL或NOT NULL以避免“事故”,例如,由于某些原因,在osql而非SSMS中运行

从Varchar(200)更改为Varchar(1200)应该不会引起任何问题,因为它只是一个元数据更改,而SQL Server 2008会截断超出的空格,所以您应该看到没有性能差异,因此总之不应该有任何问题更改。

只是想添加我的2美分,因为我GOOGLE了这个问题B / C我发现自己在类似的情况…

BE AWARE ,虽然从varchar(xxx)更改为varchar(yyy)确实是一个元数据更改,但更改为varchar(max)不是。 因为varchar(max)值(又名BLOB值 – 图像/文本等)在磁盘上的存储方式不同,不是在表格行内,而是在“行外”。 所以,服务器将在一张大桌子上坚持下来,并在几分钟(小时)内无响应。

 --no downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) --huge downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max) 

PS。 同样适用于nvarchar或course。

在我的情况下,改变列不工作,所以可以使用“修改”命令,如:

alter table [table_name] MODIFY column [column_name] varchar(1200);