加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-24 10:49:30 所属栏目:MsSql教程 来源:网络整理
导读:我有一个MS SQL Server 2008 R2数据库服务器当前正在使用生产应用程序. 对应用程序的新增强现在要求表中的varchar(100)列的长度增加. 可以在不影响当前数据的情况下增加prod DB中现有列的长度吗? 是否必须在非工作时间内完成此更改以避免服务中断? 解决

我有一个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.

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读