Beispiel: Skript für die unbeaufsichtigte SQL Server-Installation unter Ubuntu

Gilt für:SQL Server – Linux

Dieses Bash-Beispielskript installiert SQL Server unter Ubuntu ohne interaktive Eingabe. Es stellt Beispiele für die Installation von Datenbank-Engine, SQL Server-Befehlszeilentools und SQL Server-Agent bereit und führt Schritte nach der Installation aus. Optional können Sie die Volltextsuche installieren und einen Administratorbenutzer erstellen.

Tipp

Wenn Sie kein Skript für die unbeaufsichtigte Installation benötigen, lässt sich SQL Server am schnellsten installieren, indem Sie die Schnellstartanleitung für Ubuntu befolgen. Weitere Setupinformationen finden Sie im Leitfaden für die Installation von SQL Server unter Linux.

Voraussetzungen

  • Sie benötigen mindestens 2 GB Arbeitsspeicher, um SQL Server für Linux auszuführen.
  • Das Dateisystem muss XFS oder EXT4 sein. Andere Dateisysteme wie BTRFS werden nicht unterstützt.
  • Weitere Systemanforderungen finden Sie unter Systemanforderungen für SQL Server für Linux.

Beispielskript

In diesem Beispiel wird SQL Server 2019 (15.x) auf Ubuntu Server 20.04 installiert. Wenn Sie eine andere Version von SQL Server oder Ubuntu Server installieren möchten, ändern Sie die Microsoft-Repositorypfade entsprechend.

Speichern Sie das Beispielskript in einer Datei und passen Sie es dann an. Sie müssen die Variablenwerte im Skript ersetzen. Sie können auch jede der Skriptvariablen als Umgebungsvariable festlegen, solange Sie die jeweilige Variable aus der Skriptdatei entfernen.

Das Skript kann fehlschlagen, wenn SQL Server zu langsam gestartet wird. Der Grund ist, dass das Skript mit einem Nicht-Null-Status beendet wird. Durch Entfernen des Parameters -e aus der ersten Zeile wird dieses Problem unter Umständen behoben.

Wichtig

Die Umgebungsvariable SA_PASSWORD ist veraltet. Verwenden Sie stattdessen 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...
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 traceflag 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!

Ausführen des Skripts

So führen Sie das Skript aus

  1. Fügen Sie das Beispiel in Ihren bevorzugten Text-Editor ein, und speichern Sie es unter einem einprägsamen Namen wie z.B. install_sql.sh.

  2. Passen Sie MSSQL_SA_PASSWORD, MSSQL_PID sowie alle weiteren Variablen an, die Sie ändern möchten.

  3. Markieren Sie das Skript als ausführbar.

    chmod +x install_sql.sh
    
  4. Führen Sie das Skript aus.

    ./install_sql.sh
    

Grundlegendes zum Skript

Als Erstes legt das Bash-Skript einige Variablen fest. Dabei kann es sich wie im Beispiel um Skriptvariablen oder um Umgebungsvariablen handeln. Die Variable MSSQL_SA_PASSWORD ist für die SQL Server-Installation erforderlich, die anderen sind benutzerdefinierte Variablen, die für das Skript erstellt wurden. Das Beispielskript führt folgende Schritte aus:

  1. Es importiert die öffentlichen Microsoft-GPG-Schlüssel.

  2. Es registriert die Microsoft-Repositorys für SQL Server und die Befehlszeilentools.

  3. Es aktualisiert die lokalen Repositorys.

  4. Installieren Sie SQL Server.

  5. Es konfiguriert SQL Server mit dem MSSQL_SA_PASSWORD und akzeptiert automatisch den Endbenutzer-Lizenzvertrag.

  6. Es akzeptiert automatisch den Endbenutzer-Lizenzvertrag für die SQL Server-Befehlszeilentools, installiert sie und installiert das unixodbc-dev-Paket.

  7. Es fügt die SQL Server-Befehlszeilentools zum Pfad hinzu, um die Verwendung zu vereinfachen.

  8. Aktivieren des SQL Server-Agents, wenn die Skriptvariable SQL_ENABLE_AGENT festgelegt ist. Standardmäßig ist diese aktiviert.

  9. Es installiert optional die SQL Server-Volltextsuche, wenn die Variable SQL_INSTALL_FULLTEXT festgelegt ist.

  10. Es entsperrt Port 1433 für TCP in der Systemfirewall – dies ist erforderlich, um aus einem anderen System eine Verbindung mit SQL Server herzustellen.

  11. Optional können Ablaufverfolgungsflags für die Verfolgung von Deadlocks gesetzt werden (dazu müssen die Zeilen auskommentiert werden).

  12. SQL Server ist jetzt installiert. Um es in Betriebsbereitschaft zu versetzen, startet das Skript den Prozess neu.

  13. Das Skript überprüft, ob SQL Server ordnungsgemäß installiert ist und blendet dabei Fehlermeldungen aus.

  14. Es erstellt einen neuen Serveradministratorbenutzer, wenn SQL_INSTALL_USER und SQL_INSTALL_USER_PASSWORD festgelegt sind.

Unbeaufsichtigtes Installieren

Vereinfachen Sie mehrere unbeaufsichtigte Installationen, und erstellen Sie ein eigenständiges Bash-Skript, das die richtigen Umgebungsvariablen festlegt. Sie können alle im Beispielskript verwendeten Variablen entfernen und sie in ein separates Bash-Skript einfügen.

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

Führen Sie das Bash-Skript dann folgendermaßen aus:

. ./my_script_name.sh