将列从 Nvarchar(max) 更改为 Nvarchar(4000) 错误
Changing columns from Nvarchar(max) to Nvarchar(4000) error
我正在将列从 NVARCHAR(MAX)
向下更改为 NVARCHAR(4000)
该列不需要是 MAX 并且该列应该有 4000 个字符就足够了,因此为了提高性能我正在缩小该列.
我认为这很容易:
alter table [MyTable]
alter column [Description] nvarchar(4000) NULL
但是这给了我错误:
The size (8000) given to the parameter 'Description' exceeds the
maximum allowed (4000).
我不明白这个错误信息。我没有指定 8000
也没有超过 4000
允许的最大值
这是怎么回事?
编辑
表/列中的一些列可以用 NVARCHAR(4000)
,其他的..不行,使用数字 4000,错误似乎表明我可以在特定列上指定的最大值是 NVARCHAR(2000)
原来是其中一条评论所建议的 DDL 触发器。
这些 DDL 触发器是由第三方提供的,用于与客户端进行数据同步,所以我不是 100% 确定这些触发器中发生了什么,但我想他们可能会出现一些计算错误并认为最大值是 nvarchar(2000)
而不是 nvarchar(4000)
我正在将列从 NVARCHAR(MAX)
向下更改为 NVARCHAR(4000)
该列不需要是 MAX 并且该列应该有 4000 个字符就足够了,因此为了提高性能我正在缩小该列.
我认为这很容易:
alter table [MyTable]
alter column [Description] nvarchar(4000) NULL
但是这给了我错误:
The size (8000) given to the parameter 'Description' exceeds the maximum allowed (4000).
我不明白这个错误信息。我没有指定 8000
也没有超过 4000
这是怎么回事?
编辑
表/列中的一些列可以用 NVARCHAR(4000)
,其他的..不行,使用数字 4000,错误似乎表明我可以在特定列上指定的最大值是 NVARCHAR(2000)
原来是其中一条评论所建议的 DDL 触发器。
这些 DDL 触发器是由第三方提供的,用于与客户端进行数据同步,所以我不是 100% 确定这些触发器中发生了什么,但我想他们可能会出现一些计算错误并认为最大值是 nvarchar(2000)
而不是 nvarchar(4000)