You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下sqlcmd执行PRINT命令截断长消息问题求助

Linux下sqlcmd执行PRINT长字符串被截断的解决思路

问题背景

环境:Linux系统,sqlcmd版本17.10.0001.1,连接Microsoft SQL Server 2017
执行命令:sqlcmd -S [server] -d [db] -U [user] -i input.sql -o output.sql
问题:input.sql中生成的NVARCHAR类型变量@message长度超过1000字符,执行PRINT @message后输出文件仅保留约1000字符即被截断。Windows和Mac环境下无此问题,尝试转换为TEXT类型无效,且@message含固定格式换行无法拆分输出。

解决思路

  • 改用SELECT替代PRINT输出
    直接用SELECT @message替换PRINT @message,sqlcmd对SELECT结果的输出没有1000字符的截断限制,既能完整输出长字符串,也能保留原有换行格式。

  • 调整sqlcmd行宽配置
    执行命令时添加-w <宽度值>参数,设置足够大的行宽上限,比如:

    sqlcmd -S [server] -d [db] -U [user] -i input.sql -o output.sql -w 8192
    

    8192是sqlcmd支持的最大行宽值,通过该参数可以避免因默认行宽限制导致的字符串截断。

  • 升级sqlcmd版本
    该截断问题大概率是Linux版sqlcmd 17.10.0001.1的版本bug,尝试升级到最新版的mssql-tools,新版本通常会修复这类兼容性问题。

内容的提问来源于stack exchange,提问作者QwertyStuff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:18:17