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

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

我将使用这个TSQL语句:

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

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

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

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

4 Solutions collect form web for “当在一个大的表上增加VARCHAR列的大小时会有什么问题?”

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

观察:如果其中一个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);

  • SQL Server文本types与varchar数据types
  • Postgresql - 更改varchar列的大小
  • varchar字段 - 是两个更有效率的权力?
  • #1071 - 指定的密钥太长; 最大密钥长度是767字节
  • varchar和nvarchar SQL Server数据types之间的主要性能差异是什么?
  • PostgreSQL中的CHARACTER VARYING和VARCHAR有什么区别?
  • 如何将mysql字段types从INT更改为VARCHAR会影响以前存储为INT的数据
  • MySQL:大VARCHAR与TEXT?
  • varchar(max)中有多less个字符
  • MySQL的VARCHAR大小?
  • 为什么VARCHAR需要长度规格?