【发布时间】:2012-09-06 22:38:29
【问题描述】:
我有一个快速的问题,我无法在任何地方找到答案。我经常需要将一种类型的数据库转换为另一种类型,因此我正在编写一个程序来来回转换 MS SQL Server 数据库。我遇到的问题是我无法声明最大长度超过 4000 的 nvarchar 变量。我明白了,
“给参数'description'的大小(6000)超过了允许的最大值(4000)。”
然而,这在原始数据库中被明确定义为 nvarchar(6000),至少我认为是这样,因为 max_length 是 6000,如果你使用 max max_length 是 -1,对吧?我知道我可以只使用 nvarchar(max) 但如果我正在编写转换数据库的软件,我希望尽可能地保持原始状态。
最近更改了 nvarchar 最大限制还是我错过了某些设置?
【问题讨论】:
-
max_length以字节为单位,而不是字符。nvarchar(6000)无效,因为 字符 限制为 4000。 -
你可以有 1-4000,或者 Nvarchar 的最大值。也许您之前看到的是大小 - 由于 Nvarchar 存储 unicode 数据,它占用的空间是常规 varchar 的两倍 - 我预计您看到的是 Nvarchar(3000) - 大小将达到 6000。
-
哦,当然,你是对的。最大长度显然是以字节为单位的,谢谢!
-
是的,你是对的 -
-1 = Column data type is varchar(max), nvarchar(max), varbinary(max), or xml.(msdn.microsoft.com/en-us/library/ms176106.aspx)
标签: sql-server