Exemple : Script d'installation de SQL Server sans assistance pour Ubuntu

S’applique à :SQL Server - Linux

Cet exemple de script bash installe SQL Server sur Ubuntu sans entrée interactive. Il fournit des exemples d'installation du moteur de base de données, des outils en ligne de commande SQL Server, SQL Server Agent et exécute les étapes de post-installation. Vous pouvez également installer la recherche en texte intégral et créer un utilisateur administratif.

Conseil

Si vous n'avez pas besoin d'un script d'installation sans assistance, le moyen le plus rapide d'installer SQL Server consiste à suivre le démarrage rapide pour Ubuntu. Pour d'autres informations d'installation, voir Conseils d’installation pour SQL Server sur Linux.

Prérequis

  • Vous avez besoin d'au moins 2 Go de mémoire pour exécuter SQL Server sur Linux.
  • Le système de fichiers doit être XFS ou EXT4. Les autres systèmes de fichiers, tels que BTRFS, ne sont pas pris en charge.
  • Pour les autres configurations système requises, voir Configuration système requise pour SQL Server sur Linux.

Exemple de script

Cet exemple installe SQL Server 2019 (15.x) sur le serveur Ubuntu 20.04. Si vous souhaitez installer une autre version de SQL Server ou d’Ubuntu Server, modifiez les chemins d’accès au référentiel Microsoft en conséquence.

Enregistrez le script type dans un fichier, puis personnalisez-le. Vous devez remplacer les valeurs des variables dans le script. Vous pouvez également définir n'importe laquelle des variables de script comme une variable d'environnement, à condition de la supprimer du fichier script.

Le script peut échouer si le démarrage de SQL Server prend trop de temps. Cela est dû au fait que le script s’arrête avec un état différent de zéro. La suppression du commutateur -e sur la première ligne pourrait résoudre ce problème.

Important

La variable d’environnement SA_PASSWORD est dépréciée. Utilisez MSSQL_SA_PASSWORD à la place.

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

Exécuter le script

Pour exécuter le script :

  1. Collez l'exemple dans votre éditeur de texte préféré, puis enregistrez-le sous un nom facile à retenir, comme install_sql.sh.

  2. Personnalisez MSSQL_SA_PASSWORD, MSSQL_PID, et toutes les autres variables que vous souhaitez modifier.

  3. Marquer le script comme exécutable

    chmod +x install_sql.sh
    
  4. Exécuter le script

    ./install_sql.sh
    

Comprendre le script

La première tâche du script bash est de définir quelques variables. Ces variables peuvent être soit de variables de script, comme l’exemple, soit de variables d'environnement. La variable MSSQL_SA_PASSWORD est requise par l'installation de SQL Server, les autres sont des variables personnalisées créées pour le script. L’exemple de script effectue les étapes suivantes :

  1. Importer les clés publiques Microsoft GPG.

  2. Enregistrer les référentiels Microsoft pour SQL Server et les outils en ligne de commande.

  3. Mettre à jour les référentiels locaux

  4. Installez SQL Server.

  5. Configurez SQL Server avec MSSQL_SA_PASSWORD et acceptez automatiquement le Contrat de licence de l'utilisateur final.

  6. Acceptez automatiquement le Contrat de licence de l'utilisateur final pour les outils en ligne de commande SQL Server, installez ces outils, puis installez le packageunixodbc-dev.

  7. Ajoutez les outils en ligne de commande SQL Server au chemin d'accès pour en faciliter l'utilisation.

  8. Installez SQL Server Agent si la variable de script SQL_ENABLE_AGENT est activée par défaut.

  9. Si la variable SQL_INSTALL_FULLTEXT est définie, vous pouvez installer la recherche en texte intégral SQL Server.

  10. Débloquez le port 1433 pour TCP sur le pare-feu système pour permettre la connexion à SQL Server depuis un autre système.

  11. Si vous le souhaitez, définissez des indicateurs de trace pour le traçage d’interblocage (nécessite de supprimer les marques de commentaire des lignes).

  12. SQL Server est maintenant installé. Pour le rendre opérationnel, redémarrez le processus.

  13. Vérifiez que SQL Server est installé correctement, tout en masquant les messages d'erreur.

  14. Créez un utilisateur administrateur du serveur si les valeurs SQL_INSTALL_USER et SQL_INSTALL_USER_PASSWORD sont toutes deux définies.

Installation sans assistance

Simplifiez plusieurs installations sans assistance et créez un script bash autonome qui définit les variables d'environnement appropriées. Vous pouvez supprimer n'importe laquelle des variables utilisées dans l'exemple de script et les placer dans leur propre script 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>'

Lancez ensuite le script bash comme suit :

. ./my_script_name.sh