在 SQL Server 2008 数据库中,是否可以将列的类型从 varchar(255)
更改为 varchar(MAX)
而无需删除表并重新创建?
每次我尝试使用 SQL Server Management Studio 进行更改时都会出现错误。但如果能够避免这个麻烦,知道是否可以在不删除和创建的情况下更改类型会很好。
谢谢。
在 SQL Server 2008 数据库中,是否可以将列的类型从 varchar(255)
更改为 varchar(MAX)
而无需删除表并重新创建?
每次我尝试使用 SQL Server Management Studio 进行更改时都会出现错误。但如果能够避免这个麻烦,知道是否可以在不删除和创建的情况下更改类型会很好。
谢谢。
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
这个选项在 工具 > 选项
中,取消勾选该选项后,您就可以再次在表设计器中对表结构进行此类更改。
请注意
类似于以下内容
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
马丁·史密斯的回答:
如果你将其增大为varchar(100 - 8000)
(即除varchar(max)
外的任何值),并且你是通过TSQL而不是SSMS GUI进行操作
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL,并且没有将列的可空性从
NULL
更改为NOT NULL
(在这种情况下,在验证所有行并潜在地从NOT NULL
或NULL
更改后),则这是一种快速的仅元数据更改。它可能需要等待对表的SCH-M
锁定,但一旦获取该锁定,更改将几乎瞬间完成。SCH-M
锁定期间,其他查询将被阻塞,而不是跳过队列排在前面,因此您可能需要考虑首先添加SET LOCK_TIMEOUT
。ALTER TABLE
语句中明确指定NOT NULL
,如果那是原始列状态,否则该列将被更改为允许NULL
。