2012-11-20 64 views
1

我試圖運行多個SQLCMD語句(在SQL Server 2008中存檔表,並創建恢復腳本)從Windows .bat文件後,運行Windows裏面的批處理文件多SQLCMD語句。我的腳本工作就像我第一次執行SQL身份驗證,然後我輸入SQL腳本輸出恢復文件如何執行SQL認證

sqlcmd -S <Server name>\<instance> -U user 
sqlcmd -i ArchiveTable1.sql -o RestoreTable1.sql 
sqlcmd -i ArchiveTable2.sql -o RestoreTable2.sql 
sqlcmd -i ArchiveTable3.sql -o RestoreTable3.sql 

問題是,SQLCMD認證後,出現提示1>,並且不執行我的下一個語句。進入Quit後,我的下一個語句被執行,但在輸出文件中,我看到身份驗證無效的錯誤。 我不想有每個SQLCMD語句SQL認證。

如果有一個與我的方法的問題,可以有人指導我用其他的設計。

回答

1

三SQLCMD執行,三認證:

sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable1.sql -o RestoreTable1.sql 
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable2.sql -o RestoreTable2.sql 
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable3.sql -o RestoreTable3.sql 

我不想有每個SQLCMD聲明

你想問題有點什麼SQL身份驗證。你必須做正確的事情。如果您對您的不尋常的要求的理由,陳述問題顯然,不提供一個解決方案,並讓我們使它工作。

如果你想避免重複分批用戶信息和密碼,如果你想避免讓這些密碼分批躺在身邊更重要的是,使用sqlcmd環境變量SQLCMDUSER and SQLCMDPASSWORD

SQLCMDPASSWORD環境變量可讓您爲當前會話設置默認密碼。因此,密碼不必硬編碼到批處理文件中。

只需設置SQLCMDUSERSQLCMDPASSWORD(也許SQLCMDSERVER),然後調用批處理。這樣批處理不需要包含任何硬編碼的密碼。

+0

每個SQLCMD語句後有需要輸入密碼。我想因爲我沒有訪問系統,我將執行這個批處理文件,所有的時間跳過這個互動提示輸入密碼。所以我不能監督執行過程,因爲我的批處理文件中有大約30個sqlcmd語句要執行。 – adbrpc