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

我有一个MS sql Server 2008 R2数据库服务器当前正在使用生产应用程序.

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

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

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

解决方法

@H_403_11@ 如果你将它增加到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.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03