上回我們使用了sqlcmd來執行我們的.sql檔案,雖然sqlcmd命令列可以一次執行多個檔案,語法如下:
sqlcmd -S {Server} –U {User} –P {Password} -d {DataBase} -i {FilePath1},{FilePath2}...
但假設我們要語法執行腳本是固定的,而我們需要將腳本在不同的環境或是資料庫中執行,語法可能會變成如下:
sqlcmd -S {Server} –U {User} –P {Password} -d {DataBase1} -i {FilePath}
sqlcmd -S {Server} –U {User} –P {Password} -d {DataBase2} -i {FilePath}
sqlcmd -S {Server} –U {User} –P {Password} -d {DataBase3} -i {FilePath}
sqlcmd -S {Server1} –U {User} –P {Password} -d {DataBase} -i {FilePath}
sqlcmd -S {Server2} –U {User} –P {Password} -d {DataBase} -i {FilePath}
sqlcmd -S {Server3} –U {User} –P {Password} -d {DataBase} -i {FilePath}
在這種情境下,我們需要分別執行多條命令列,接下來我們使用另一個工具-PowerShell來處理以上問題。
首先我先新增一個純文字文件(.txt),再將副檔名改成.ps1(PowerShell副檔名之一),當然也可以開啟PowerShell編輯器直接新增空白檔案,推薦使用Windows PowerShell ISE進行編輯和執行,它可以在發生錯誤時報錯。
新增空白檔案後,將所有需要被執行的命令列輸入進去執行即可,若不使用編輯器執行,可以點選檔案右鍵→用PowerShell執行
假設我想要在我的本機Server上多新增兩個資料庫,並且將打包好的.sql檔案內容寫入,語法如下:
sqlcmd -S . -Q "CREATE DATABASE One"
sqlcmd -S . -Q "CREATE DATABASE Two"
sqlcmd -S . -d One -i C:\temp\FirstDataBase.sql
sqlcmd -S . -d Two -i C:\temp\FirstDataBase.sql
以上述方式去執行命令列,雖然執行的總時間差不多,但假設每個命令列逐一手動執行,中間耗費的時間成本可能會更大
更多小知識,我們下次見~~