Przykład: skrypt instalacji nienadzorowanego programu SQL Server dla systemu Ubuntu

Dotyczy:Program SQL Server w systemie Linux

Ten przykładowy skrypt bash instaluje SQL Server w systemie Ubuntu bez potrzeby interakcyjnego wprowadzania danych. Zawiera przykłady instalacji Database Engine, narzędzi wiersza poleceń SQL Server, SQL Server Agent oraz wykonywania kroków po instalacji. Opcjonalnie możesz zainstalować wyszukiwanie pełnotekstowe i utworzyć użytkownika administracyjnego.

Wskazówka

Jeśli nie potrzebujesz skryptu instalacji nienadzorowanej, najszybszym sposobem zainstalowania programu SQL Server jest wykonanie czynności opisanych w przewodniku Szybki start dla systemu Ubuntu. Aby uzyskać inne informacje o konfiguracji, zobacz wskazówki dotyczące instalacji programu dla programu SQL Server w systemie Linux.

Wymagania wstępne

Przykładowy skrypt

W tym przykładzie program SQL Server 2019 (15.x) jest instalowany w systemie Ubuntu Server 20.04. Jeśli chcesz zainstalować inną wersję programu SQL Server lub Ubuntu Server, zmień odpowiednio ścieżki repozytorium Firmy Microsoft.

Zapisz przykładowy skrypt do pliku i dostosuj go. Musisz zastąpić wartości zmiennych w skrypcie. Można również ustawić dowolne zmienne skryptowe jako zmienne środowiskowe, o ile zostaną usunięte z pliku skryptu.

Skrypt próbuje połączenie pięć razy, podczas gdy SQL Server się uruchamia. Jeśli wszystkie próby się nie powiedzą, skrypt kończy się ze statusem niezerowym.

Ważna

Zmienna środowiskowa SA_PASSWORD jest przestarzała. Użyj MSSQL_SA_PASSWORD zamiast tego.

Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

#!/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!

Uruchamianie skryptu

Aby uruchomić skrypt:

  1. Wklej przykład do ulubionego edytora tekstów i zapisz go z pamiętną nazwą, taką jak install_sql.sh.

  2. Dostosuj MSSQL_SA_PASSWORD, MSSQL_PIDi dowolną inną zmienną, którą chcesz zmienić.

  3. Oznacz skrypt jako plik wykonywalny:

    chmod +x install_sql.sh
    
  4. Uruchom skrypt:

    ./install_sql.sh
    

Omówienie skryptu

Pierwszą rzeczą, jaką wykonuje skrypt bash, jest ustawienie kilku zmiennych. Te zmienne mogą być zmiennymi skryptowymi, takimi jak przykład, lub zmienne środowiskowe. Zmienna MSSQL_SA_PASSWORD jest wymagana przez instalację programu SQL Server. Pozostałe są zmiennymi niestandardowymi utworzonymi dla skryptu. Przykładowy skrypt wykonuje następujące kroki:

  1. Zaimportuj publiczne klucze gpG firmy Microsoft.

  2. Zarejestruj repozytoria firmy Microsoft dla programu SQL Server i narzędzi wiersza polecenia.

  3. Zaktualizuj repozytoria lokalne.

  4. Zainstaluj program SQL Server.

  5. Skonfiguruj program SQL Server przy użyciu MSSQL_SA_PASSWORD i automatycznie zaakceptuj umowę licencyjną End-User.

  6. Automatycznie zaakceptuj umowę licencyjną End-User dla narzędzi wiersza polecenia programu SQL Server, zainstaluj je i zainstaluj pakiet unixodbc-dev.

  7. Dodaj narzędzia wiersza polecenia programu SQL Server do ścieżki w celu ułatwienia użycia.

  8. Włącz SQL Server Agent, jeśli zmienna SQL_ENABLE_AGENT skryptowa jest ustawiona. Zmienna jest ustawiona domyślnie.

  9. Opcjonalnie zainstaluj składnik SQL Server Full-Text Search, jeśli zmienna SQL_INSTALL_FULLTEXT jest ustawiona.

  10. Odblokuj port 1433 dla protokołu TCP w zaporze systemowej, co jest niezbędne do nawiązania połączenia z programem SQL Server z innego systemu.

  11. Opcjonalnie ustaw flagi dla śledzenia zakleszczeń (wymaga odkomentowania wierszy).

  12. Uruchom ponownie program SQL Server.

  13. Sprawdź, czy SQL Server jest poprawnie zainstalowany, jednocześnie ukrywając komunikaty o błędach połączenia podczas prób.

  14. Utwórz nowego użytkownika administratora serwera, jeśli SQL_INSTALL_USER i SQL_INSTALL_USER_PASSWORD są ustawione.

Instalacja nienadzorowana

Uprość proces wielu nienadzorowanych instalacji i utwórz autonomiczny skrypt bash, który ustawi odpowiednie zmienne środowiskowe. Możesz usunąć dowolne zmienne używane przez przykładowy skrypt i umieścić je w oddzielnym skrypcie bashowym.

#!/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>'

Caution

Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

Następnie uruchom skrypt bash w następujący sposób:

. ./my_script_name.sh