gpt4 book ai didi

sql-server - ALTER TABLE ALTER COLUMN 会中断正在进行的数据库访问吗?

转载 作者:行者123 更新时间:2023-12-02 15:40:21 34 4
gpt4 key购买 nike

我在表中有一列,因此它不再是 NVARCHAR(256),而是 NVARCHAR(MAX)。我知道执行此操作的命令 (ALTER TABLE ALTER COLUMN NVARCHAR(MAX))。我的问题实际上是关于中断。我必须在生产环境中执行此操作,我想知道当我在实时环境中执行此操作时是否有可能对用户的使用造成一些干扰。当时正在使用数据库的用户会不会被开机?此操作可能会花费太长时间吗?

谢谢,

萨钦

最佳答案

我已经删除了我之前的回答,该回答声称这只是一个元数据更改,并且我正在提交一个具有完全不同结论的新回答!

虽然对于更改为 nvarchar(max) 的情况,更改为 nvarchar(4000) 确实如此,但操作似乎非常昂贵。 SQL Server 将添加一个新的可变长度列并复制以前存在的数据,这可能意味着耗时的阻塞操作会导致许多页面拆分以及内部和逻辑碎片。

从下面可以看出

CREATE TABLE T
(
Foo int IDENTITY(1,1) primary key,
Bar NVARCHAR(256) NULL
)

INSERT INTO T (Bar)
SELECT TOP 4 REPLICATE(CHAR(64 + ROW_NUMBER() OVER (ORDER BY (SELECT 0))),50)
FROM sys.objects

ALTER TABLE T ALTER COLUMN Bar NVARCHAR(MAX) NULL

然后在 SQL Server Internals Viewer 中查看页面显示

Screenshot

白色的 41 00 ... 是以前版本的列中浪费的空间。

关于sql-server - ALTER TABLE ALTER COLUMN 会中断正在进行的数据库访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743080/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com