SQLCMD 只返回列的前 256 个字符

Met*_*hor 3 windows cmd batch-file sqlcmd

FOR /f "delims=" %%a IN ('"%SQLCMD%" -E -S %Server% -d %DestDb% -h-1 -i GetResult.sql') do (
  SET Result=%%a
)
ECHO "%Result%"
Run Code Online (Sandbox Code Playgroud)

%Result% 设置为实际结果的前 256 个字符。

有没有办法获得查询的整个输出?

Met*_*hor 6

SQLCMD 默认将可变长度列限制为 256。-y 0 参数修复了这个问题。

FOR /f "delims=" %%a IN ('"%SQLCMD%" -E -S %Server% -d %DestDb% -y 0 -i GetResult.sql') do (
  SET Result=%%a
)
ECHO "%Result%"
Run Code Online (Sandbox Code Playgroud)

-h 和 -y 参数是互斥的,因此必须删除 -h-1。