SQLCMD仅返回列的前256个字符

问题描述:

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

%结果%设置为实际结果的前256个字符。SQLCMD仅返回列的前256个字符

有没有一种方法可以得到查询的整个输出?

默认情况下,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不得不被删除。