範例:SUSE Linux Enterprise Server 的 SQL Server 自動安裝指令碼

適用於:SQL Server - Linux

此範例 Bash 指令碼會在 SUSE Linux Enterprise Server (SLES) 上安裝 SQL Server,不需要互動式輸入。 其中提供安裝資料庫引擎、SQL Server 命令列工具、SQL Server Agent,以及執行後續安裝步驟的範例。 您可以選擇性地安裝全文檢索搜尋,並建立系統管理使用者。

提示

如果您不需要自動安裝指令碼,安裝 SQL Server 最快的方式就是遵循 SLES 快速入門。 如需其他安裝資訊,請參閱 Linux 上的 SQL Server 安裝指引

Prerequisites

  • 您需要至少 2 GB 的記憶體才能在 Linux 上執行 SQL Server。
  • 檔案系統必須是 XFSEXT4。 不支援其他檔案系統 (例如 BTRFS)。
  • 如需其他系統需求,請參閱 SQL Server 在 Linux 上的系統需求

重要

SQL Server 需要 libsss_nss_idmap0,但預設 SLES 存放庫並未提供。 您可以從 SLES SDK 進行安裝。

範例指令碼

此範例會在 SLES v15 SP3 上安裝 SQL Server 2019 (15.x)。 如果您想要安裝不同版本的 SQL Server 或 SLES,請據以變更 Microsoft 存放庫路徑。

將範例指令碼儲存至檔案,然後進行自訂。 您必須取代指令碼中的變數值。 您也可以將每個指令碼變數設定為環境變數,只要將它們從指令檔中移除即可。

重要

SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD

#!/bin/bash -e

# Use the following variables to control your install:

# Password for the SA user (required)
MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>'

# 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='<YourStrong!Passw0rd>'

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-2019.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 SP3 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

# Optional Enable SQL Server Agent:
if [ ! -z $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 [ ! -z $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 traceflag 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 [ ! -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!

執行指令碼

執行指令碼:

  1. 將範例貼到您慣用的文字編輯器中,並以易記的名稱 (例如 install_sql.sh) 儲存。

  2. 自訂 MSSQL_SA_PASSWORDMSSQL_PID 及您想要變更的其他變數。

  3. 將指令碼標示為可執行檔

    chmod +x install_sql.sh
    
  4. 執行指令碼

    ./install_sql.sh
    

了解指令碼

Bash 指令碼的第一個工作就是設定一些變數。 這些變數可以是指令碼變數 (如範本所示) 或環境變數。 SQL Server 安裝需要MSSQL_SA_PASSWORD 變數,其他變數是針對指令碼所建立的自訂變數。 範例指令碼會執行下列步驟:

  1. 匯入公開 Microsoft GPG 金鑰。

  2. 為 SQL Server 和命令列工具註冊 Microsoft 存放庫。

  3. 更新本機存放庫。

  4. 安裝 SQL Server。

  5. 使用 MSSQL_SA_PASSWORD 設定 SQL Server,並自動接受使用者授權合約。

  6. 自動接受 SQL Server 命令列工具的使用者授權合約、予以安裝,然後安裝 unixODBC-devel 套件。

  7. 將 SQL Server 命令列工具新增至方便使用的路徑。

  8. 如果已設定指令碼變數 SQL_ENABLE_AGENT (預設為開啟),請啟用 SQL Server Agent。

  9. 如果已設定變數 SQL_INSTALL_FULLTEXT,請選擇性地安裝 SQL Server 全文檢索搜尋。

  10. 解除系統防火牆上 TCP 通訊埠 1433 的封鎖,這是從另一個系統連線到 SQL Server 的必要動作。

  11. 選擇性地為死結追蹤設定追蹤旗標 (需要取消註解行)。

  12. SQL Server 現已安裝,若要讓它運作,請重新啟動此程序。

  13. 確認已正確安裝 SQL Server,同時隱藏所有錯誤訊息。

  14. 如果 SQL_INSTALL_USERSQL_INSTALL_USER_PASSWORD 都已設定,請建立新的伺服器管理員使用者。

自動安裝

簡化多個自動安裝,並建立獨立的 Bash 指令碼,設定適當的環境變數。 您可以移除樣本指令碼所使用的所有變數,並放在專屬的 Bash 指令碼中。

#!/bin/bash
export MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>'
export MSSQL_PID='evaluation'
export SQL_ENABLE_AGENT='y'
export SQL_INSTALL_USER='<Username>'
export SQL_INSTALL_USER_PASSWORD='<YourStrong!Passw0rd>'

然後依照下列方式執行 Bash 指令碼:

. ./my_script_name.sh