在Ubuntu下安裝sqlcmd(for mssql-server)

老問題之提醒,在Linux下使用MSSQL Server是很挑作業系統環境、版本的,我這邊使用的是Ubuntu 22.04 LTS版,所以我所有的安裝過程都會假定是在這個環境下,如果跟我的環境不一樣將會遭遇到重重困難(且很不好解)。

版本選擇:mssql-tools或mssql-tools18

簡單的說,如果你的環境是Ubuntu 20.04、SQL Server 2019含以上,那麼你就要安裝mssql-tools18,否則就要安裝mssql-tools。因此對我來說就要安裝mssql-tools18。(竟然是透過這種命名法來區分版本?而不是寫自動化腳本依據不同的環境自動選擇不同的安裝方法...)

安裝mssql-tools18

Step 1. 切換到最高身分

sudo -i

Step 2. 匯入公開存放庫GPG金鑰

curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc

Step 3. 註冊Microsoft Ubuntu存放庫

curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list

Step 4. 更新apt套件清單

apt update

Step 5. 安裝mssql-tools18

apt install -y mssql-tools18 unixodbc-dev

到這邊應該就正式完成了。

註冊PATH環境變數

透過下列步驟將/opt/mssql-tools18/bin加入到PATH環境變數中,以利可以隨時在命令列中使用:

echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
source ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

一般來說因為已經進行切換過最高管理權限(root),所以這樣的PATH設定也會變成針對root指定,如果你要讓登入時的預設使用者也可以使用sqlcmd,那麼就要切回去再設定一次。

※ 註:這個加入.bash_profile的動作有時候可能會出現抹除掉原本的檔案參數的狀況,如果出現再次登入Ubuntu後不會自動執行.bashrc的情況,請檢查一下~/.bash_profile的內容是否正確,如果出現抹除的狀況可以重新透過nano ~/.bash_profile加入下列指令碼,讓使用者登入時會自動執行.bashrc

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

測試sqlcmd是否可運作

由於mssql-tools18會強制以SSL連線,所以在測試的時候必須要加上-C這個參數來規避安全性,否則會出現錯誤訊息:

sqlcmd -C -S localhost -U sa -P YourPassword -Q "SELECT @@VERSION"

透過上面的指令就可以從連接localhost本機資料庫,查詢到當前的資料庫版本號,相當於確定可以連線資料庫了。

相關連結

Linux Ubuntu MicrosoftSqlServer MsSqlServer MsSqlTools MsSqlTools18 SqlCmd Installation Setup