[SQL]SQLCMD Mode

[SQL]SQLCMD Mode

在 SQL Server 2005 之後,微軟採用 SQLCMD 來取代之前所提供的 osql 和 isql 之類的工具,很多時候我們都覺得那只是要配合批次檔所使用的一個工具,並沒有太過於注意他,但剛好臨時有位朋友問到他要手動建立 Adventure Works 的範例資料庫,因為想要更改資料庫的定序,所以他想要直接用網站上所提供的資料庫的 Script 來產生範例資料庫,但都沒有辦法正確產生,因此想請我連線幫忙看一下出問題的地方:

 

查看一下他所使用的 Script 檔案 instawdb.sql ,裡面就有很特別的標記 "THIS SCRIPT MUST BE RUN IN SQLCMD MODE INSIDE SQL SERVER MANAGEMENT STUDIO."。一般來說我們都知道可以透過 SQL Server Management Studio 去下 SQL,但是多半沒有注意到這個 SQLCMD Mode 的選項,這個在哪裡呢 ? 開啟之後有甚麼特別的呢 ??

 

image

 

當我們開啟之後,如果比對一下畫面上的變化,會發覺到在 Script 當中,如果每行的開頭字元是 ":" 或者是 "!!" 的時候,則會有特別的標記出現

image

 

這是甚麼原因呢 ? 主要是當我們開啟 SQLCMD 模式之後,則可以跟 SQLCMD 一樣,在 Script 裡面可以去執行 DOS Command,也可以做一些特別的設定,像是設定變數,指定輸出檔案等 ( 可以參考 MSDN 上面的說明 )。而知道問題就好辦了,只要當 SQLCMD 模式開啟,然後再把 :setvar 後面預設的路徑,改成要安裝的電腦上對應的 SQL Server 的目錄和要匯入資料的 csv 檔案的目錄,再選擇執行就可以了。

 

我個人覺得這個是一個不錯的功能,特別在有些時候我們可能會需要透過 DOS 指令去建立一些目錄,或者是複製檔案;或者是將 Script 的部分 SQL 指令碼抽出來,利用變數的方式去指定,這樣當要更換不同的環境下要執行時,就可以很輕鬆的去切換了。