適用於:Linux 上的 SQL Server
此範例 Bash 指令碼會在 Ubuntu 上安裝 SQL Server,不需要經過互動式輸入。 其中提供安裝資料庫引擎、SQL Server 命令列工具、SQL Server Agent,以及執行後續安裝步驟的範例。 您可以選擇性地安裝全文檢索搜尋,並建立系統管理使用者。
提示
如果您不需要自動安裝指令碼,安裝 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 的啟動速度緩慢,則指令碼可能會失敗。 這是因為指令碼會以非零的狀態結束。 移除第一行的 -e 開關可解決此問題。
重要
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 developer
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 [ ! -z $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 [ ! -z $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 = 1 ]
do
echo Waiting for SQL Server to start...
sleep 3s
/opt/mssql-tools/bin/sqlcmd \
-S localhost \
-U sa \
-P $MSSQL_SA_PASSWORD \
-Q "SELECT @@VERSION" 2>/dev/null
errstatus=$?
((counter++))
done
# Display error if connection failed:
if [ $errstatus = 1 ]
then
echo Cannot connect to SQL Server, installation aborted
exit $errstatus
fi
# Optional new user creation:
if [ ! -z $SQL_INSTALL_USER ] && [ ! -z $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 指令碼的第一個工作就是設定一些變數。 這些變數可以是指令碼變數 (如範本所示) 或環境變數。 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 全文檢索搜尋。解除系統防火牆上 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