B06 - SQL Server : installation et outils (Linux et Windows)
Objectif
Avoir un SQL Server qui marche sur Pop!_OS/Arch (conteneur Docker) et/ou dans une VM Windows (comme le prof avec SSMS), s’y connecter avec VS Code,
sqlcmdou SSMS, et sauvegarder/restaurer une base (.bak). Ton mémo perso : Mémo - Outils SQL Server.
Azure Data Studio est retiré depuis le 28 février 2026 (plus de mises à jour ni de correctifs). Microsoft recommande VS Code + extension « SQL Server (mssql) », qui sait importer les connexions d'Azure Data Studio.
1. Quelle solution choisir ?
flowchart TD Q{"Je veux…"} -->|"suivre le prof à l'identique<br/>(SSMS, assistants graphiques)"| VM["VM Windows 11<br/>SQL Server Developer + SSMS"] Q -->|"tester des requêtes vite<br/>depuis Linux"| DOCK["Conteneur Docker<br/>sur Pop!_OS / Arch"] DOCK --> VSC["VS Code + extension mssql"] VM --> SSMS["SSMS"]
| Conteneur Docker (Linux) | VM Windows | |
|---|---|---|
| Démarrage | 10-20 s | 1-2 min |
| Ressources | ~2 Go RAM | 4-8 Go RAM |
| Outil graphique | VS Code (mssql) | SSMS (le plus complet) |
| Fonctions | Moteur complet (pas d’Agent SQL avant activation, pas de SSIS) | Tout |
Les deux SQL Server sont indépendants : une base créée dans la VM n'existe pas dans Docker. Pour passer de l'un à l'autre : sauvegarde
.bak→ restauration (partie 6).
| Édition | Prix | Usage |
|---|---|---|
| Developer | Gratuite | Développement / apprentissage, toutes les fonctions (interdit en production) |
| Express | Gratuite | Petite production (base ≤ 10 Go en 2022 ; 50 Go en 2025) |
| Standard / Enterprise | Payantes | Production |
Versions : SQL Server 2022 (16.x, celle du cours) et SQL Server 2025 (17.x, sortie fin 2025).
2. SQL Server dans Docker (Pop!_OS et Arch)
Prérequis : Docker installé → V05 - Docker.
Script de gestion fourni : scripts/bdd/sqlserver_docker.sh (créer / démarrer / arrêter / état / console / sauvegarder).
./sqlserver_docker.sh creer # 1re fois (demande le mot de passe sa)
./sqlserver_docker.sh etat # 🟢 / 🟡 / ⚪
./sqlserver_docker.sh arreter
./sqlserver_docker.sh demarrer
./sqlserver_docker.sh sqlcmd # console SQL
./sqlserver_docker.sh sauvegarder ProduitsUtilitairesÉquivalent manuel :
docker run -d --name sqlserver --hostname sqlserver \
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=MotDePasse#Fort2026" -e "MSSQL_PID=Developer" \
-p 1433:1433 -v sqlserver_donnees:/var/opt/mssql \
mcr.microsoft.com/mssql/server:2022-latest # ou :2025-latest
docker logs -f sqlserver # attendre "SQL Server is now ready for client connections"Mot de passe
sa: 8 caractères minimum avec 3 catégories parmi majuscules / minuscules / chiffres / symboles. Sinon le conteneur s'arrête tout seul (voirdocker logs).
3. SQL Server natif sur Pop!_OS (alternative)
Microsoft fournit des paquets pour Ubuntu 22.04/24.04 (Pop!_OS est compatible, mais non officiellement pris en charge) :
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
sudo apt update && sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup # choisir "Developer", mot de passe sa
systemctl status mssql-serverSur Arch : uniquement via l’AUR (mssql-server) → Docker est bien plus simple.
4. Se connecter
VS Code + extension SQL Server (mssql)
- Extensions (
Ctrl+Shift+X) → « SQL Server (mssql) » de Microsoft → Installer. - Icône SQL Server dans la barre latérale → Add Connection :
| Champ | Valeur |
|---|---|
| Server | localhost,1433 (virgule pour le port !) |
| Authentication | SQL Login |
| User / Password | sa / ton mot de passe |
| Trust server certificate | ✅ |
| Database | (vide) ou le nom de la base |
- Nouveau fichier
.sql→ écrire →Ctrl+Shift+E(exécuter la requête ou la sélection).
Sur Arch, le paquet
code(dépôt officiel, version libre « Code - OSS ») utilise le marketplace Open VSX où l'extension mssql peut manquer : installevisual-studio-code-bin(AUR) pour avoir le marketplace Microsoft.
sqlcmd (ligne de commande)
docker exec -it sqlserver /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -C1> SELECT name FROM sys.databases;
2> GO-C = faire confiance au certificat auto-signé. -i fichier.sql exécute un script, -Q "requête" une requête unique. (Images anciennes : /opt/mssql-tools/bin/sqlcmd.) Il existe aussi le nouveau go-sqlcmd multiplateforme.
SSMS (VM Windows)
SQL Server Management Studio (gratuit, Windows uniquement) : à installer après SQL Server (lien proposé à la fin de l’installateur). Serveur : localhost (ou .\SQLEXPRESS pour Express), authentification Windows ou SQL.
| Outil | Plateforme | Pour quoi |
|---|---|---|
| SSMS | Windows | Administration complète, assistants, plans d’exécution, diagrammes |
| VS Code + mssql | Linux, Windows, macOS | Écrire et exécuter des requêtes, explorer les objets |
sqlcmd | Tous | Scripts, automatisation |
| DBeaver | Tous | Client universel (SQL Server, MariaDB, PostgreSQL…) |
5. Commandes d’exploration utiles (T-SQL)
SELECT @@VERSION; -- version du serveur
SELECT name FROM sys.databases; -- bases
USE Northwind;
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES; -- tables de la base courante
EXEC sp_help 'dbo.Products'; -- structure d'une table
EXEC sp_columns 'Products';
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'Products';6. Sauvegarder et restaurer (.bak)
-- Sauvegarde complète
BACKUP DATABASE ProduitsUtilitaires
TO DISK = N'/var/opt/mssql/data/ProduitsUtilitaires.bak' -- Windows : N'C:\Sauvegardes\…bak'
WITH INIT, COMPRESSION, STATS = 10;
-- Voir ce que contient un .bak (noms logiques des fichiers)
RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/data/ProduitsUtilitaires.bak';
-- Restaurer (MOVE nécessaire quand on passe de Windows à Linux : chemins différents)
RESTORE DATABASE ProduitsUtilitaires
FROM DISK = N'/var/opt/mssql/data/ProduitsUtilitaires.bak'
WITH MOVE 'ProduitsUtilitaires' TO '/var/opt/mssql/data/ProduitsUtilitaires.mdf',
MOVE 'ProduitsUtilitaires_log' TO '/var/opt/mssql/data/ProduitsUtilitaires_log.ldf',
REPLACE, STATS = 10;Copier un .bak vers/depuis le conteneur :
docker cp ./ProduitsUtilitaires.bak sqlserver:/var/opt/mssql/data/
docker cp sqlserver:/var/opt/mssql/data/ProduitsUtilitaires.bak ./Importer Northwind : télécharger instnwnd.sql puis sqlcmd ... -i instnwnd.sql (ou l’ouvrir dans VS Code et exécuter).
| Type de sauvegarde | Commande |
|---|---|
| Complète | BACKUP DATABASE … TO DISK |
| Différentielle | … WITH DIFFERENTIAL |
| Journal (mode de récupération FULL) | BACKUP LOG … TO DISK |
Théorie des sauvegardes : ST02 - Stratégies de sauvegarde.