Hinzufügen einer Verbindung zu einer Azure SQL-Datenbank
Mit Visual Studio Connected Services können Sie eine Verbindung mit einer Azure SQL-Datenbank, einem lokalen Emulator (z. B. während der Entwicklung) oder einer lokalen SQL Server-Datenbank herstellen. Weitere Informationen finden Sie unter Verbindung mit einer Datenbank.
In Visual Studio können Sie über das Feature Verbundene Dienste eine Verbindung von jedem der folgenden Projekttypen herstellen:
- ASP.NET Core
- .NET Core (einschließlich Konsolen-App, WPF, Windows Forms, Klassenbibliothek)
- .NET Core-Workerrolle
- Azure-Funktionen
- .NET Framework-Konsolen-App
- ASP.NET Model-View-Controller (MVC) (.NET Framework)
- App für Universelle Windows-Plattform
Mit der Funktion für verbundene Dienste werden die benötigten Verweise und der Verbindungscode zu Ihrem Projekt hinzugefügt und Ihre Konfigurationsdateien entsprechend geändert.
Voraussetzungen
- Visual Studio mit installierter Azure-Workload
- Ein Projekt eines unterstützten Typs
- Ein Azure-Konto. Wenn Sie nicht über ein Azure-Konto verfügen, aktivieren Sie Ihre Azure-Nutzen für Visual Studio-Abonnenten oder registrieren Sie sich für eine kostenlose Testversion.
Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe des Features „Verbundene Dienste“
Öffnen Sie Ihr Projekt in Visual Studio.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verbundene Dienste, und wählen Sie im Kontextmenü Hinzufügen aus, um das Menü verfügbarer Dienste zu öffnen.
Wenn der Knoten Verbundene Dienste nicht angezeigt wird, wählen Sie Projekt>Verbundene Dienste>Hinzufügen aus.
Wählen Sie SQL Server-Datenbank aus. Die Seite Mit Abhängigkeit verbinden wird angezeigt. Es sollten mehrere Optionen angezeigt werden:
- SQL Server Express LocalDB, das integrierte SQL-Datenbankangebot, das mit Visual Studio installiert wird
- SQL Server-Datenbank in einem lokalen Container auf Ihrem Computer
- SQL-Server-Datenbank, ein lokaler SQL-Server im lokalen Netzwerk
- Azure SQL Database, für die SQL-Datenbank, die als Azure-Dienst läuft
Sie können die Kosten senken und die frühe Entwicklung vereinfachen, indem Sie mit einer lokalen Datenbank beginnen. Sie können später in Azure zum Livedienst migrieren, indem Sie diese Schritte wiederholen und eine andere Option auswählen. Wenn Sie eine Datenbank lokal erstellen, die Sie in Azure neu erstellen möchten, können Sie Ihre Datenbank zu diesem Zeitpunkt nach Azure migrieren.
Wenn Sie eine Verbindung mit dem Azure-Dienst herstellen möchten, fahren Sie mit dem nächsten Schritt fort, oder melden Sie sich bei Ihrem Azure-Konto an, bevor Sie fortfahren, falls Sie noch nicht angemeldet sind. Wenn Sie nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversionregistrieren.
Wählen Sie im Bildschirm Azure SQL-Datenbank konfigurieren eine vorhandene Azure SQL-Datenbank-Instanz und dann Weiter aus.
Wenn Sie eine neue Komponente erstellen müssen, fahren Sie mit dem nächsten Schritt fort. Andernfalls fahren Sie mit Schritt 7 fort.
So erstellen Sie eine Azure SQL-Datenbank:
Wählen Sie neben dem grünen Pluszeichen Neu erstellen aus.
Füllen Sie den Bildschirm Azure SQL-Datenbank: Neu erstellen aus, und wählen Sie Erstellen aus.
Wenn das Dialogfeld Azure SQL-Datenbank konfigurieren angezeigt wird, befindet sich die neue Datenbank in der Liste. Wählen Sie die neue Datenbank in der Liste und dann Weiter aus.
Geben Sie einen Verbindungszeichenfolge Namen ein, oder wählen Sie die Standardeinstellung aus, und wählen Sie dann "Zusätzliche Einstellungen" aus.
Hinweis
Mit Visual Studio 2022, Version 17.12 und höher, verwendet dieses Verfahren die von Microsoft Entra verwaltete Identität, eine kennwortlose Authentifizierungsmethode, um eine Verbindung mit der Datenbank herzustellen. Die Warnung auf diesem Bildschirm bedeutet, dass Sie nach Abschluss dieses Verfahrens in Visual Studio einen manuellen Schritt im Azure-Portal ausführen müssen. Siehe Microsoft Entra-Authentifizierung.
Wählen Sie aus, ob die Verbindungszeichenfolge in einer lokalen geheimen Datei oder in Azure Key Vault gespeichert werden sollen, und wählen Sie dann "Weiter" aus.
Auf dem Bildschirm Zusammenfassung der Änderungen werden alle Änderungen angezeigt, die an Ihrem Projekt vorgenommen werden, wenn Sie den Vorgang abschließen. Wenn die Änderungen korrekt sind, wählen Sie Fertig stellen aus.
Wenn Sie zum Festlegen einer Firewallregel aufgefordert werden, wählen Sie Ja aus.
Doppelklicken Sie im Projektmappen-Explorer auf den Knoten Verbundene Dienste, um die Registerkarte Verbundene Dienste zu öffnen. Die Verbindung wird im Abschnitt Dienstabhängigkeiten angezeigt:
Wenn Sie auf die drei Punkte neben der von Ihnen hinzugefügten Abhängigkeit klicken, werden verschiedene Optionen angezeigt, z. B. Verbinden, um den Assistenten erneut zu öffnen und die Verbindung zu ändern. Sie können auch oben rechts im Fenster auf die drei Punkte klicken, um Optionen zum Starten lokaler Abhängigkeiten, Ändern von Einstellungen und mehr anzuzeigen.
Wenn Sie verwaltete Identität (Visual Studio 17.12 und höher) verwenden, lesen Sie den nächsten Abschnitt zum Einrichten des verwalteten Identitätsbenutzers in Ihrer Azure SQL-Datenbank.
Microsoft Entra-Authentifizierung
Mit Visual Studio 2022, Version 17.12 und höher, verwendet das Verfahren für verbundene Dienste die Microsoft Entra-Authentifizierung, die die sicherste Authentifizierungsmethode ist. Visual Studio erstellt jedoch nicht automatisch den Microsoft Entra-Administratorbenutzer in der Azure SQL-Datenbank. Wenn kein Microsoft Entra-Administratorbenutzer vorhanden ist, kann die Verbindung nicht erfolgreich authentifiziert werden.
Sie können das Azure-Portal, PowerShell oder die Azure CLI verwenden, um den Microsoft Entra-Administratorbenutzer zu erstellen. Ausführliche Anweisungen für jede dieser Methoden finden Sie unter Festlegen des Microsoft Entra-Administratorbenutzers.
Nach Abschluss des Prozesses "Verbundene Dienste" müssen Sie einen SQL-Benutzer erstellen, der der verwalteten Identität entspricht, und Berechtigungen festlegen, indem Sie SQL-Anweisungen in der Datenbank ausführen. Melden Sie sich beim Abfrage-Editor im Azure-Portal als Microsoft Entra-Administratorbenutzer an, und führen Sie Anweisungen wie die folgenden aus:
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
Dies <identity-name>
ist der Name der verwalteten Identität in der Microsoft Entra-ID. Bei einer systemseitig zugewiesenen Identität wird immer der Namen Ihrer App Service-App verwendet. Bei einem Bereitstellungsslot lautet der Name der systemseitig zugewiesenen Identität <app-name>/slots/<slot-name>
. Um Berechtigungen für eine Microsoft Entra-Gruppe zu erteilen, verwenden Sie stattdessen den Anzeigenamen der Gruppe (z. B myAzureSQLDBAccessGroup
. ). Siehe verwaltete Identitätstypen und verwaltete Identitäten in Microsoft Entra für Azure SQL. Die von Ihnen hinzugefügten Rollen hängen von Ihren Anwendungsfällen ab. Siehe ALTER ROLE.
Wenn Ihr Code darauf verweist System.Data.SqlClient
, müssen Sie ein Upgrade auf Microsoft.Data.SqlClient
, da System.Data.SqlClient
die Microsoft Entra-Authentifizierung nicht unterstützt wird. Zum Upgrade fügen Sie einen Verweis auf das Microsoft.Data.SqlClient NuGet-Paket hinzu, und aktualisieren Sie alle using-Direktiven, die auf System.Data.SqlClient
den Microsoft.Data.SqlClient
Namespace verweisen. Es gibt einige Verhaltensänderungen; siehe Portierungs-Spickzettel.
Öffnen Sie Ihr Projekt in Visual Studio.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verbundene Dienste, und wählen Sie im Kontextmenü Hinzufügen aus, um das Menü verfügbarer Dienste zu öffnen.
Wenn der Knoten Verbundene Dienste nicht angezeigt wird, wählen Sie Projekt>Verbundene Dienste>Hinzufügen aus.
Wählen Sie SQL Server-Datenbank aus. Die Seite Mit Abhängigkeit verbinden wird angezeigt. Es sollten mehrere Optionen angezeigt werden:
- SQL Server Express LocalDB, das integrierte SQL-Datenbankangebot, das mit Visual Studio installiert wird
- SQL Server-Datenbank in einem lokalen Container auf Ihrem Computer
- SQL-Server-Datenbank, ein lokaler SQL-Server im lokalen Netzwerk
- Azure SQL Database, für die SQL-Datenbank, die als Azure-Dienst läuft
Sie können die Kosten senken und die frühe Entwicklung vereinfachen, indem Sie mit einer lokalen Datenbank beginnen. Sie können später in Azure zum Livedienst migrieren, indem Sie diese Schritte wiederholen und eine andere Option auswählen. Wenn Sie eine Datenbank lokal erstellen, die Sie in Azure neu erstellen möchten, können Sie Ihre Datenbank zu diesem Zeitpunkt nach Azure migrieren.
Wenn Sie eine Verbindung mit dem Azure-Dienst herstellen möchten, fahren Sie mit dem nächsten Schritt fort, oder melden Sie sich bei Ihrem Azure-Konto an, bevor Sie fortfahren, falls Sie noch nicht angemeldet sind. Wenn Sie nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversionregistrieren.
Wählen Sie im Bildschirm Azure SQL-Datenbank konfigurieren eine vorhandene Azure SQL-Datenbank-Instanz und dann Weiter aus.
Wenn Sie eine neue Komponente erstellen müssen, fahren Sie mit dem nächsten Schritt fort. Andernfalls fahren Sie mit Schritt 7 fort.
So erstellen Sie eine Azure SQL-Datenbank:
Wählen Sie neben dem grünen Pluszeichen Neu erstellen aus.
Füllen Sie den Bildschirm Azure SQL-Datenbank: Neu erstellen aus, und wählen Sie Erstellen aus.
Wenn das Dialogfeld Azure SQL-Datenbank konfigurieren angezeigt wird, befindet sich die neue Datenbank in der Liste. Wählen Sie die neue Datenbank in der Liste und dann Weiter aus.
Geben Sie einen Namen für die Verbindungszeichenfolge ein oder wählen Sie den Standardwert, und wählen Sie aus, ob die Verbindungszeichenfolge in einer lokalen Geheimnisdatei oder in Azure Key Vault gespeichert werden soll.
Auf dem Bildschirm Zusammenfassung der Änderungen werden alle Änderungen angezeigt, die an Ihrem Projekt vorgenommen werden, wenn Sie den Vorgang abschließen. Wenn die Änderungen korrekt sind, wählen Sie Fertig stellen aus.
Wenn Sie zum Festlegen einer Firewallregel aufgefordert werden, wählen Sie Ja aus.
Doppelklicken Sie im Projektmappen-Explorer auf den Knoten Verbundene Dienste, um die Registerkarte Verbundene Dienste zu öffnen. Die Verbindung wird im Abschnitt Dienstabhängigkeiten angezeigt:
Wenn Sie auf die drei Punkte neben der von Ihnen hinzugefügten Abhängigkeit klicken, werden verschiedene Optionen angezeigt, z. B. Verbinden, um den Assistenten erneut zu öffnen und die Verbindung zu ändern. Sie können auch oben rechts im Fenster auf die drei Punkte klicken, um Optionen zum Starten lokaler Abhängigkeiten, Ändern von Einstellungen und mehr anzuzeigen.
Zugreifen auf die Verbindungszeichenfolge
Informationen zum sicheren Speichern von Geheimnissen finden Sie unter Sichere Speicherung von App-Geheimnissen in der Entwicklung in ASP.NET Core. Um insbesondere die Verbindungszeichenfolge aus dem Geheimnisspeicher zu lesen, können Sie wie in Lesen des Geheimnisses über die Konfigurations-API beschrieben Code hinzufügen. Siehe auch Abhängigkeitsinjektion in ASP.NET Core.
Entity Framework-Migrationen
In der Anfangsphase der Entwicklung mag es bequem sein, mit einem lokalen Datenspeicher zu arbeiten. Aber mit Entity Framework Core können Sie, sobald Sie zum Umstieg auf die Cloud bereit sind, die Unterstützung von Visual Studio für die Entity Framework-Migration nutzen, um Ihre Datenbank zu verschieben oder Änderungen mit einem Remotedatenspeicher zusammenzuführen. Weitere Informationen finden Sie unter Migrationsübersicht.
Auf der Registerkarte Verbundene Dienste finden Sie die Migrationsbefehle, indem Sie, wie im Screenshot gezeigt, auf die drei Punkte klicken:
Es stehen dort Befehle zur Verfügung, um neue Migrationen zu erstellen, sie direkt anzuwenden oder SQL-Skripts zum Anwenden der Migrationen zu generieren.
Migration hinzufügen
Wenn eine Datenmodelländerung eingeführt wird, können Sie Entity Framework Core-Tools verwenden, um eine entsprechende Migration hinzuzufügen, die in Code die erforderlichen Aktualisierungen beschreibt, um das Datenbankschema synchron zu halten. Entity Framework Core vergleicht das aktuelle Modell mit einer Momentaufnahme des alten Modells, um die Unterschiede zu ermitteln, und generiert Migrationsquelldateien. Die Dateien werden Ihrem Projekt hinzugefügt, normalerweise in einem Ordner namens Migrations, und können in der Quellcodeverwaltung Ihres Projekts wie jede andere Quelldatei nachverfolgt werden.
Wenn Sie diese Option auswählen, werden Sie aufgefordert, den Namen der Kontextklasse anzugeben, die das Datenbankschema darstellt, das Sie migrieren möchten.
Aktualisieren der Datenbank
Nachdem eine Migration erstellt wurde, kann sie auf eine Datenbank angewendet werden. Entity Framework aktualisiert Ihre Datenbank und Ihr Schema mit den im Migrationscode angegebenen Änderungen. Wenn Sie diese Option auswählen, werden Sie aufgefordert, den Namen der Kontextklasse anzugeben, die das Datenbankschema darstellt, das Sie migrieren möchten.
SQL-Skript generieren
Die empfohlene Möglichkeit zum Bereitstellen von Migrationen in einer Produktionsdatenbank ist das Generieren von SQL-Skripts. Diese Strategie hat u. a. folgende Vorteile:
- SQL-Skripts können auf Richtigkeit überprüft werden. Dies ist wichtig, da das Ändern von Schemas in Produktionsdatenbanken ein potenziell gefährlicher Vorgang ist, der zu Datenverlust führen kann.
- In einigen Fällen können die Skripts so angepasst werden, dass sie den spezifischen Anforderungen einer Produktionsdatenbank entsprechen.
- SQL-Skripts können in Verbindung mit einer Bereitstellungstechnologie verwendet und sogar als Teil Ihres CI-Prozesses generiert werden.
- SQL-Skripts können für einen Datenbankadministrator bereitgestellt und separat verwaltet und archiviert werden.
Bei Wahl dieser Option werden Sie nach der Datenbankkontextklasse und dem Speicherort der Skriptdatei gefragt.
Im SQL Server-Objekt-Explorer öffnen
Mit diesem Befehl können Sie bequem zum SQL Server-Objekt-Explorer wechseln, um Tabellen und andere Datenbankentitäten zu erkunden und direkt mit Ihren Daten zu arbeiten. Weitere Informationen finden Sie unter Objekt-Explorer.
Nächste Schritte
Sie können mit den Schnellstarts für Azure SQL Database fortfahren, aber anstatt von Anfang an zu beginnen, können Sie nach der Einrichtung der ersten Verbindung beginnen. Wenn Sie Entity Framework verwenden, können Sie unter Hinzufügen des Codes zum Herstellen einer Verbindung mit Azure SQL-Datenbank beginnen. Wenn Sie SqlClient
oder ADO.NET-Datenklassen verwenden, können Sie unter Hinzufügen des Codes zum Herstellen einer Verbindung mit Azure SQL-Datenbank beginnen.
Ihr Code entspricht nicht genau dem, der in den Schnellstarts verwendet wird, die eine andere Methode zum Abrufen der Verbindungszeichenfolge verwenden. Die Verbindungszeichenfolgen sind Geheimnisse und werden sicher gespeichert, wie unter Sicheres Speichern von App-Geheimnissen in der Entwicklung in ASP.NET Core erläutert wird. Um insbesondere die Verbindungszeichenfolge aus dem Geheimnisspeicher zu lesen, können Sie wie in Lesen des Geheimnisses über die Konfigurations-API beschrieben Code hinzufügen.
In ASP.NET Core-Projekten ist die Verbindungseinstellung oder Verbindungszeichenfolge, die von Connected Services erstellt wurden, in einem Konfigurationsobjekt verfügbar. Sie können über eine Eigenschaft der WebApplicationBuilder
-Klasse (builder
in vielen Projektvorlagen) darauf zugreifen, wie im folgenden Beispiel gezeigt:
var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];
Die für die Konfigurationseigenschaft bereitzustellende Zeichenfolge sollte mit dem Schlüssel in secrets.json oder im Azure Key Vault übereinstimmen, den Sie im Verfahren für verbundene Dienste bereitgestellt haben. Mit Visual Studio 2022 17.12 und höher wird beispielsweise die Verbindungseinstellung in secrets.json gespeichert als:
{
"ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}
In ASP.NET Core-Projekten ist die Verbindungseinstellung oder Verbindungszeichenfolge, die von Connected Services erstellt wurden, in einem Konfigurationsobjekt verfügbar. Sie können über eine Eigenschaft der WebApplicationBuilder
-Klasse (builder
in vielen Projektvorlagen) darauf zugreifen, wie im folgenden Beispiel gezeigt:
var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];