对nvarchar限制感到困惑

时间:2012-09-06 22:38:29

标签: sql-server

我有一个简单的问题,我无法在任何地方找到答案。我经常需要将一种类型的数据库转换为另一种类型,因此我正在编写一个程序来来回转换MS SQL Server数据库。我遇到的问题是我无法声明最大长度超过4000的nvarchar变量。我明白了,

“参数'description'的大小(6000)超过了允许的最大值(4000)。”

然而在原始数据库中明确定义为nvarchar(6000),至少我认为是因为max_length是6000,如果你使用max max_length是-1,对吧?我知道我可以使用nvarchar(max),但如果我正在编写转换数据库的软件,我希望尽可能保持原始版本。

最近是否更改了nvarchar最大限制,还是我错过了一些设置?

1 个答案:

答案 0 :(得分:5)

给定大小(6000)以字节为单位,当您给出长度时,它是unicode的字符数。限制4000是因为nvarchar(xxxx)和nvarchar(max)的内部存储不同。如果您想要超过4000个字符的存储空间,请使用nvarchar(max)。