如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎只返回前几百个字符(255?),但有时我只是想要一种快速查看整个字段的方法,而不必编写程序来做到这一点。即使是SSMS 2012仍然存在这个问题:(
当前回答
我能够从NVARCHAR(MAX)列中获得全文(99,208个字符),只需选择(Results to Grid)该列,然后右键单击它,然后将结果保存为CSV文件。要查看结果,使用文本编辑器(不是Excel)打开CSV文件。有趣的是,当我试图运行相同的查询,但启用了“结果到文件”,输出被使用“结果到文本”限制截断。
@MartinSmith描述为对(目前)接受的答案的评论的解决方法对我来说不起作用(在试图查看完整的XML结果时,出现了一个错误,抱怨“'['字符,十六进制值0x5B,不能包含在名称中”)。
其他回答
在较新版本的SSMS中,可以在(查询/查询选项/结果/网格/最大字符检索)菜单中配置:
旧版本的SSMS
选项(查询结果/SQL Server/网格页面结果)
如果要更改当前查询的选项,请在“查询”菜单中单击“查询选项”,或在“SQL Server查询”窗口中单击右键,选择“查询选项”。
...
最大字符检索 输入一个从1到65535的数字来指定在每个单元格中显示的最大字符数。
如你所见,最大值是64k。默认值要小得多。
BTW,结果到文本有更激烈的限制:
每列显示的最大字符数 该值默认为256。增加此值以显示更大的结果集而不截断。最大值为8192。
PowerShell替代
这是一个老帖子,我读了答案。尽管如此,我还是觉得从SSMS中输出未修改的多行大文本字段有点太痛苦了。最后我写了一个小的c#程序来满足我的需求,但是我想它可能可以用命令行来完成。事实证明,使用PowerShell可以相当容易地做到这一点。
首先从管理PowerShell安装SqlServer模块。
Install-Module -Name SqlServer
使用Invoke-Sqlcmd运行查询:
$Rows = Invoke-Sqlcmd -Query "select BigColumn from SomeTable where Id = 123" `
-MaxCharLength 2147483647 -ConnectionString $ConnectionString
这将返回一个行数组,你可以输出到控制台,如下所示:
$Rows[0].BigColumn
或输出到一个文件,如下所示:
$Rows[0].BigColumn | Out-File -FilePath .\output.txt -Encoding UTF8
结果是一个漂亮的未删节的文本写入文件以供查看/编辑。我相信有一个类似的命令保存回SQL Server的文本,虽然这似乎是一个不同的问题。
编辑:@dvlsc给出了一个答案,将这种方法描述为次要解决方案。我想是因为它被列为次要答案,所以我一开始就错过了它。我将把我的答案集中在PowerShell方法上,但至少想给它应得的荣誉。
我已经为SSMS写了一个插件,这个问题已经解决了。你可以使用以下两种方法之一:
您可以使用“复制当前单元格1:1”将原始单元格数据复制到剪贴板:
http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks
或者,您可以选择在外部文本编辑器(notepad++或notepad)中使用“单元格可视化”功能: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}'
确保您在SSMS选项窗口中设置了合理的限制,具体取决于您期望的结果。
如果你返回的文本不包含未编码的字符,比如&而不是&这将导致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参数设置为适合您需要的值。
使用visual studio代码与sql server插件。对于jsons非常有用
推荐文章
- Visual Studio: ContextSwitchDeadlock
- Sql Server字符串到日期的转换
- 如何将SQL Azure数据库复制到本地开发服务器?
- SQL Server 2008不能用新创建的用户登录
- SQL Server中User和Login的区别
- 在参数声明中,varchar(MAX)的大小是多少?
- 数据库性能调优有哪些资源?
- 为两列的组合添加唯一的约束
- 如何在SQL server中检查存储过程或函数的最后更改日期
- SQL Server的隐藏特性
- 方括号[]在sql语句中有什么用?
- 对象'DF__*'依赖于列'*' -将int改为double
- 如何根据出生日期和getDate()计算年龄(以年为单位)
- 最有效的T-SQL方法垫一个varchar的左边到一定的长度?
- 如何改变SQL在“编辑前200行”在SSMS 2008