2012-07-17 153 views
0

大家早上好。想知道是否有人能幫助我。我正在嘗試編寫一個批處理文件,以使我的生活和其他人在我的工作中生活更輕鬆,但希望尋求一些幫助。我通常會運行一些不同的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,你只需要把你的命令放在單引號中,這是不正確的?

回答

1

批處理文件中的SQL語句應與sqlcmd語句位於同一行。將SQL語句放在單獨的文件中可能是最簡單的,並使用-i開關從您的文件中讀取查詢。

+0

y ....就是這樣....我通常做一個簡單的SQL命令,這是第一次跨越多個,所以我不知道。非常感謝 – 2012-07-17 14:43:31