如何在SQL Server 2008 Management Studio中查看text或varchar(MAX)列的完整内容?

ada*_*ord 84 sql-server ssms sql-server-2008

在这个实时SQL Server 2008(build 10.0.1600)数据库中,有一个Events表,其中包含一个text名为的列Details.(是的,我意识到这实际上应该是一个varchar(MAX)专栏,但无论是谁设置这个数据库都没有这样做.)

此列包含非常大的异常日志和我尝试通过SQL Server Management Studio访问的关联JSON数据,但每当我将结果从网格复制到文本编辑器时,它会以43679个字符截断它.

我已经阅读了Internet上的各种位置,您可以将XML数据检索的最大字符数设置Tools > Options > Query Results > SQL Server > Results To Grid为无限制,然后执行如下查询:

select Convert(xml, Details) from Events
where EventID = 13920
Run Code Online (Sandbox Code Playgroud)

(请注意,数据列根本不是XML.CONVERT将列添加到XML只是我从谷歌搜索中找到的一种解决方法,其他人习惯于绕过SSMS从一个text或一varchar(MAX)列中检索数据的限制.)

但是,在设置上面的选项,运行查询,然后单击结果中的链接后,我仍然会收到以下错误:

无法显示XML.发生以下错误:发生了意外的文件结束.第5行,位置220160.

一种解决方案是增加从服务器检索的用于XML数据的字符数.要更改此设置,请在"工具"菜单上单击"选项".

那么,关于如何访问这些数据的任何想法?将列转换为varchar(MAX)修复我的困境?

Mar*_*ith 89

可能在非常有限的情况下工作的一个技巧就是以下面的特殊方式命名列.

DECLARE @S varchar(max) = 'A'

SET @S =  REPLICATE(@S,100000) + 'B' 

SELECT @S as [XML_F52E2B61-18A1-11d1-B105-00805F49916B]
Run Code Online (Sandbox Code Playgroud)

在SSMS 2012和2014中,这将显示如下结果

在此输入图像描述

单击它可在XML查看器中打开完整结果.向右滚动显示B的最后一个字符被保留,

然而,这确实存在一些重大问题.在查询中添加额外的列会破坏效果,并且额外的行都会与第一行连接起来.最后,如果字符串包含诸如<打开XML查看器之类的字符,则会出现解析错误.

执行此操作的一种更强大的方法可以避免SQL Server转换<&lt;等问题或由于这些字符而导致失败(在此处信用Adam Machanic).

DECLARE @S varchar(max)

SELECT @S = ''

SELECT @S = @S + '
' + OBJECT_DEFINITION(OBJECT_ID) FROM SYS.PROCEDURES

SELECT @S AS [processing-instruction(x)] FOR XML PATH('')
Run Code Online (Sandbox Code Playgroud)

  • 将CDATA添加到Convert语句有效!非常感谢.:) (2认同)
  • @MartinSmith 很好的答案!想知道我从你的回答中学到了多少!+1 (2认同)

小智 41

我能够让这个工作......

SELECT CAST('<![CDATA[' + LargeTextColumn + ']]>' AS XML) FROM TableName;
Run Code Online (Sandbox Code Playgroud)


Dar*_*711 19

一种解决方法是右键单击结果集并选择"将结果另存为...".这会将其导出为CSV文件,其中包含列的全部内容.不完美但对我来说运作得很好.

解决方法

  • 除非进行上述配置,否则不会导出完整内容。 (3认同)

Jen*_*eaf 8

你试过这个简单的解决方案吗?只需点击2次!

在查询窗口,

  1. 将查询选项设置为"结果到网格",运行您的查询
  2. 右键单击网格角的结果选项卡,将结果保存为任何文件

您将获得要在文件中看到的所有文本!我可以在varchar(MAX)字段的结果中看到130,556个字符

结果在一个文件中

  • 直接 - 容易 - 并且总是被遗忘,直到你再次需要它:) (2认同)

Kev*_*don 5

我发现最简单的解决方法是备份表并查看脚本。去做这个

  1. 右键单击您的数据库,然后选择Tasks>Generate Scripts...
  2. “简介”页面点击 Next
  3. “选择对象”页面
    1. 选择,Select specific database objects然后选择您的表。
    2. 请点击 Next
  4. “设置脚本选项”页面
    1. 将输出类型设置为 Save scripts to a specific location
    2. 选择Save to file并填写相关选项
    3. 点击Advanced按钮
    4. General> 设置Types of data to scriptData onlySchema and Data,然后单击确定
    5. 请点击 Next
  5. “摘要页面”单击下一步
  6. 您的sql脚本应基于在4.2中设置的选项生成。打开此文件并查看您的数据。