如何在SQL Server Management Studio中查看NTEXT或NVARCHAR(max)中的所有文本?默认情况下,它似乎只返回前几百个字符(255?),但有时我只是想要一种快速查看整个字段的方法,而不必编写程序来做到这一点。即使是SSMS 2012仍然存在这个问题:(
当前回答
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方法上,但至少想给它应得的荣誉。
其他回答
使用visual studio代码与sql server插件。对于jsons非常有用
如果你只需要查看它,我使用了这个:
print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)
最终的结果是,我得到换行和所有的内容在短信窗口的消息。 当然,它只允许一个单元格-如果你想从一些行中做一个单元格,你可以这样做:
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字符串。否则太难读了!
快速技巧-
SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
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打开单元格内容
(功能允许在任何外部应用程序中打开字段的内容,所以如果你知道它是文本-你使用文本编辑器打开它。如果内容是带有图片的二进制数据,则选择视图作为图片。下面的示例显示打开图片):
推荐文章
- SQL Server:过滤sp_who2的输出
- 在SQL Server上使用varchar(MAX) vs TEXT
- 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()计算年龄(以年为单位)