所以我在一个SQLServer 2005数据库中有一个存储过程,该存储过程从表中检索数据,格式化数据为字符串并将其放入一个varchar(max)输出变量中。
然而,我注意到尽管len(s)报告字符串> 8,000,但我收到的实际字符串(通过SQLServer输出窗口)总是被截断为< 8,000个字节。
有人知道这可能的原因吗?非常感谢。
所以我在一个SQLServer 2005数据库中有一个存储过程,该存储过程从表中检索数据,格式化数据为字符串并将其放入一个varchar(max)输出变量中。
然而,我注意到尽管len(s)报告字符串> 8,000,但我收到的实际字符串(通过SQLServer输出窗口)总是被截断为< 8,000个字节。
有人知道这可能的原因吗?非常感谢。
输出窗口本身很可能截断了您的数据。变量本身保存了数据,但窗口只显示了前X个字符。
如果您从.NET应用程序中读取该输出变量,您将看到完整的值。
你说的是在SQL Server管理工具中吗?如果是的话,有一些选项可以控制返回的字符数(我只在我的电脑上有2008版,但设置在 工具|选项|查询结果|SQL Server|结果到网格|最大检索字符数 和 结果到文本|每列显示的最大字符数 中)。
数据都在,但是管理工具没有显示全部的数据。
在这种情况下,我使用MS Access连接到表并读取数据。很遗憾您必须使用Access查看数据,而不是Management Studio或Query Analyzer,但这似乎就是事实。
然而,我注意到尽管len(s)报告该字符串> 8,000
我也遇到了SQL Studio的问题:)但是varchar的最大长度不是8,000字节,nvarchar(unicode)的最大长度是4,000吗?
有没有可能列的数据类型实际上是文本或ntext,并且您正在转换为 varchar ?