首页 > 解决方案 > 将列从 Nvarchar(max) 更改为 Nvarchar(4000) 错误

问题描述

我正在将列从NVARCHAR(MAX)向下更改NVARCHAR(4000)为不需要为 MAX 的列,并且 4000 个字符对于该列应该足够了,因此为了提高性能,我正在使列更小。

我认为这很容易:

alter table [MyTable]
alter column [Description] nvarchar(4000) NULL

然而,这给了我错误:

赋予参数“描述”的大小 (8000) 超过了允许的最大值 (4000)。

我不明白这个错误信息..我没有指定8000,我什至没有超过允许的最大值4000

那么这里发生了什么?

编辑

表/列上的某些列可以使用NVARCHAR(4000),而其他.. 则不行,使用数字 4000,错误似乎表明我可以在特定列上指定的最大值是 NVARCHAR(2000)

标签: sqlsql-serveralter-tablenvarchar

解决方案


正如其中一条评论所建议的那样,原来是 DDL 触发器。

nvarchar(2000)这些 DDL 触发器是由第三方提供的,用于将数据同步到客户端,所以我不能 100% 确定这些触发器中发生了什么,但我想他们计算错误并认为最大值是nvarchar(4000)


推荐阅读