Comment installer et utiliser MS SQL Server avec Docker sur Digital Ocean ?

nasser 12/02/2022 (07:51) GMT

Imaginez que vous êtes sur un Linux et avez besoin d’utiliser MS SQL Server pour quelques raisons que ce soit. Comment allez-vous faire ? Dans cet article, je vous montre une astuce pour installer et utiliser MS SQL Server sur Digital Ocean.

Avant de commencer, il faut savoir que MS SQL Server est une base de données relationnelle maintenue par Microsoft et Digital Ocean est une plateforme de cloud computing.

Préréquis:

Pour être en mesure de suivre ce tutoriel, il faut:

  1. Comprendre et utiliser Docker
  2. Créer un droplet (machine virtuelle) sur Digital Ocean

Installer SQL Server avec Docker et y accéder via Python

Docker et Python sur Digital Ocean

Après avoir créé votre droplet sur Digital Ocean, connectez-vous via ssh

# Je recommande de créer un droplet de minimum 2GB DD et 2GB RAM
ssh root@137.184.103.70
# pwd: Strong23dsP@55word!A
# 137.184.103.70 est l'adresse IP de votre droplet

Ensuite, vous allez installer Docker et Python grâce aux commandes suivantes

apt update
apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL  | sudo apt-key add -
add-apt-repository "deb [arch=amd64]  bionic stable"
apt update
apt-cache policy docker-ce
apt install docker-ce
systemctl status docker

Installation de MS SQL Server

Après avoir installé Docker et Python, il faut maintenant installer SQL Server. En effet, nous allons tout simplement récupérer l’image Docker de SQL Server et allons le démarrer

# Récupérer la dernière image de SQL Server 2019
docker pull mcr.microsoft.com/mssql/server:2019-latest

# Démarrer l'image
docker run -e ACCEPT_EULA=Y -e SA_PASSWORD=StrongP@55word! -p 1433:1433 --name sql1 -h sql1 -d mcr.microsoft.com/mssql/server:2019-latest

Explication de la dernière commande

ACCEPT_EULA=Y → Vous acceptez la Licence EULA

SA_PASSWORD → Il s’agit du mot de passe admin

-p → le port sur lequel sera lancé SQL Server

--name → le nom de la BD qui sera créée

-h → l’hôte du conteneur de la BD

-d → exécuter le container en arrière plan

Se connecter, ajouter et récupérer les données

Nous allons accéder au conteneur puis à SQL Server

# Accéder au conteneur
docker exec -it sql1 "bash"

# Accéder à SQL Server
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P StrongP@55word!

Maintenant nous pouvons créer la BD TestBD avec une table "Inventory" et y insérer quelques données

CREATE DATABASE TestDB
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
GO
SELECT * FROM Inventory WHERE quantity > 152;
GO
QUIT

Utiliser DBeaver pour accéder à la base de données SQL Server

DBeaver est un logiciel d’administration de base de données tout comme PHPMyAdmin ou PgAdmin. Pour accéder à SQL Server sur DBeaver il faut:

  1. Télécharger et installer DBeaver
  2. Créer une nouvelle connection en cliquant sur l’icône “New Database Connection” en haut à l’extrême gauche de la fenêtre principale puis entrer les paramètre suivants:
    1. Host: localhost si vous êtes en local ou votre adresse IP si votre serveur est en ligne
    2. Port: 1433
    3. Database/Schema: master
    4. Username: SA
    5. Password: le mot de passe admin
    6. Driver name: MS SQL Server / SQL Server
  3. Enfin, tester la connection ou cliquer sur “OK”

Accéder à la base de données SQL Server avec Python

Pour accéder à SQL Server avec Python, il faut d’abord installer la librairie pymssql

pip3 install pymssql==2.1.5

Vous pouvez maintenant écrire votre script et l’exécuter comme celui ci-dessous par exemple

# importer pymssql
import pymssql

# se connecter à la BD
conn = pymssql.connect(host='localhost', port='1433', user='SA', password='StrongP@55word!', database='TestDB')

# initialiser le curseur qui va permettre d'interroger la BD
cursor = conn.cursor(as_dict=True)

# Lister les bases de données
cursor.execute('SELECT Name from sys.Databases')

for row in cursor:
    print(row)

# {'Name': 'master'}
# {'Name': 'tempdb'}
# {'Name': 'model'}
# {'Name': 'msdb'}
# {'Name': 'TestDB'}

# Créer une table
cursor.execute('CREATE TABLE Counter (id INT, name NVARCHAR(50), quantity INT)')
conn.commit()

# Enregistrer les données dans la table
cursor.execute("INSERT INTO Counter VALUES (1, 'ten', 10); INSERT INTO Counter VALUES (2, 'eleven', 11);")
conn.commit()

# Afficher les données enregistrer
cursor.execute("SELECT * FROM Counter")

for row in cursor:
    print(row)

# {'id': 1, 'name': 'ten', 'quantity': 10}
# {'id': 2, 'name': 'eleven', 'quantity': 11}

OK, j'espère que cet article vous a été précieux. Retrouvons-nous dans les commentaires et surtout n'hésitez pas à vous abonner à la communauté DevOps pour être en mesure de commenter cet article.

Voici la liste des ressources qui m'ont aidé à rédiger cet article

Veuillez-vous connecter poster un commentaire

Projets et Missions Freelances pour Développeurs

Explore notre sélection de missions adaptées à ton expertise et à ta disponibilité pour mettre en valeur ton savoir-faire et gagner de l'argent.

Trouver un projet