在文本输出中打印超过8000个字符

时间:2015-09-17 17:44:18

标签: sql-server

MS SQL服务器上的打印输出有限制(我使用SQL Server 2014)。

我已将每列中显示的最大字符数设置为8192(最大值)。当我尝试将变量设置为长字符串并打印它时,它会被截断。输出设置为text:

declare @text nvarchar(max)
set @text = (
             select definition
               from sys.sql_modules
              where object_id = object_id(N'NameOfALargeStoredProcedure')
            )
print @text

这将返回大约4K的角色。如果我将@text更改为varchar(而不是nvarchar),我会获得大约8K字符。

程序的定义远大于8K。我需要打印大于8K的字符串的整个文本。

我知道SQL Server有一个内置的脚本对象功能。我需要打印的内容可能不是数据库对象:我需要打印一个任意字符串。

1 个答案:

答案 0 :(得分:1)

有时候我必须生成非常大的脚本,所以我必须解决同样的问题。这是我的解决方案:

创建一个select,在最后添加换行符并将其作为XML。查询选项(在查询窗口中右键单击“网格”部分)允许在网格视图中指定XML的最大大小,这几乎是无限的(硬件限制)。

点击XML后,您可以复制并粘贴其内容。

试一试:

SELECT name + CHAR(13)+CHAR(10)
FROM sys.objects
FOR XML PATH(''),ROOT('x')