我的解决方案有点迂回,但让我到了那里(只要输出少于 65535 个字符):
在 SQL Management Studio 中,将网格结果的限制设置为 65535(工具 > 选项 > 查询结果 > SQL Server > 结果到网格 > 非 XML 数据)
- 运行查询,输出到网格
- 右键单击结果,选择“将结果另存为...”并将结果保存到文件
- 在记事本或类似工具中打开文件以获取输出
更新:为了证明这是可行的,这里有一些选择单个 100,000 个字符列的 SQL。如果我将网格输出保存到 csv 文件,则所有 100,000 个字符都在那里,没有截断。
DECLARE @test nvarchar(MAX), @i int, @line nvarchar(100)
SET @test = ''; SET @i = 100
WHILE @i < 100000
BEGIN
SET @test = @test + STUFF(REPLICATE('_', 98) + CHAR(13) + CHAR(10), 1, LEN(CAST(@i AS nvarchar)), CAST(@i AS nvarchar))
SET @i = @i + 100
END
SELECT @test
笔记:
- 正如我最初认为的那样,字符长度设置似乎没有任何区别。
- 我正在使用 SQL 2008 R2(服务器和 Management Studio)
- 如果长列存储在局部变量中(如本例所示)或从实际表中选择,似乎没有什么区别