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:
- Comprendre et utiliser Docker
- 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:
- Télécharger et installer DBeaver
- 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:
- Host: localhost si vous êtes en local ou votre adresse IP si votre serveur est en ligne
- Port: 1433
- Database/Schema: master
- Username: SA
- Password: le mot de passe admin
- Driver name: MS SQL Server / SQL Server
- 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
- https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash
- https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash#connect-to-sql-server
- https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-1-configure-development-environment-for-pyodbc-python-development?view=sql-server-ver15
- https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15
- https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15#download-for-linux-and-macos
- https://docs.microsoft.com/en-us/sql/connect/python/pymssql/step-1-configure-development-environment-for-pymssql-python-development?view=sql-server-ver15