2012-05-16 47 views
2

我在一個文件夾中有一堆腳本,我必須按的順序運行。我只是在SSMS中打開它並逐一執行。我必須等待其中一個完成然後運行第二個。在一個文件夾中運行一堆SQL文件

有沒有一種方法可以讓我在SSMS中創建批處理腳本或腳本(如果可能的話),它們將一個接一個地通過這些文件?這會節省我的時間,因爲腳本運行時可以做其他事情並防止出現錯誤(大多數依賴於臨時創建的臨時表)。

我認爲一個sqlcmd批處理腳本是我正在尋找但不知道如何完成此任務。

謝謝。

回答

2

很容易把這個批處理文件放在一起。將如下所示的內容放入文本文件中,但使用.bat結束文件,例如'ExecuteMyScripts.bat'

Sqlcmd需要各種參數,但主要參數是-S服務器實例,-d數據庫,-i輸入文件,即你的SQL文件,-U爲用戶,-P爲密碼,-o爲輸出文件。觀察這些字母的大小寫。

所以打開記事本,添加以下內容:

sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script1.sql" -o "c:\script1log.txt" 
IF ERRORLEVEL 1 goto :eof 
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script2.sql" -o "c:\script2log.txt" 
IF ERRORLEVEL 1 goto :eof 
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\scripr3.sql" -o "c:\script3log.txt" 

將文件另存爲ExecuteMyScripts.bat。 雙擊該文件,這兩個腳本將被執行。

如果發現錯誤,在每次sqlcmd調用後都會跳到腳本末尾處添加'IF ERRORLEVEL 1 goto:eof'。

這裏找到完整的用法,http://msdn.microsoft.com/en-us/library/ms162773.aspx

+0

請問批次中止的錯誤? –

+0

看起來像-b選項:-b(如果出現錯誤,則終止批處理作業) –

+0

修改爲包含錯誤檢查 –