0

大家,早安。想知道是否有人可以帮助我。我正在尝试编写一个批处理文件,以使我的生活和其他人在我的工作中生活更轻松,但想寻求一些帮助。我通常会运行我编写的一堆不同的 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,你只需要把你的命令放在单引号中,这不正确吗?

4

1 回答 1

1

批处理文件中的 SQL 语句应与sqlcmd语句位于同一行。将 SQL 语句放在单独的文件中,并使用-i开关从文件中读取查询可能是最简单的。

于 2012-07-17T14:39:15.057 回答