从批处理文件运行SQL命令并获取错误
问题描述:
大家早上好。想知道是否有人能帮助我。我正在尝试编写一个批处理文件,以使我的生活和其他人在我的工作中生活更轻松,但希望寻求一些帮助。我通常会运行一些不同的SQL脚本,这些脚本是我编写的,用于安装特定的安装,如果我将这些全部移到批处理文件中,那么生活会更容易。我想从一个批处理文件运行以下命令:从批处理文件运行SQL命令并获取错误
:T02
cls
echo Qualifiers will be installed next with names of
echo Q_AutoFax_CC_1
echo Q_AutoFax_CC_2
echo Q_AutoFax_CC_3
echo Q_AutoFax_CC_4
echo Q_AutoFax_CC_5
pause
cls
If Exist "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\100\Tools\Binn"
If Exist "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\90\Tools\Binn"
If Exist "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn"
sqlcmd /U eiw_admin /P eiw_admin /d cabinet /S . /Q
"declare @q int
select @q = 1
While @q < 6
Begin
Insert into cabinet..qualifiers
select 'HL7', 'Q_AutoFax_CC_'+ convert(varchar(2),@q),
'%Physician_Code'+ convert(varchar(2),@q)+'% == (NULL) || %Physician_Code'+ convert(varchar(2),@q)+'% == (BLANK)', 'R'
select @q = @q + 1
End"
pause
cls
我通常只运行:
declare @q int
select @q = 1
While @q < 6
Begin
Insert into cabinet..qualifiers
select 'HL7', 'Q_AutoFax_CC_'+ convert(varchar(2),@q),
'%Physician_Code'+ convert(varchar(2),@q)+'% == (NULL) || %Physician_Code'+ convert(varchar(2),@q)+'% == (BLANK)', 'R'
select @q = @q + 1
End
从SQL,它运行得很好。我已经使用SQL在命令前批处理文件...有没有什么不同的需要完成这一个,因为它是一个循环,而不是一个通用的命令?该文件是从数据库服务器跑去,我得到了一个错误:
Sqlcmd: '-Q': Missing argument. Enter '-?' for help. ' "declare @q int' is not recognized as an internal or external command, operable program or batch file
.....有选择,首先,插入和选择同样的事情....等
我想如果你曾经想运行SQLCMD,你只需要把你的命令放在单引号中,这是不正确的?
答
批处理文件中的SQL语句应与sqlcmd
语句位于同一行。将SQL语句放在单独的文件中可能是最简单的,并使用-i
开关从您的文件中读取查询。
y ....就是这样....我通常做一个简单的SQL命令,这是第一次跨越多个,所以我不知道。非常感谢 – 2012-07-17 14:43:31