Exempel: Obevakat SQL Server-installationsskript för Ubuntu

Gäller för:SQL Server i Linux

Det här bash-exempelskriptet installerar SQL Server på Ubuntu utan interaktiva indata. Den ger exempel på installation av Database Engine, SQL Server:s kommandoradsverktyg, SQL Server Agent och utförande av efterinstallationsåtgärder. Du kan också installera fulltextsökning och skapa en administrativ användare.

Tip

Om du inte behöver ett obevakat installationsskript är det snabbaste sättet att installera SQL Server att följa snabbstarten för Ubuntu. Mer information om installation finns i Installationsvägledning för SQL Server på Linux.

Förutsättningar

  • Du behöver minst 2 GB minne för att köra SQL Server på Linux.
  • Filsystemet måste vara XFS eller ext4. Andra filsystem, till exempel BTRFS, stöds inte.
  • Andra systemkrav finns i Systemkrav för SQL Server på Linux.

Exempelskript

I det här exemplet installeras SQL Server 2019 (15.x) på Ubuntu Server 20.04. Om du vill installera en annan version av SQL Server eller Ubuntu Server ändrar du Sökvägarna för Microsoft-lagringsplatsen i enlighet med detta.

Spara exempelskriptet i en fil och anpassa det sedan. Du måste ersätta variabelvärdena i skriptet. Du kan också ange någon av skriptvariablerna som miljövariabler, så länge du tar bort dem från skriptfilen.

Skriptet försöker ansluta igen fem gånger medan SQL Server startar. Om alla försök misslyckas, avslutas skriptet med en statuskod som inte är noll.

Important

Miljövariabeln SA_PASSWORD är inaktuell. Använd MSSQL_SA_PASSWORD i stället.

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

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

Kör skriptet

Så här kör du skriptet:

  1. Klistra in exemplet i din favorittextredigerare och spara det med ett minnesvärt namn, till exempel install_sql.sh.

  2. Anpassa MSSQL_SA_PASSWORD, MSSQL_PIDoch någon av de andra variabler som du vill ändra.

  3. Markera skriptet som körbart:

    chmod +x install_sql.sh
    
  4. Kör skriptet:

    ./install_sql.sh
    

Förstå skriptet

Det första bash-skriptet gör är att ange några variabler. Dessa variabler kan vara antingen skriptvariabler, t.ex. exempelvariabler eller miljövariabler. Variabeln MSSQL_SA_PASSWORD är nödvändig för installationen av SQL Server. De andra är anpassade variabler som skapats för skriptet. Exempelskriptet utför följande steg:

  1. Importera de offentliga Microsoft GPG-nycklarna.

  2. Registrera Microsoft-lagringsplatserna för SQL Server och kommandoradsverktygen.

  3. Uppdatera de lokala lagringsplatserna.

  4. Installera SQL Server.

  5. Konfigurera SQL Server med MSSQL_SA_PASSWORD och godkänn automatiskt licensavtalet för End-User.

  6. Godkänn automatiskt End-User licensavtalet för SQL Server-kommandoradsverktygen, installera dem och installera unixodbc-dev-paketet.

  7. Lägg till SQL Server-kommandoradsverktygen i sökvägen för enkel användning.

  8. Aktivera SQL Server Agent om skriptvariabeln SQL_ENABLE_AGENT är satt. Variabeln är inställd som standard.

  9. Installera SQL Server Full-Text Search om variabeln SQL_INSTALL_FULLTEXT är inställd.

  10. Avblockera port 1433 för TCP i systembrandväggen, som krävs för att ansluta till SQL Server från ett annat system.

  11. Du kan ange spårningsflaggor för dödlägesanalys (kräver att raderna avkommenteras).

  12. Starta om SQL Server.

  13. Kontrollera att SQL Server är korrekt installerad samtidigt som du döljer anslutningsfelmeddelanden under omförsök.

  14. Skapa en ny serveradministratörsanvändare om både SQL_INSTALL_USER och SQL_INSTALL_USER_PASSWORD har angetts.

Installation utan tillsyn

Förenkla flera obevakade installationer och skapa ett fristående bash-skript som anger rätt miljövariabler. Du kan ta bort någon av variablerna som exempelskriptet använder och placera dem i ett eget bash-skript.

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

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

Kör sedan bash-skriptet på följande sätt:

. ./my_script_name.sh