如何在nvarchar(max)中设置9000个字符

时间:2009-09-08 08:24:37

标签: sql-server

我需要在nvarchar变量中设置9000个字符

declare @inXMLRequest xml

declare @insertsql nvarchar(max)

set @insertsql='--------9000 characters--------'
EXEC sp_executesql   @insertsql,
                   N'@inXMLRequest XML OUTPUT', 
                     @inXMLRequest OUTPUT 
print @insertsql

但NVARCHAR只占用5000个字符 如何在NVARCHAR变量中设置9000个字符?

3 个答案:

答案 0 :(得分:1)

如果您编写一个在管理工作室外尝试相同操作的小程序,您将能够执行此操作。

遗憾的是,出于某种原因,在管理工作室中使用insert语句无法做到这一点。您对管理工作室的内容有4k的限制。

我以前有人插入,即首先插入4k字符然后插入下一个4k字符等

答案 1 :(得分:1)

我不确定,但你不能在varchar中存储这么长的行。 一行必须适合db-page。 varchar字段存储在存储行的同一页面中。 页面通常小于8192字节(取决于db-system)

有一些例外,例如blob字段,它们没有存储在一行的同一页面中。

你应该使用其他数据类型,如text / blob / image。

nvarchar 9000是顺便说一句。不可能这将分配18000字节不适合页面。 这就是4000字符限制的原因。

答案 2 :(得分:0)

感谢All,

直接使用SP_Executesql我们执行nvarchar变量

上面我们正在准备@insertsql nvarchar变量超过8000个字符,它就像这样给sp_executesql

EXEC sp_executesql @insertsql,N'@ inXMLRequest XML OUTPUT',@ inXMLRequest OUTPUT

将以上查询的内容替换为以下查询

Exec ('DeClare @inXMLRequest XML SET @inXMLRequest='------above 8000 characters---')

最后,我们将执行该nvarchar字符串并退出