Hinzufügen einer Verbindung zu einer Azure SQL-Datenbank
Mit Visual Studio Connected Services können Sie eine Verbindung mit azure SQL-Datenbank, einem lokalen Emulator (z. B. während der Entwicklung) oder einer lokalen SQL Server-Datenbank herstellen. Informationen zu lokalen SQL Server finden Sie unter Herstellen einer Verbindung mit einer Datenbank.
Mit Visual Studio können Sie eine Verbindung mit einem der folgenden Projekttypen herstellen, indem Sie das Feature Connected Services verwenden:
- 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)
- Universelle Windows-Plattform-App
Die funktion des verbundenen Diensts fügt dem Projekt alle erforderlichen Verweise und Verbindungscode hinzu und ändert die Konfigurationsdateien entsprechend.
Voraussetzungen
- Visual Studio mit installierter Azure-Workload.
- Ein Projekt eines der unterstützten Typen
- Ein Azure-Konto. Wenn Sie nicht über ein Azure-Konto verfügen, aktivieren Sie Ihre Azure-Vorteile für Visual Studio-Abonnierende, oder registrieren Sie sich für eine kostenlose Testversion.
Herstellen einer Verbindung zu Azure SQL-Datenbank mithilfe von Verbunddiensten
Öffnen Sie Ihr Projekt in Visual Studio.
Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf den Knoten Verbundene Dienste, und wählen Sie im Kontextmenü Hinzufügen aus, um das Menü der verfügbaren 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 ist
- SQL Server-Datenbank auf einem lokalen Container auf Ihrem Computer
- SQL Server-Datenbank, ein lokaler SQL Server im lokalen Netzwerk
- Azure SQL-Datenbank für die SQL-Datenbank, die als Azure-Dienst ausgeführt wird
Sie können Kosten reduzieren und die frühe Entwicklung vereinfachen, indem Sie mit einer lokalen Datenbank beginnen. Sie können später zu dem Livedienst in Azure migrieren, indem Sie diese Schritte wiederholen und eine andere Option auswählen. Wenn Sie eine Datenbank lokal erstellen, die Sie in Azure erneut erstellen möchten, können Sie Ihre Datenbank zu diesem Zeitpunkt zu Azure migrieren.
Wenn Sie eine Verbindung mit dem Azure-Dienst herstellen möchten, fahren Sie mit dem nächsten Schritt fort, oder wenn Sie noch nicht angemeldet sind, melden Sie sich bei Ihrem Azure-Konto an, bevor Sie fortfahren. 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. Fahren Sie andernfalls 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 aus, und wählen Sie Weiteraus.
Geben Sie einen Verbindungszeichenfolgennamen ein, oder wählen Sie die Standardeinstellung aus, und wählen Sie dann zusätzliche Einstellungenaus.
Anmerkung
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 Vaultgespeichert werden soll, und wählen Sie dann Nextaus.
Die Zusammenfassung der Änderungen Bildschirm zeigt alle Änderungen an, die an Ihrem Projekt vorgenommen werden, wenn Sie den Vorgang abgeschlossen haben. Wenn die Änderungen korrekt sind, wählen Sie Fertig stellen aus.
Wenn Sie aufgefordert werden, eine Firewallregeln festzulegen, wählen Sie Jaaus.
Doppelklicken Sie im Projektmappen-Explorer auf den Knoten Verbundene Dienste, um die Registerkarte Connected Services zu öffnen. Die Verbindung wird unter dem Abschnitt Dienstabhängigkeiten angezeigt:
Wenn Sie neben der hinzugefügten Abhängigkeit auf die drei Punkte klicken, werden verschiedene Optionen wie Connect angezeigt, 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 anzuzeigen, um lokale Abhängigkeiten zu starten, Einstellungen zu ändern und vieles mehr.
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 für Sie. 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
Die <identity-name>
ist der Name der verwalteten Identität in der Microsoft Entra-ID. Wenn die Identität vom System zugewiesen ist, ist der Name immer mit dem Namen Ihrer App Service-App identisch. Bei einem Bereitstellungsslot lautet der Name der vom System 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 auf System.Data.SqlClient
verweist, müssen Sie ein Upgrade auf Microsoft.Data.SqlClient
durchführen, da System.Data.SqlClient
die Microsoft Entra-Authentifizierung nicht unterstützt. Fügen Sie zum Upgrade einen Verweis auf das Microsoft.Data.SqlClient NuGet-Pakethinzu, und aktualisieren Sie alle using-Anweisungen, die auf System.Data.SqlClient
verweisen, sodass sie den Namespace Microsoft.Data.SqlClient
verwenden. Es gibt einige Verhaltensänderungen; siehe Portieren von Spickzetteln.
Öffnen Sie Ihr Projekt in Visual Studio.
Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf den Knoten Verbundene Dienste, und wählen Sie im Kontextmenü Hinzufügen aus, um das Menü der verfügbaren 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 ist
- SQL Server-Datenbank auf einem lokalen Container auf Ihrem Computer
- SQL Server-Datenbank, ein lokaler SQL Server im lokalen Netzwerk
- Azure SQL-Datenbank für die SQL-Datenbank, die als Azure-Dienst ausgeführt wird
Sie können Kosten reduzieren und die frühe Entwicklung vereinfachen, indem Sie mit einer lokalen Datenbank beginnen. Sie können später zu dem Livedienst in Azure migrieren, indem Sie diese Schritte wiederholen und eine andere Option auswählen. Wenn Sie eine Datenbank lokal erstellen, die Sie in Azure erneut erstellen möchten, können Sie Ihre Datenbank zu diesem Zeitpunkt zu Azure migrieren.
Wenn Sie eine Verbindung mit dem Azure-Dienst herstellen möchten, fahren Sie mit dem nächsten Schritt fort, oder wenn Sie noch nicht angemeldet sind, melden Sie sich bei Ihrem Azure-Konto an, bevor Sie fortfahren. 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. Fahren Sie andernfalls 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 aus, und wählen Sie Weiteraus.
Geben Sie einen Verbindungszeichenfolgennamen ein, oder wählen Sie die Standardeinstellung aus, und wählen Sie aus, ob die Verbindungszeichenfolge in einer lokalen geheimen Datei oder in Azure Key Vaultgespeichert werden soll.
Die Zusammenfassung der Änderungen Bildschirm zeigt alle Änderungen an, die an Ihrem Projekt vorgenommen werden, wenn Sie den Vorgang abgeschlossen haben. Wenn die Änderungen korrekt sind, wählen Sie Fertig stellen aus.
Wenn Sie aufgefordert werden, eine Firewallregeln festzulegen, wählen Sie Jaaus.
Doppelklicken Sie im Projektmappen-Explorer auf den Knoten Verbundene Dienste, um die Registerkarte Connected Services zu öffnen. Die Verbindung wird unter dem Abschnitt Dienstabhängigkeiten angezeigt:
Wenn Sie neben der hinzugefügten Abhängigkeit auf die drei Punkte klicken, werden verschiedene Optionen wie Connect angezeigt, 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 anzuzeigen, um lokale Abhängigkeiten zu starten, Einstellungen zu ändern und vieles mehr.
Zugreifen auf die Verbindungszeichenfolge
Erfahren Sie, wie Sie Geheimnisse sicher speichern, indem Sie den sicheren Umgang mit App-Geheimnissen während der Entwicklung in ASP.NET Corebefolgen. 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
Möglicherweise ist es praktisch, während der frühen Entwicklung mit einem lokalen Datenspeicher zu arbeiten, aber mit Entity Framework Core können Sie die Unterstützung von Visual Studio für die Entity Framework-Migration verwenden, um Ihre Datenbank zu verschieben oder Änderungen mit einem Remotedatenspeicher zusammenzuführen. Siehe Migrationsübersicht.
Auf der Registerkarte Connected Services finden Sie die Migrationsbefehle, indem Sie auf die drei Punkte klicken, wie im Screenshot gezeigt:
Befehle stehen zur Verfügung, um neue Migrationen zu erstellen, sie direkt anzuwenden oder SQL-Skripts zu generieren, die die Migrationen anwenden.
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 im Code die erforderlichen Updates 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 Migrationsquelldateien zu generieren. Die Dateien werden ihrem Projekt hinzugefügt, in der Regel in einem Ordner namens Migrationen und kann in der Quellcodeverwaltung Ihres Projekts wie jede andere Quelldatei nachverfolgt werden.
Wenn Sie diese Option auswählen, werden Sie aufgefordert, den Kontextklassennamen anzugeben, der das Datenbankschema darstellt, das Sie migrieren möchten.
Datenbank aktualisieren
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 Kontextklassennamen anzugeben, der das Datenbankschema darstellt, das Sie migrieren möchten.
SQL-Skript generieren
Die empfohlene Methode zum Bereitstellen von Migrationen in einer Produktionsdatenbank besteht darin, SQL-Skripts zu generieren. Zu den Vorteilen dieser Strategie gehören:
- SQL-Skripts können auf Genauigkeit überprüft werden; Dies ist wichtig, da das Anwenden von Schemaänderungen auf Produktionsdatenbanken ein potenziell gefährlicher Vorgang ist, der datenverlustbedrohlich sein könnte.
- In einigen Fällen können die Skripts an die spezifischen Anforderungen einer Produktionsdatenbank angepasst werden.
- SQL-Skripts können in Verbindung mit einer Bereitstellungstechnologie verwendet werden und können sogar als Teil Ihres CI-Prozesses generiert werden.
- SQL-Skripts können für einen DBA bereitgestellt und separat verwaltet und archiviert werden.
Wenn Sie diese Option verwenden, werden Sie die Datenbankkontextklasse und den Speicherort für die Skriptdatei gefragt.
Öffnen im SQL Server-Objekt-Explorer
Aus Gründen der Einfachheit können Sie mit diesem Befehl zum SQL Server-Objekt-Explorer springen, sodass Sie Tabellen und andere Datenbankentitäten anzeigen und direkt mit Ihren Daten arbeiten können. Weitere Informationen finden Sie unter Objekt-Explorer.
Nächste Schritte
Sie können mit den Schnellstarts für die Azure SQL-Datenbank fortfahren, aber anstatt von Anfang an zu beginnen, können Sie beginnen, nachdem die erste Verbindung eingerichtet wurde. Wenn Sie Entity Framework verwenden, können Sie bei beginnen. Fügen Sie den Code hinzu, um eine Verbindung mit der Azure SQL-Datenbankherzustellen. Wenn Sie SqlClient
oder ADO.NET Datenklassen verwenden, können Sie mit Hinzufügen des Codes beginnen, um eine Verbindung mit der Azure SQL-Datenbankherzustellen.
Ihr Code stimmt nicht genau mit dem überein, was in den Schnellstarts verwendet wird, da diese eine andere Methode zum Abrufen der Verbindungszeichenfolge nutzen. Die Verbindungszeichenfolgen sind geheime Daten und werden sicher gespeichert, wie in sichere Speicherung von App-Geheimnissen in der Entwicklung in ASP.NET Coreerläutert. 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 wurde, 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 wurde, in einem Konfigurationsobjekt verfügbar. Sie können darauf über eine Eigenschaft der Klasse WebApplicationBuilder
zugreifen (builder
in vielen Projektvorlagen), wie im folgenden Beispiel gezeigt:
var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];