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有一个内置的脚本对象功能。我需要打印的内容可能不是数据库对象:我需要打印一个任意字符串。
答案 0 :(得分:1)
有时候我必须生成非常大的脚本,所以我必须解决同样的问题。这是我的解决方案:
创建一个select,在最后添加换行符并将其作为XML。查询选项(在查询窗口中右键单击“网格”部分)允许在网格视图中指定XML的最大大小,这几乎是无限的(硬件限制)。
点击XML后,您可以复制并粘贴其内容。
试一试:
SELECT name + CHAR(13)+CHAR(10)
FROM sys.objects
FOR XML PATH(''),ROOT('x')