Aller au contenu principal

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.

· 5 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Journal des modifications

Dernière
SA_PASSWORD deprecated; updated to MSSQL_SA_PASSWORD (required from SQL Server 2022 CU 14+ onwards).

Jouer avec Microsoft SQL Server 2022 avec Docker

⚡
TL;DR

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.

Vos valeurs pour cette page
défaut
défaut
S'applique aux commandes de cette pageEnregistré uniquement sur cet appareil

Commençons par télécharger et lancer une instance de SQL Server 2022 avec l'instruction suivante :

>user@machine: ~/yourproject

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 :

>user@machine: ~/yourproject

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.

Installation de SQL Server Management Studio

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

Ouverture de SSMS

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.)

Authentification

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).

Créer la base de données

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_DEFAULT
GO
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');
GO

Ce 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 :

La base de données a été créée

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.

Exécution du script PowerShell

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


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?