Ajouter une connexion à une base de données Azure SQL
Grâce aux Services connectés Visual Studio, vous pouvez vous connecter à la base de données Azure SQL, à un émulateur local (par exemple, pendant le développement) ou à une base de données SQL Server locale. Pour SQL Server local, consultez Se connecter à une base de données.
Grâce à Visual Studio, vous pouvez vous connecter à partir de n'importe lequel des types de projets suivants en utilisant la fonctionnalité Services connectés :
- ASP.NET Core
- .NET Core (y compris l’application console, WPF, Windows Forms, bibliothèque de classes)
- Rôle de travail .NET Core
- Azure Functions
- Applications console .NET Framework
- ASP.NET Model-View-Controller (MVC) (.NET Framework)
- Application de plateforme Windows universelle
La fonctionnalité de service connecté ajoute l’ensemble des références et du code de connexion nécessaires à votre projet, et modifie vos fichiers de configuration de manière appropriée.
Prérequis
- Visual Studio avec la charge de travail Azure installée
- Un projet d’un des types pris en charge
- Un compte Azure. Si vous n’avez pas de compte Azure, activez vos avantages Azure pour les abonnés Visual Studio ou démarrez votre essai gratuit.
Connectez-vous à Azure SQL Database à l’aide des Services Connectés
Ouvrez votre projet dans Visual Studio.
Dans Explorateur de solutions, cliquez avec le bouton de droite sur le nœud Services connectés, puis, dans le menu contextuel, sélectionnez Ajouter pour ouvrir le menu des services disponibles.
Si vous ne voyez pas le nœud Services connectés, choisissez Projet>Services connectés>Ajouter.
Choisissez Base de données SQL Server. La page Se connecter à la dépendance s’affiche. Plusieurs options doivent s’afficher :
- SQL Server Express LocalDB, la base de données SQL intégrée installée avec Visual Studio
- Base de données SQL Server sur un conteneur local sur votre ordinateur
- SQL Server Database, un serveur SQL local sur le réseau local
- Azure SQL Database, pour la base de données SQL fonctionnant en tant que service Azure
Vous pouvez réduire les coûts et simplifier le développement précoce en commençant par la base de données locale. Vous pouvez migrer vers le service en direct dans Azure ultérieurement en répétant ces étapes et en choisissant l’autre option. Si vous créez localement une base de données que vous souhaitez recréer dans Azure, vous pouvez migrer votre base de données vers Azure à ce moment-là.
Si vous souhaitez vous connecter au service Azure, passez à l’étape suivante ou, si vous n’êtes pas déjà connecté, connectez-vous à votre compte Azure avant de continuer. Si vous n’en avez pas, vous pouvez demander un essai gratuit.
Dans l’écran Configurer Azure SQL Database, sélectionnez Azure SQL Database existant, puis sélectionnez Suivant.
Si vous devez créer un nouveau composant, passez à l’étape suivante. Sinon, passez à l’étape 7.
Pour créer une base de données Azure SQL :
Sélectionnez Créer nouveau par le signe plus vert.
Renseignez Azure SQL Database : Créer un nouvel écran, puis sélectionnez Créer.
Lorsque l’écran Configurer Azure SQL Database s’affiche, la nouvelle base de données apparaît dans la liste. Sélectionnez la nouvelle base de données dans la liste, puis sélectionnez Suivant.
Entrez un nom de chaîne de connexion, ou choisissez la valeur par défaut, puis choisissez Paramètres supplémentaires.
Remarque
Avec Visual Studio 2022 version 17.12 et ultérieure, cette procédure utilise l’identité managée Microsoft Entra, une méthode d’authentification sans mot de passe, pour se connecter à la base de données. L’avertissement sur cet écran signifie que vous devez effectuer une étape manuelle dans le portail Azure après avoir effectué cette procédure dans Visual Studio. Consultez l’authentification Microsoft Entra.
Indiquez si vous souhaitez que le chaîne de connexion stocké dans un fichier de secrets local, ou dans Azure Key Vault, puis choisissez Suivant.
L’écran Résumé des modifications affiche toutes les modifications qui seront apportées à votre projet si vous terminez le processus. Si les modifications semblent correctes, choisissez Terminer.
Si vous êtes invité à définir des règles de pare-feu, choisissez Oui.
Dans Explorateur de solutions, double-cliquez sur le nœud Services connectés pour ouvrir l’onglet Services connectés. La connexion apparaît sous la section Dépendances de service :
Si vous cliquez sur les trois points en regard de la dépendance que vous avez ajoutée, vous pouvez voir différentes options telles que Se connecter pour rouvrir l’Assistant et modifier la connexion. Vous pouvez également cliquer sur les trois points en haut à droite de la fenêtre pour afficher les options permettant de démarrer les dépendances locales, de modifier les paramètres, etc.
Si vous utilisez une identité managée (Visual Studio 17.12 et versions ultérieures), consultez la section suivante pour configurer l’utilisateur d’identité managée dans votre base de données Azure SQL.
Authentification Microsoft Entra
Avec Visual Studio 2022 version 17.12 et ultérieures, la procédure des services connectés utilise l’authentification Microsoft Entra, qui est la méthode d’authentification la plus sécurisée. Toutefois, Visual Studio ne crée pas automatiquement l’utilisateur administrateur Microsoft Entra sur la base de données Azure SQL. S’il n’existe pas d’utilisateur administrateur Microsoft Entra, la connexion échoue à s’authentifier correctement.
Vous pouvez utiliser le portail Azure, PowerShell ou Azure CLI pour créer l’utilisateur administrateur Microsoft Entra. Pour obtenir des instructions détaillées sur chacune de ces méthodes, consultez Définir l’utilisateur administrateur Microsoft Entra.
Une fois le processus Des services connectés terminé, vous devez créer un utilisateur SQL qui correspond à l’identité managée et définir des autorisations en exécutant des instructions SQL dans la base de données. Connectez-vous à l’éditeur de requête dans le portail Azure en tant qu’utilisateur administrateur Microsoft Entra et exécutez des instructions comme suit :
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];
GO
Il <identity-name>
s’agit du nom de l’identité managée dans l’ID Microsoft Entra. Si l’identité est attribuée par le système, le nom sera toujours identique à celui de votre application App Service. Pour un emplacement de déploiement, le nom de son identité affectée par le système est <app-name>/slots/<slot-name>
. Pour accorder des autorisations pour un groupe Microsoft Entra, utilisez plutôt le nom d’affichage du groupe (par exemple). myAzureSQLDBAccessGroup
Consultez les types d’identité managée et les identités managées dans Microsoft Entra pour Azure SQL. Les rôles que vous ajoutez dépendent de vos cas d’usage. Consultez ALTER ROLE.
Si vos références de System.Data.SqlClient
code, vous devez effectuer une mise à niveau vers Microsoft.Data.SqlClient
, car System.Data.SqlClient
elle ne prend pas en charge l’authentification Microsoft Entra. Pour effectuer une mise à niveau, ajoutez une référence au package NuGet Microsoft.Data.SqlClient et mettez à jour toutes les directives utilisant qui font référence System.Data.SqlClient
à l’espace Microsoft.Data.SqlClient
de noms. Il existe des changements de comportement ; voir Le portage de la aide-mémoire.
Ouvrez votre projet dans Visual Studio.
Dans Explorateur de solutions, cliquez avec le bouton de droite sur le nœud Services connectés, puis, dans le menu contextuel, sélectionnez Ajouter pour ouvrir le menu des services disponibles.
Si vous ne voyez pas le nœud Services connectés, choisissez Projet>Services connectés>Ajouter.
Choisissez Base de données SQL Server. La page Se connecter à la dépendance s’affiche. Plusieurs options doivent s’afficher :
- SQL Server Express LocalDB, la base de données SQL intégrée installée avec Visual Studio
- Base de données SQL Server sur un conteneur local sur votre ordinateur
- SQL Server Database, un serveur SQL local sur le réseau local
- Azure SQL Database, pour la base de données SQL fonctionnant en tant que service Azure
Vous pouvez réduire les coûts et simplifier le développement précoce en commençant par la base de données locale. Vous pouvez migrer vers le service en direct dans Azure ultérieurement en répétant ces étapes et en choisissant l’autre option. Si vous créez localement une base de données que vous souhaitez recréer dans Azure, vous pouvez migrer votre base de données vers Azure à ce moment-là.
Si vous souhaitez vous connecter au service Azure, passez à l’étape suivante ou, si vous n’êtes pas déjà connecté, connectez-vous à votre compte Azure avant de continuer. Si vous n’en avez pas, vous pouvez demander un essai gratuit.
Dans l’écran Configurer Azure SQL Database, sélectionnez Azure SQL Database existant, puis sélectionnez Suivant.
Si vous devez créer un nouveau composant, passez à l’étape suivante. Sinon, passez à l’étape 7.
Pour créer une base de données Azure SQL :
Sélectionnez Créer nouveau par le signe plus vert.
Renseignez Azure SQL Database : Créer un nouvel écran, puis sélectionnez Créer.
Lorsque l’écran Configurer Azure SQL Database s’affiche, la nouvelle base de données apparaît dans la liste. Sélectionnez la nouvelle base de données dans la liste, puis sélectionnez Suivant.
Entrez un nom de chaîne de connexion, ou choisissez le nom par défaut, puis indiquez si vous souhaitez que la chaîne de connexion soit stockée dans un fichier de secrets local ou dans Azure Key Vault.
L’écran Résumé des modifications affiche toutes les modifications qui seront apportées à votre projet si vous terminez le processus. Si les modifications semblent correctes, choisissez Terminer.
Si vous êtes invité à définir des règles de pare-feu, choisissez Oui.
Dans Explorateur de solutions, double-cliquez sur le nœud Services connectés pour ouvrir l’onglet Services connectés. La connexion apparaît sous la section Dépendances de service :
Si vous cliquez sur les trois points en regard de la dépendance que vous avez ajoutée, vous pouvez voir différentes options telles que Se connecter pour rouvrir l’Assistant et modifier la connexion. Vous pouvez également cliquer sur les trois points en haut à droite de la fenêtre pour afficher les options permettant de démarrer les dépendances locales, de modifier les paramètres, etc.
Accès à la chaîne de connexion
Découvrez comment stocker des secrets en toute sécurité en suivant Stockage sécurisé des secrets d’application en cours de développement dans ASP.NET Core. En particulier, pour lire la chaîne de connexion à partir du magasin de secrets, vous pouvez ajouter du code comme indiqué sur la page Lecture du secret avec l’API de configuration. Cf. Injection de dépendances dans ASP.NET Core.
Migrations Entity Framework
Il peut être pratique de travailler avec un magasin de données local au cours des premières phases de développement, mais avec Entity Framework Core, lorsque vous êtes prêt à passer au cloud, vous pouvez utiliser la prise en charge de Visual Studio pour la migration d’Entity Framework pour déplacer votre base de données ou fusionner les modifications avec un magasin de données distant. Consultez Vue d’ensemble des migrations.
Sous l’onglet Services connectés, vous pouvez trouver les commandes de migration en cliquant sur les trois points, comme illustré dans la capture d’écran :
Des commandes sont disponibles ici pour créer de nouvelles migrations, les appliquer directement ou générer des scripts SQL qui appliquent les migrations.
Ajouter une migration
Lorsqu’une modification de modèle de données est introduite, vous pouvez utiliser les outils Entity Framework Core pour ajouter une migration correspondante qui décrit dans le code les mises à jour nécessaires pour maintenir le schéma de base de données synchronisé. Entity Framework Core compare le modèle actuel à un instantané de l’ancien modèle pour déterminer les différences et génère des fichiers sources de migration. Les fichiers sont ajoutés à votre projet, généralement dans un dossier appelé Migrations et peuvent être suivis dans le contrôle de code source de votre projet comme n’importe quel autre fichier source.
Lorsque vous choisissez cette option, vous êtes invité à fournir le nom de la classe de contexte qui représente le schéma de base de données que vous souhaitez migrer.
Mettre à jour la base de données
Une fois la migration créée, elle peut être appliquée à une base de données. Entity Framework met à jour votre base de données et votre schéma avec les modifications spécifiées dans le code de migration. Lorsque vous choisissez cette option, vous êtes invité à fournir le nom de la classe de contexte qui représente le schéma de base de données que vous souhaitez migrer.
Générez un script SQL
La méthode recommandée pour déployer des migrations vers une base de données de production consiste à générer des scripts SQL. Les avantages de cette stratégie sont les suivants :
- Les scripts SQL peuvent être vérifiés pour s’assurer de leur exactitude ; ce qui est important, car l’application de modifications de schéma aux bases de données de production est une opération potentiellement dangereuse qui peut impliquer une perte de données.
- Dans certains cas, les scripts peuvent être ajustés pour répondre aux besoins spécifiques d’une base de données de production.
- Les scripts SQL peuvent être utilisés conjointement avec une technologie de déploiement et peuvent même être générés dans le cadre de votre processus CI.
- Les scripts SQL peuvent être fournis à un administrateur de base de données et peuvent être gérés et archivés séparément.
Lorsque vous utilisez cette option, vous êtes invité à utiliser la classe de contexte de base de données et l’emplacement du fichier de script.
Ouvrez l’Explorateur d’objets SQL Server
Pour des raisons pratiques, cette commande vous permet d’accéder à l’Explorateur d’objets SQL Server, ce qui vous permet d’afficher les tables et d’autres entités de base de données, et d’utiliser directement vos données. Consultez l’Explorateur d’objets.
Étapes suivantes
Vous pouvez continuer avec les démarrages rapides pour Azure SQL Database, mais au lieu de commencer depuis le début, vous pouvez commencer après l’établissement de la connexion initiale. Si vous utilisez Entity Framework, vous pouvez commencer à la section Ajouter le code pour la connexion à Azure SQL Database. Si vous utilisez des classes de données ADO.NET ou SqlClient
, vous pouvez commencer à la section Ajouter le code pour la connexion à Azure SQL Database.
Votre code ne sera pas exactement identique au code utilisé dans les guides de démarrage rapide, dans lesquels la chaîne de connexion est obtenue d’une autre façon. Les chaînes de connexion sont des secrets qui sont stockés de manière sécurisée, comme cela est expliqué dans Stockage sécurisé des secrets des applications en développement dans ASP.NET Core. En particulier, pour lire la chaîne de connexion à partir du magasin de secrets, vous pouvez ajouter du code comme indiqué sur la page Lecture du secret avec l’API de configuration.
Dans ASP.NET projets Core, le paramètre de connexion ou chaîne de connexion créé par les services connectés est disponible dans un objet de configuration. Vous pouvez y accéder en utilisant une propriété sur la classe WebApplicationBuilder
(builder
dans la plupart des modèles de projet), comme illustré dans l’exemple suivant :
var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];
La chaîne à fournir à la propriété Configuration doit correspondre à la clé dans secrets.json ou dans Azure Key Vault, que vous avez fournie dans la procédure Services connectés. Par exemple, avec Visual Studio 2022 17.12 et versions ultérieures, le paramètre de connexion est stocké dans secrets.json comme suit :
{
"ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}
Dans ASP.NET projets Core, le paramètre de connexion ou chaîne de connexion créé par les services connectés est disponible dans un objet de configuration. Vous pouvez y accéder en utilisant une propriété sur la classe WebApplicationBuilder
(builder
dans la plupart des modèles de projet), comme illustré dans l’exemple suivant :
var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];