iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0

上回我們使用了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來處理以上問題。


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

以上述方式去執行命令列,雖然執行的總時間差不多,但假設每個命令列逐一手動執行,中間耗費的時間成本可能會更大

更多小知識,我們下次見~~


上一篇
DAY 6 :SQL Server利用sqlcmd命令列執行.sql腳本
下一篇
DAY 8 :PowerShell發生例外及例外處理
系列文
沒有厲害的頭腦,也能利用腳本實現懶人寫程式的夢想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言