適用於:Linux 上的 SQL Server
此範例 Bash 指令碼會在 Ubuntu 上安裝 SQL Server,不需要經過互動式輸入。 它提供了安裝 資料庫引擎、SQL Server 命令列工具、SQL Server Agent 以及執行安裝後步驟的範例。 您可以選擇性地安裝全文檢索搜尋,並建立系統管理使用者。
Tip
如果您不需要自動安裝指令碼,安裝 SQL Server 最快的方式就是遵循 Ubuntu 的快速入門。 如需其他安裝資訊,請參閱 Linux 上的 SQL Server 安裝指引。
先決條件
- 您需要至少 2 GB 的記憶體才能在 Linux 上執行 SQL Server。
- 文件系統必須是 XFS 或 ext4。 不支援其他檔案系統 (例如 BTRFS)。
- 如需其他系統需求,請參閱 SQL Server 在 Linux 上的系統需求。
範例腳本
此範例會在 Ubuntu Server 20.04 上安裝 SQL Server 2019 (15.x)。 如果您想要安裝不同版本的 SQL Server 或 Ubuntu Server,請據以變更 Microsoft 存放庫路徑。
把範例腳本存成檔案,然後再自訂。 您必須取代指令碼中的變數值。 您也可以將每個指令碼變數設定為環境變數,只要將它們從指令檔中移除即可。
腳本在 SQL Server 啟動時會重試連線五次。 若所有嘗試皆失敗,腳本將以非零狀態退出。
Important
SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD。
您的密碼應遵循 SQL Server 預設 密碼原則。 根據預設,密碼長度必須至少為8個字元,且包含下列四個集合中的三個字元:大寫字母、小寫字母、基底10位數和符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
#!/bin/bash -e
# Use the following variables to control your install:
# Password for the SA user (required)
MSSQL_SA_PASSWORD='<password>'
# Product ID of the version of SQL Server you're installing
# Must be evaluation, developer, express, web, standard, enterprise, or your 25-digit product key
# Defaults to evaluation
MSSQL_PID='evaluation'
# Enable SQL Server Agent (recommended)
SQL_ENABLE_AGENT='y'
# Install SQL Server Full-Text Search (optional)
# SQL_INSTALL_FULLTEXT='y'
# Create an additional user with sysadmin privileges (optional)
# SQL_INSTALL_USER='<Username>'
# SQL_INSTALL_USER_PASSWORD='<password>'
if [ -z "$MSSQL_SA_PASSWORD" ]
then
echo Environment variable MSSQL_SA_PASSWORD must be set for unattended install
exit 1
fi
echo Adding Microsoft repositories...
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
repoargs="$(curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
sudo add-apt-repository "${repoargs}"
repoargs="$(curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list)"
sudo add-apt-repository "${repoargs}"
echo Running apt-get update -y...
sudo apt-get update -y
echo Installing SQL Server...
sudo apt-get install -y mssql-server
echo Running mssql-conf setup...
sudo MSSQL_SA_PASSWORD="$MSSQL_SA_PASSWORD" \
MSSQL_PID="$MSSQL_PID" \
/opt/mssql/bin/mssql-conf -n setup accept-eula
echo Installing mssql-tools and unixODBC developer...
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev
# Add SQL Server tools to the path by default:
echo Adding SQL Server tools to your path...
echo PATH="$PATH:/opt/mssql-tools/bin" >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# Optional Enable SQL Server Agent:
if [ -n "$SQL_ENABLE_AGENT" ]
then
echo Enabling SQL Server Agent...
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
fi
# Optional SQL Server Full-Text Search installation:
if [ -n "$SQL_INSTALL_FULLTEXT" ]
then
echo Installing SQL Server Full-Text Search...
sudo apt-get install -y mssql-server-fts
fi
# Configure firewall to allow TCP port 1433:
echo Configuring UFW to allow traffic on port 1433...
sudo ufw allow 1433/tcp
sudo ufw reload
# Optional example of post-installation configuration.
# Trace flags 1204 and 1222 are for deadlock tracing.
# echo Setting trace flags...
# sudo /opt/mssql/bin/mssql-conf trace flag 1204 1222 on
# Restart SQL Server after installing:
echo Restarting SQL Server...
sudo systemctl restart mssql-server
# Connect to server and get the version:
counter=1
errstatus=1
while [ "$counter" -le 5 ] && [ "$errstatus" -ne 0 ]
do
echo Waiting for SQL Server to start...
sleep 3s
if /opt/mssql-tools/bin/sqlcmd \
-S localhost \
-U sa \
-P "$MSSQL_SA_PASSWORD" \
-Q "SELECT @@VERSION" 2>/dev/null
then
errstatus=0
else
errstatus=$?
fi
((counter += 1))
done
# Display error if connection failed:
if [ "$errstatus" -ne 0 ]
then
echo Cannot connect to SQL Server, installation aborted
exit "$errstatus"
fi
# Optional new user creation:
if [ -n "$SQL_INSTALL_USER" ] && [ -n "$SQL_INSTALL_USER_PASSWORD" ]
then
echo Creating user "$SQL_INSTALL_USER"
/opt/mssql-tools/bin/sqlcmd \
-S localhost \
-U sa \
-P "$MSSQL_SA_PASSWORD" \
-Q "CREATE LOGIN [$SQL_INSTALL_USER] WITH PASSWORD=N'$SQL_INSTALL_USER_PASSWORD', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON; ALTER SERVER ROLE [sysadmin] ADD MEMBER [$SQL_INSTALL_USER]"
fi
echo Done!
執行腳本
執行指令碼:
將範例貼到您慣用的文字編輯器中,並以易記的名稱 (例如
install_sql.sh) 儲存。自訂
MSSQL_SA_PASSWORD、MSSQL_PID及您想要變更的其他變數。將腳本標記為可執行檔:
chmod +x install_sql.sh執行腳本:
./install_sql.sh
了解指令碼
Bash 指令碼的第一個工作就是設定一些變數。 這些變數可以是指令碼變數 (如範本所示) 或環境變數。 變數MSSQL_SA_PASSWORD是 SQL Server 安裝需要的。 其他則是為指令碼建立的自訂變數。 範例指令碼會執行下列步驟:
匯入公開 Microsoft GPG 金鑰。
為 SQL Server 和命令列工具註冊 Microsoft 存放庫。
更新本機存放庫。
安裝 SQL Server。
使用
MSSQL_SA_PASSWORD設定 SQL Server,並自動接受使用者授權合約。自動接受 SQL Server 命令列工具的使用者授權合約、予以安裝,然後安裝
unixodbc-dev套件。將 SQL Server 命令列工具新增至方便使用的路徑。
如果腳本變數
SQL_ENABLE_AGENT已設定,請啟用 SQL Server Agent。 變數預設為如果變數
SQL_INSTALL_FULLTEXT已設定,可選擇安裝 SQL Server Full-Text 搜尋功能。解除系統防火牆上 TCP 通訊埠 1433 的封鎖,這是從另一個系統連線到 SQL Server 的必要動作。
可以選擇性地為死鎖追蹤設置追蹤旗標(需要取消行註解)。
重新啟動 SQL Server。
在重試時,請確認 SQL Server 安裝正確,並隱藏連線錯誤訊息。
如果
SQL_INSTALL_USER和SQL_INSTALL_USER_PASSWORD都已設定,請建立新的伺服器管理員使用者。
無人值守安裝
簡化多個自動安裝,並建立獨立的 Bash 指令碼,設定適當的環境變數。 您可以移除樣本指令碼所使用的所有變數,並放在專屬的 Bash 指令碼中。
#!/bin/bash
export MSSQL_SA_PASSWORD='<password>'
export MSSQL_PID='evaluation'
export SQL_ENABLE_AGENT='y'
export SQL_INSTALL_USER='<Username>'
export SQL_INSTALL_USER_PASSWORD='<password>'
注意事項
您的密碼應遵循 SQL Server 預設 密碼原則。 根據預設,密碼長度必須至少為8個字元,且包含下列四個集合中的三個字元:大寫字母、小寫字母、基底10位數和符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
然後依照下列方式執行 Bash 指令碼:
. ./my_script_name.sh