在SQL Server 2008管理工具中,如何查看文本或varchar(MAX)列的完整内容?

112
在这个使用 SQL Server 2008(版本号为10.0.1600)的数据库中,有一个名为“Events”的表,其中包含一个名为“Details”的“text”列。(是的,我意识到它实际上应该是一个varchar(MAX)列,但是设置此数据库的人没有这样做。)
这个列包含非常大的异常日志和相关的JSON数据,我正在尝试通过SQL Server Management Studio访问它们,但每当我将网格中的结果复制到文本编辑器时,它都会在43679个字符处截断。
我曾经在互联网的不同位置上阅读过,您可以将查询结果的XML数据的最大检索字符数在“工具 > 选项 > 查询结果 > SQL Server > 结果到网格”中设置为无限制,然后执行类似于以下的查询:
select Convert(xml, Details) from Events
where EventID = 13920
(请注意,数据列根本不是XML。将该列转换为XML仅是我通过Google找到的解决方法,别人曾用它来避免从text或varchar(MAX)列检索数据时SSMS的限制。)
然而,在设置了上述选项后,运行查询并单击结果中的链接,我仍然会收到以下错误消息:
无法显示XML。 发生了以下错误:已发生意外的文件结尾。 行5,位置220160。
其中一个解决方案是增加从服务器检索XML数据的字符数。 要更改此设置,请在“工具”菜单上单击“选项”。
那么,有没有办法访问这些数据?将列转换为varchar(MAX)是否可以解决我的问题?
11个回答

0
declare @takeOver table(details nvarchar(max))
declare @json_auto nvarchar(max)

select @json_auto = (select distinct 
From table_1 cg
inner join table_2 c
on cg.column_1= c.column_1and cg.isDeleted =0 and c.isdeleted = 0
inner join table_3 d
on c.column_2= d.column_2 and d.isdeleted = 0
where cg.Id= 1017
for Json Auto)

insert into @takeOver
values(@json_auto)

select * from @takeOver

我们不会在SSMS中进行任何配置更改,只需输出如下内容。 - DarkDemons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接