Jouer avec Microsoft SQL Server 2022 avec Docker
Lancez facilement MSSQL Server 2022 avec Docker. Ce guide pas à pas vous montre comment installer le container, vous connecter avec SSMS et commencer à interroger votre base de données.
Traduction automatique
Journal des modifications

Cet article montre comment lancer Microsoft SQL Server 2022 dans Docker, s'y connecter avec SQL Server Management Studio (SSMS) et créer une base de données et une table d'exemple. Il se termine par un petit script PowerShell qui se connecte à la base et exécute une query : un aller-retour complet en local, du container aux résultats.
Et oui, rien de moins. Nous allons installer un Microsoft SQL Server 2022 sur notre machine, installer aussi SQL Server Management Studio et nous amuser avec un petit script PowerShell ; le tout avec Docker, évidemment. Si c'est Oracle qu'il vous faut, j'ai aussi écrit Faire tourner Oracle Database Server dans un container Docker.
Le repository Docker officiel de Microsoft SQL Server se trouve sur https://hub.docker.com/_/microsoft-mssql-server.
Commençons par télécharger et lancer une instance de SQL Server 2022 avec l'instruction suivante :
Avec la commande ci-dessus, nous acceptons les termes du End-User License Agreement et nous définissons le mot de passe de l'utilisateur SA à 2Secure*Password2.
Le port que nous utiliserons sur notre host est le port 1433 (mappé sur le port 1433 du container), notre instance SQL Server s'appellera sqlserverdb (nom interne utilisé par Docker) et nous nommerons notre host mysqlserver.
Nous pouvons vérifier la liste des containers en cours d'exécution grâce à docker container list :
La sortie ci-dessus a été simplifiée
Pour plus de clarté, la sortie de docker container list a été simplifiée ici ; toutes les colonnes n'ont pas été reprises dans l'article.
Maintenant, si vous n'avez pas encore SQL Server Management Studio (aussi appelé SSMS) sur votre machine, téléchargez-le gratuitement depuis https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16.
Lancez le programme d'installation et attendez qu'il soit installé sur votre machine.

Démarrez maintenant SSMS (vous le trouverez dans votre menu Start de Windows) :

Utilisez les valeurs ci-dessous pour l'authentification :
- Nom du serveur
localhost,1433- Authentification
SQL Server Authentication- Login
SA- Mot de passe
2Secure*Password2
Pourquoi ces valeurs ?
1433 est le numéro de port que nous avons déclaré dans notre instruction docker run, l'utilisateur admin par défaut est SA et le mot de passe a été initialisé plus tôt à 2Secure*Password2 (voir la variable d'environnement MSSQL_SA_PASSWORD dans notre commande docker run.)

Cliquez sur le bouton Connect et SSMS sera connecté à votre instance Docker. Il est temps de créer notre base de données.
Pas de client Windows ?
SSMS ne fonctionne que sous Windows. Pour une alternative dans le navigateur qui fonctionne avec presque tous les moteurs, voyez Utiliser Adminer, pgadmin ou phpmyadmin pour accéder à votre container de base de données Docker.
Créer la base de données, la table et ajouter quelques enregistrements
Une fois connecté dans SSMS, exécutez la query suivante pour créer une base de données d'exemple MyDB, créer une table appelée dbo.Person et ajouter quelques enregistrements.
Pour ce faire, cliquez sur le bouton New Query (ou pressez CTRL-N), collez le SQL ci-dessous puis cliquez sur le bouton Execute (ou pressez F5).

USE [master]GO
CREATE DATABASE [MyDB] CONTAINMENT = NONE ON PRIMARY( NAME = N'MyDB', FILENAME = N'/var/opt/mssql/data/MyDB.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON( NAME = N'MyDB_log', FILENAME = N'/var/opt/mssql/data/MyDB_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) WITH CATALOG_COLLATION = DATABASE_DEFAULTGO
USE [MyDB]GO
CREATE TABLE [dbo].[Person]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL) ON [PRIMARY]GO
INSERT INTO dbo.Person (LastName, FirstName) VALUES ('Avonture', 'Christophe'), ('Doe', 'John');GOCe script SQL crée une nouvelle base de données nommée MyDB avec des fichiers de données et de journal spécifiés, puis crée une table Person contenant des colonnes pour les noms et prénoms, et y insère deux enregistrements d'exemple.
Félicitations, vous avez créé une base de données MyDB avec une table dbo.Person :

Pensez à rafraîchir l'`Object Explorer`
Si, après avoir lancé la query, vous ne voyez pas encore votre base de données dans le panneau Object Explorer, pensez à le rafraîchir. Cliquez n'importe où dans le panneau et pressez F5 ou faites un clic droit sur l'élément racine localhost, 1433 et choisissez Refresh dans le menu contextuel.
Écrire un script PowerShell et se connecter à la base de données
Ce n'est probablement pas la meilleure façon d'interroger une base SQL Server, l'exemple vient de Stack Overflow... Si vous êtes plutôt du genre Excel, voyez MS Excel - Se connecter à une base de données SQL Server, exécuter une requête et récupérer les résultats.
Comme exemple, nous allons créer un script PowerShell appelé connect.ps1 pour illustrer comment interroger notre nouvelle base de données :
$SqlServer = 'localhost,1433';$SqlDatabase = 'MyDB';
$SqlConnectionString = 'Data Source={0};Initial Catalog={1};User Id=SA;Password=2Secure*Password2;' -f $SqlServer, $SqlDatabase;$SqlQuery = "SELECT FirstName, LastName FROM dbo.Person ORDER BY LastName;";
$SqlConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList $SqlConnectionString;
$SqlCommand = $SqlConnection.CreateCommand();$SqlCommand.CommandText = $SqlQuery;
$SqlConnection.Open();$SqlDataReader = $SqlCommand.ExecuteReader();
Write-Host "Here is the content of dbo.Person"Write-Host "---------------------------------"Write-Host ""
while ($SqlDataReader.Read()) { Write-Host $SqlDataReader['LastName'] $SqlDataReader['FirstName'];}
$SqlConnection.Close();$SqlConnection.Dispose();
Write-Host ""Ce script établit une connexion à une base de données SQL Server, exécute une requête pour récupérer les noms et prénoms d'une table, puis affiche les résultats ligne par ligne avant de fermer la connexion. C'est un exemple basique d'accès aux données SQL depuis PowerShell.
Lancez une console DOS ou PowerShell et exécutez cette commande : powershell -executionpolicy bypass -File .\connect.ps1.

Nous avons maintenant validé que votre base de données est fonctionnelle et accessible. À vous de vous approprier cet exemple !





