適用於:Linux 上的 SQL Server
此範例 bash 腳本可在 SUSE Linux Enterprise Server (SLES) 上安裝 SQL Server 2022 (16.x),且無需互動輸入。 它提供了安裝 資料庫引擎、SQL Server 命令列工具及 SQL Server Agent 的範例,以及執行安裝後的步驟。 您可以選擇性地安裝全文檢索搜尋,並建立系統管理使用者。
Note
從 SQL Server 2025(17.x)開始,SUSE Linux Enterprise Server(SLES)不再支援。
如果你不需要無人值守安裝腳本,請依照 SLES 快速入門操作。 如需其他安裝資訊,請參閱 Linux 上的 SQL Server 安裝指引。
先決條件
- 您需要至少 2 GB 的記憶體才能在 Linux 上執行 SQL Server。
- 文件系統必須是 XFS 或 ext4。 其他檔案系統,如 BTRFS,則不被支援。
- 如需其他系統需求,請參閱 SQL Server 在 Linux 上的系統需求。
Important
SQL Server 需要 libsss_nss_idmap0,而預設的 SLES 軟體庫沒有提供。 你可以從 SLES SDK 安裝這個套件。
範例腳本
此範例是在 SLES v15 SP6 上安裝 SQL Server 2022 (16.x)。 如果您想要安裝不同版本的 SQL Server 或 SLES,請據以變更 Microsoft 存放庫路徑。
把範例腳本存成檔案,然後再自訂。 替換腳本中的變數值。 您也可以將每個指令碼變數設定為環境變數,只要將它們從指令檔中移除即可。
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 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...
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo
sudo zypper --gpg-auto-import-keys refresh
# Add the SLES v15 SP6 SDK to obtain libsss_nss_idmap0
sudo SUSEConnect -p sle-sdk/15.3/x86_64
echo Installing SQL Server...
sudo zypper 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 zypper install -y mssql-tools unixODBC-devel
# 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
# Optionally enable SQL Server Agent:
if [ -n "$SQL_ENABLE_AGENT" ]
then
echo Enable 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 zypper install -y mssql-server-fts
fi
# Configure firewall to allow TCP port 1433:
echo Configuring SuSEfirewall2 to allow traffic on port 1433...
sudo SuSEfirewall2 open INT TCP 1433
sudo SuSEfirewall2 stop
sudo SuSEfirewall2 start
# Example of setting post-installation configuration options
# Set trace flags 1204 and 1222 for deadlock tracing:
# echo Setting trace flags...
# sudo /opt/mssql/bin/mssql-conf trace flag 1204 1222 on
# Restart SQL Server after making configuration changes:
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 5s
/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 [ -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 腳本一開始會設定幾個變數。 這些變數可以是指令碼變數 (如範本所示) 或環境變數。 腳本需要安裝 SQL Server 的 MSSQL_SA_PASSWORD 變數。 腳本會用自訂變數來處理其他變數。
範例指令碼會執行下列步驟:
為 SQL Server 和命令列工具註冊 Microsoft 存放庫。
更新本地倉庫並匯入公開的 Microsoft GPG 金鑰。
安裝 SQL Server。
使用
MSSQL_SA_PASSWORD設定 SQL Server,並自動接受使用者授權合約。自動接受 SQL Server 命令列工具的使用者授權合約、予以安裝,然後安裝
unixODBC-devel套件。將 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