以下内容在我们的SQL 2008 R2环境中执行,一切正常。 供应商在 SQL Server 2012 和格式更改上执行。
例如,简单的选择
Select '1',cast(RIGHT(replace(convert(varchar,[EMPL_EARNINGS].[PAY_PD_END_DT],112),'-',''),6) as CHAR(6))
我不能使用-W
因为某些字段用空格填充。
我使用相同的语句选择 3 个不同的日期字段。
一个是正确的 6 个字符宽,另一个是正确的 8 个字符宽,还有一个是正确的 9 个字符宽。
批处理文件调用sqlcmd -S ServerName -i "c:querymyquery.sql" -o "v:Tempmyouput.dat" -h -1 -s"" -d"DBname"
。
发现列宽与列名的宽度匹配,即使我使用的是 -h-1。 不知道为什么它适用于我们的版本,但不适用于供应商。
快速解决方法是将所有列名缩短为 <= 所需的列宽。
好奇发现真正的修复?