SQL Server - 如何在不丢弃的情况下更改列nvarchar长度

Már*_*omé 23 sql sql-server ssms

我试图改变表"Post"中列"Body"的长度,如下所示:

ALTER TABLE Post ALTER COLUMN Body nvarchar(8000) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

该列定义为nvarchar(4000),它给我这个错误:

消息2717,级别16,状态2,行1给参数"Body"的大小(8000)超过允许的最大值(4000).

Unh*_*ean 35

请改用Max.如果列声明为VARCHAR,则8000就可以了.

ALTER TABLE Post ALTER COLUMN Body nvarchar(max) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

  • 从 nvarchar(4000) 更改为 nvarchar(MAX) 不仅仅是元数据操作;每一行都会更新。 (2认同)
  • @Jurion 这是一个非常广泛的主张,根据我的经验,这是没有根据的。我期待您的证据来证实您的主张 (2认同)