Answers:
若要更改当前查询的选项,请在“查询”菜单上单击“查询选项”,或在“ SQL Server查询”窗口中右键单击并选择“查询选项”。
...
检索
到的最大字符数输入1到65535之间的一个数字,以指定将在每个单元格中显示的最大字符数。
如您所见,最大值为64k。默认值要小得多。
顺便说一句BTW 结果到文本有更大的局限性:
每列中显示的最大字符数
此值的默认值为256。增加此值可显示更大的结果集而不会被截断。最大值为8,192。
通过仅选择该列的“结果到网格”,然后右键单击它,然后将结果另存为CSV文件,可以从NVARCHAR(MAX)列中获取全文(99,208个字符)。要查看结果,请使用文本编辑器(NOT Excel)打开CSV文件。有趣的是,当我尝试运行相同的查询但启用了“结果到文件”功能时,使用“结果到文本”限制来截断输出。
@MartinSmith描述为(当前)已接受答案的注释的变通方法对我不起作用(尝试查看完整的XML结果并抱怨“'['字符,十六进制值0x5B,包含在名称中”)。
快速技巧
SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
我已经为SSMS编写了一个加载项,并且此问题已在此处解决。您可以使用以下两种方式之一:
您可以使用“复制当前单元格1:1”将原始单元格数据复制到剪贴板:
http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks
或者,您也可以使用“单元格可视化工具”功能在外部文本编辑器(记事本++或记事本)中打开单元格内容:http : //www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers
(该功能允许在任何外部应用程序中打开字段的内容,因此,如果您知道它是文本,则可以使用文本编辑器来打开它。如果内容是带有图片的二进制数据,则可以选择以图片形式查看。下面的示例显示了打开图片):
以XML返回数据
SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'
如果您要返回的文本不包含未编码的字符(例如&
)&
,则该方法将起作用,否则将导致XML转换失败。
使用PowerShell返回数据
为此,您将需要在运行命令的计算机上安装PowerShell SQL Server模块。
如果一切都准备就绪,请配置并运行以下脚本:
Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"
确保将-MaxCharLength
参数设置为适合您需要的值。
如果您只需要查看它,我已经使用过:
print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)
最终结果是我得到换行符和SMSS消息窗口中的所有内容。当然,它只允许一个单元格-如果要从多个行中创建一个单元格,则可以执行以下操作:
declare @T varchar(max)=''
select @T=@T
+ isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
+ replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T
我用它来验证SQL代码生成的JSON字符串。否则很难阅读!