ana*_*ocs 29 sql-server sql-server-2008-r2
我有一个 MS SQL Server 2008 R2 DB 服务器,目前正在与生产应用程序一起使用。
该应用程序的新增强功能现在需要varchar(100)增加表格中的列长度。
能否在不影响当前数据的情况下增加 prod DB 中此现有列的长度?
是否必须在非工作时间完成此更改以避免服务中断?
Mar*_*ith 46
如果您将其增加到varchar(100 - 8000)(即除 之外的任何内容varchar(max))并且您是通过 TSQL 而不是 SSMS GUI 执行此操作
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
Run Code Online (Sandbox Code Playgroud)
并且在某些情况下不会将列的可空性从NULLto NOT NULL(这将锁定表,同时验证所有行并可能写入)或 from NOT NULLtoNULL 在某些情况下,那么这只是一个快速的元数据更改。它可能需要等待SCH-M表上的锁定,但一旦获得,更改将几乎是即时的。
需要注意的一个警告是,在等待SCH-M锁定期间,其他查询将被阻塞,而不是在它前面跳入队列,因此您可能需要考虑添加SET LOCK_TIMEOUT第一个。
还要确保在ALTER TABLE语句中明确指定NOT NULL这是否是原始列状态,否则该列将更改为 allow NULL。
| 归档时间: |
|
| 查看次数: |
60810 次 |
| 最近记录: |