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转换<为<等问题或由于这些字符而导致失败(在此处信用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)
小智 41
我能够让这个工作......
SELECT CAST('<![CDATA[' + LargeTextColumn + ']]>' AS XML) FROM TableName;
Run Code Online (Sandbox Code Playgroud)
Dar*_*711 19
一种解决方法是右键单击结果集并选择"将结果另存为...".这会将其导出为CSV文件,其中包含列的全部内容.不完美但对我来说运作得很好.
你试过这个简单的解决方案吗?只需点击2次!
在查询窗口,
您将获得要在文件中看到的所有文本!我可以在varchar(MAX)字段的结果中看到130,556个字符
我发现最简单的解决方法是备份表并查看脚本。去做这个
Tasks>Generate Scripts...NextSelect specific database objects然后选择您的表。NextSave scripts to a specific locationSave to file并填写相关选项Advanced按钮General> 设置Types of data to script为Data only或Schema and Data,然后单击确定Next| 归档时间: |
|
| 查看次数: |
100321 次 |
| 最近记录: |