sql-server – 在live prod表上更改varchar的长度

前端之家收集整理的这篇文章主要介绍了sql-server – 在live prod表上更改varchar的长度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个MS sql Server 2008 R2数据库服务器当前正在使用生产应用程序.

对应用程序的新增强现在要求表中的varchar(100)列的长度增加.

可以在不影响当前数据的情况下增加prod DB中现有列的长度吗?

是否必须在非工作时间内完成此更改以避免服务中断?

解决方法

如果你将它增加到varchar(100 – 8000)(即varchar(max)以外的任何东西)并且你是通过Tsql而不是SSMS GUI来实现的
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

并且不会将列的可空性从NULL更改为NOT NULL(在所有行被验证为and potentially written to时将锁定表)或从NOT NULL更改为NULL in some circumstances,这是仅快速元数据更改.可能需要等待桌面上的SCH-M锁定,但一旦获得该锁定,该更改将非常即时.

需要注意的一点是,在等待SCH-M锁定期间,其他查询将被阻止而不是在其前面跳过队列,因此您可能需要先考虑添加SET LOCK_TIMEOUT.

还要确保在ALTER TABLE语句中显式指定NOT NULL(如果这是原始列​​状态),否则该列将更改为允许NULL.

猜你在找的MsSQL相关文章