从SQL Server Management Studio保留\ n


11

我有一列,EventLog varchar(max)并且可能很大,因为本质上它存储了整个批处理过程的事件日志。

问题是,当我进入查询窗口并执行这样的选择时

SELECT EventLog from BatchProcess

当我将事件日志的文本剪切并粘贴到记事本中时,

  1. 删除所有的NewLine \n,只是一条连续的线。
  2. 仅将一定数量的文本复制到剪贴板中,然后截断其余部分。

如何从SQL Server Management Studio获取EventLog的内容?

Answers:


8

要处理截断,请尝试将其转换为XML进行处理

DECLARE @S varchar(max)

SELECT @S = ''

SELECT @S = @S + '
' + EventLog  FROM BatchProcess

SELECT @S AS [processing-instruction(x)] FOR XML PATH('')

马丁·史密斯(Martin's Smith) 对/programming/2759721/how-do-i-view-the-full-content-of-a-text-or-varcharmax-column-in-sql-server回答中的代码进行了修改-200

这也可以解决换行符,但是如果麻烦的话,请尝试使用其他编辑器


谢谢,这很适合我的需要。我看了一下日志文件,它的大小约为3MB,因此我感觉SQL Server一兆后会切断所有内容。
RoboShop

1
  1. 删除所有的NewLine,只是一条连续的线。

这听起来像记事本的典型缺点。IIRC,为了实际显示换行符,记事本需要\r\n换行符,而不仅仅是\n。尝试粘贴到写字板或真实的编辑器中


1
本来可以,但是我也在Word和写字板中尝试过,但仍然是连续的线。但是,另一个解决方案也很有效,既可以获取数据,又可以显示换行符。
RoboShop

复制和粘贴对我也不起作用。我将其粘贴到新的SSMS查询窗口,Emacs或WordPad中,并将每个CRLF替换为两个空格。如果我使用XML hack,则可以看到换行符,但是我的文本被实体污染了。不过,至少我能掌握要点。我正在将SSMS 2016(13.0.15900.1)和表视图用于我的结果列表。
宾基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.