SQLCMD仅返回列的前256个字符

时间:2017-07-27 12:40:12

标签: windows batch-file cmd sqlcmd

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

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

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

2 个答案:

答案 0 :(得分:2)

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%"

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

答案 1 :(得分:-1)

是的,您可以使用-y 0-> 0- unlimited获得完整的输出,但是请注意,这可能会导致性能问题。

sqlcmd -e -s server_name -Q "your query" -y 0> op_file_path

注意:-h-y是互斥的