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, sqlcmd ou 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émarrage10-20 s1-2 min
Ressources~2 Go RAM4-8 Go RAM
Outil graphiqueVS Code (mssql)SSMS (le plus complet)
FonctionsMoteur 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).

ÉditionPrixUsage
DeveloperGratuiteDéveloppement / apprentissage, toutes les fonctions (interdit en production)
ExpressGratuitePetite production (base ≤ 10 Go en 2022 ; 50 Go en 2025)
Standard / EnterprisePayantesProduction

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 (voir docker 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-server

Sur Arch : uniquement via l’AUR (mssql-server) → Docker est bien plus simple.


4. Se connecter

VS Code + extension SQL Server (mssql)

  1. Extensions (Ctrl+Shift+X) → « SQL Server (mssql) » de Microsoft → Installer.
  2. Icône SQL Server dans la barre latérale → Add Connection :
ChampValeur
Serverlocalhost,1433 (virgule pour le port !)
AuthenticationSQL Login
User / Passwordsa / ton mot de passe
Trust server certificate✅
Database(vide) ou le nom de la base
  1. 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 : installe visual-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 -C
1> 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.

OutilPlateformePour quoi
SSMSWindowsAdministration complète, assistants, plans d’exécution, diagrammes
VS Code + mssqlLinux, Windows, macOSÉcrire et exécuter des requêtes, explorer les objets
sqlcmdTousScripts, automatisation
DBeaverTousClient 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 sauvegardeCommande
ComplèteBACKUP 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.

Voir aussi