如何从SSMS获取完整的结果集

jav*_*y79 19 sql sql-server

如何在SQL Server Management Studio中获取行的完整内容?

如果使用"结果到网格",数据将被编码,因此会丢失换行符等内容.如果您执行"结果到文件"或"结果到文本",则文本限制为8192个字符.

注意:我有解决方案,但我使用SO来记录这个.如果您有更好的答案,请随意发布.

Mar*_*ith 44

我把它转换为XML

select @variable_with_long_text
 as [processing-instruction(x)] FOR XML PATH 
Run Code Online (Sandbox Code Playgroud)

processing-instruction位是没有阻止它entitising字符,如<&lt;


And*_*ich 5

我为SSMS开发了一个插件-“ SSMSBoost”,最近又添加了“复制单元内容1:1”功能(可在Grid的上下文菜单中访问)。它将从单元返回所有数据,而无需进行任何修改和截断。


小智 5

只需使用默认的“将结果网格化”,然后右键单击网格结果并选择“将结果另存为...” CSV。

完整内容将保存在文件中,即使有换行符也是如此。某些varchar(max)列的内容约为3MB,并保存确定,没有被截断。


jav*_*y79 -1

我公司的一位 DBA 建议一种可能的解决方案是将数据放入临时变量中,然后在循环中使用打印函数,如下所示:

DECLARE @contents varchar(MAX)
SET @contents = ''

SELECT     @contents = @contents + Contents + CHAR(13)
FROM         dbo.tFOO
WHERE     someConition

DECLARE @tContents TABLE (id int IDENTITY, contents varchar(MAX))

WHILE @contents LIKE '%' + CHAR(13) + '%'
BEGIN
    PRINT SUBSTRING(@contents, 0, CHARINDEX(CHAR(13), @contents))

    SET @contents = SUBSTRING(@contents, CHARINDEX(CHAR(13), @contents)+1, LEN(@contents) - CHARINDEX(CHAR(13), @contents))
END
Run Code Online (Sandbox Code Playgroud)