2013-02-04 38 views
0

我有超過100個.sql文件要在sql server 2008 R2上執行。但我不想手動執行它。所以,我搜索了可能的解決方案,發現我可以使用powershell來執行這些腳本,但我從未使用過PowerShell。我發現下面提及命令 -如何使用PowerShell在SQL Server 2008中執行多個.sql文件?

Get-ChildItem ".\Stored Procedures\*.sql" | ForEach-Object { sqlcmd -S ServerName -d DatabaseName -E -i $_.FullName }

我與我的參數 -

Get-ChildItem "C:\tables\*.sql" | ForEach-Object { sqlcmd -S 10.50.102.124 -d falhpdv1stage -E -i $_.FullName }

取代它,我刷新我的數據庫執行此命令後,但我沒能看到新執行表?我錯過了什麼嗎?

+0

您是否檢查過其中一個命令是否有效?問題可能是從SQL文件中的語法錯誤到機器上的驗證問題,從而導致IP地址模糊不清。 –

+0

請寫一個日誌文件,以便知道錯誤。將這段代碼添加到行'|的末尾>> execSp.log' – Hiten004

+0

爲什麼不將它們轉換爲單個存儲過程? –

回答

0

假設你有,你正在運行的腳本在計算機上安裝的管理工作室:

add-pssnapin SqlServerCmdletSnapin100; 
Get-ChildItem "C:\tables\*.sql" | ForEach-Object { invoke-sqlcmd -serverinstance 10.50.102.124 -database falhpdv1stage -inputfile $_.FullName } 

這還假定其他一切都是正確的 - 正確書寫的查詢,對數據庫的相應權限,正確的服務器IP &數據庫名稱等

+0

我能夠在一個環境中執行該命令,但無法在其他環境中打開PowerShell(在此Windows身份驗證中使用但是在前面的一箇中使用了sql server認證)。 – Praveenks

+0

您可以將'-username'和'-password'參數傳遞給invoke-sqlcmd以使用SQL身份驗證。任何當前的Windows服務器都應安裝並可用PowerShell。 – alroc

相關問題