sql - 将列从 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)
解决方案
正如其中一条评论所建议的那样,原来是 DDL 触发器。
nvarchar(2000)
这些 DDL 触发器是由第三方提供的,用于将数据同步到客户端,所以我不能 100% 确定这些触发器中发生了什么,但我想他们计算错误并认为最大值是nvarchar(4000)
推荐阅读
- python - 如何从 Django Admin 的 response_change 中更改模型值?
- android - TTS onUtteranceCompleted 在 Android 中不起作用
- docker - 我需要创建一个已创建主题的 kafka 图像
- node.js - 无法使用 timeuuid 作为主键执行时间序列查询
- python - pandas 与 groupby 的相关性
- angular - 如何使用 typescript 获取 kendo 调度程序在更改视图(如日视图或周视图)上的当前视图?
- rest - 无服务器框架和 DynamoDB:JSON.parse 中 JSON 中的意外令牌
- sql - 如何从位置/时间戳 SQL 数据流创建 SQL 位置时间表
- oracle - 执行长时间运行的查询时,如何避免 Oracle APEX 5.1 中的 Bad Gateway 超时?
- flutter - 为 Flutter App 添加高级功能