SSMS和SQLCMD仅显示前8000个字符

时间:2009-09-01 19:50:28

标签: sql-server-2005 ssms sqlcmd

当我尝试执行时在SSMS中:

SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))    

我只看到显示的前8000个字符。设置工具>>选项>>查询结果>> Sql Server>>网格结果设置为65534,结果文本设置为8192.

当我尝试从 SQLCMD

运行时
sqlcmd -S Server -E -y 0 -Q "SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))" -o out.txt

我只看到8000个字符。

标志 -y 0 应该设置为1 MB。但我不超过8000个字符。

可能是什么问题?

感谢,
_UB

3 个答案:

答案 0 :(得分:4)

REPLICATE输出基于数据类型输入。所以这解释了sqlcmd。

  

如果字符串表达式不是varchar(max)或nvarchar(max)类型,   REPLICATE截断返回值   在8,000字节。要返回值   大于8,000字节,   字符串表达式必须是显式的   施放到适当的大值   数据类型。

所以,请使用此SELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)

SSMS从未显示所有文本数据(查询分析器也没有)

答案 1 :(得分:2)

答案 2 :(得分:0)

VARCHAR(MAX)只能容纳8000个字符

see here

来自MSDN:

  

varchar [(n | max)] -   可变长度,非Unicode字符   数据。 n可以是1到1之间的值   8000。 max表示最大值   存储大小为2 ^ 31-1字节

正如Joseph(下文)所说,要保留更多内容,请使用text或ntext数据类型,但如果您希望能够搜索该类型,那么您需要启用某种形式的全文索引。

Better Link