Lernprogramm: Speichern des Datenbankschemas in Git

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceSQL-Datenbank in Microsoft Fabric

Das Speichern des Datenbankschemas in Git bietet mehrere Vorteile, einschließlich Versionssteuerung, Zusammenarbeit und die Möglichkeit, Änderungen im Laufe der Zeit nachzuverfolgen. Dieser Ansatz eignet sich besonders für die Code-first-Entwicklung, bei der Sie das Datenbankschema über Code definieren und Änderungen direkt auf eine Entwicklungsumgebung anwenden, indem Sie einen ORM- oder Codierungs-Agent wie GitHub Copilot verwenden.

In diesem Lernprogramm erfahren Sie, wie Sie das Datenbankschema in Git speichern und als Teil Ihres Entwicklungsworkflows verwalten.

  • Erstellen eines neuen SQL-Projekts aus einer vorhandenen Datenbank
  • Übertragen Sie den Datenbankcode per Commit und Push in ein entferntes Git-Repository.
  • Anwenden von Änderungen aus der Datenbank auf den vorhandenen Code
  • Ziehen Sie Änderungen aus dem Git-Remoterepository ab, und wenden Sie sie auf die lokale Datenbank an (optional)

Diagramm zur Veranschaulichung des Informationsflusses im Tutorial.

Wenn Sie fertig sind, können Sie Ihre Datenbank in der Quellcodeverwaltung nachverfolgen und mit Ihrem Team an Datenbankänderungen über ein Git-Repository zusammenarbeiten.

Note

Um das Lernprogramm abzuschließen, benötigen Sie Zugriff auf eine SQL-Datenbank. Sie können lokal kostenlos entwickeln, indem Sie SQL Server Entwickleredition auf Windows oder in Containern verwenden.

Voraussetzungen

Warning

Dieses Lernprogramm ist für die SDK-Formatprojekte (Vorschau) in Visual Studio 2022 nicht verfügbar. Verwenden Sie stattdessen SQL Server Management Studio (SSMS) oder Visual Studio Code.

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Schritt 1: Erstellen eines neuen SQL-Projekts aus einer vorhandenen Datenbank

Verwenden Sie das SQL-Datenbankprojektformat , um Ihre Datenbank in der Quellcodeverwaltung darzustellen. Das Projekt enthält .sql-Dateien für jedes Datenbankobjekt und eine .sqlproj mit Datenbankeinstellungen. Wenn Sie das Projekt im Datei-Explorer und der Quellcodeverwaltung anzeigen, spiegelt die Struktur eines SQL-Projekts das Durchsuchen der Datenbank im Objekt-Explorer wider.

Klicken Sie im SQL Server Objekt-Explorer in Visual Studio mit der rechten Maustaste auf die Datenbank, aus der Sie eine project erstellen möchten, und wählen Sie Neue Project erstellen... .

Screenshot des Dialogfelds

Geben Sie im Dialogfeld Neues Projekt einen Projektnamen ein. Der Projektname muss nicht mit einem Datenbanknamen übereinstimmen. Überprüfen Sie den Projektstandort und ändern Sie ihn bei Bedarf. Die Standardimporteinstellungen importieren die Objekte nach Schema in Ordner und dann Objekttyp. Sie können die Importeinstellungen ändern, um die Ordnerstruktur zu ändern oder Berechtigungen in die zu importierenden Objekte einzuschließen. Starten eines Imports.

Im Dialogfeld "Datenbank importieren " wird der Importstatus als Meldungen angezeigt. Nach Abschluss des Imports werden die importierten Objekte im Projektmappen-Explorer angezeigt. Der Prozess speichert die Protokolle in einer Datei im Projektverzeichnis unter Import Schema Logs. Wählen Sie "Fertig stellen" aus.

Warning

Dieses Lernprogramm ist für die SDK-Formatprojekte (Vorschau) in Visual Studio 2022 nicht verfügbar. Verwenden Sie stattdessen SQL Server Management Studio (SSMS) oder Visual Studio Code.

Wählen Sie in der Ansicht des Datenbankobjekt-Explorers in Visual Studio Code eine Datenbank aus, aus der Sie ein Projekt erstellen möchten. Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie Projekt aus Datenbank erstellen aus.

Screenshot des Dialogfelds „Projekt aus Datenbank erstellen“ in Visual Studio Code.

In Visual Studio Code erfordert das Dialogfeld Projekt aus der Datenbank erstellen den Projektnamen und den Speicherort. Die Standardimporteinstellungen importieren die Objekte nach Schema in Ordner und dann Objekttyp. Sie können eine andere Ordnerstruktur auswählen oder berechtigungen in die zu importierenden Objekte einschließen, bevor Sie "Erstellen" auswählen.

Öffnen Sie die Anzeige Datenbankprojekte, um die neuen Projekt- und importierten Objektdefinitionen anzuzeigen.

Klicken Sie im Objekt-Explorer in SQL Server Management Studio mit der rechten Maustaste auf die Datenbank, aus der Sie eine project erstellen möchten, und wählen Sie im Menü "Aufgaben" die Option "Project aus Datenbank erstellen" aus.

Screenshot des Dialogfelds „Neues SQL-Projekt aus einer Datenbank“ in SQL Server Management Studio.

Überprüfen Sie im Dialogfeld "SQL-Project aus Datenbank erstellen" die ausgewählte Datenbank, und ändern Sie den project Namen und Speicherort nach Bedarf. Das neue Projekt wird mit den Objekten aus der ausgewählten Datenbank erstellt und in Ordnern nach Schema angeordnet, dann Objekttyp.

Eine Lösungsdatei wird automatisch im Ordner oberhalb des Projektordners erstellt und nach der Erstellung im Projektmappen-Explorer geöffnet. Wenn Sie Ihr neues Projekt zu einer vorhandenen Projektmappe hinzufügen möchten, wählen Sie "Zur Projektmappe hinzufügen" aus, und navigieren Sie zur Projektmappendatei. Wählen Sie "Erstellen" aus, um das Projekt zu erstellen.

Verwenden Sie die SQLPackage CLI, um das Schema einer vorhandenen Datenbank in ein SQL-Projekt zu extrahieren. Mit dem folgenden SqlPackage-Befehl wird das Schema einer Datenbank in ein vollständiges SQL-Projekt extrahiert. Die .sql Dateien werden nach geschachtelten Schema- und Objekttypordnern organisiert, und eine .sqlproj Datei wird erstellt, um das Projekt mit Eigenschaften zu verwalten, die den Optionen der Datenbank entsprechen.

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject

Schritt 2: Commit und Pushen des Datenbankcodes an ein Git-Remoterepository

Starten Sie nach dem Erstellen des SQL-Projekts die Git-Zeitachse für die Datenbank in einem lokalen Git-Repository.

Wenn das SQL-Projekt in Visual Studio geöffnet ist, erstellen Sie ein lokales Git-Repository, und pushen Sie es an eine Remote.With the SQL project open in Visual Studio, create a local Git repository and push it to a remote.

  1. Wählen Sie Git>Git-Repository erstellen aus der Menüleiste aus.

  2. Wählen Sie im Dialogfeld "Git-Repository erstellen" unter "Push an einen neuen Remoteabschnitt" entweder GitHub oder Azure DevOps aus. Wenn Sie sich dafür entscheiden, an GitHub zu pushen, melden Sie sich bei Ihrem GitHub-Konto an, wenn Sie dazu aufgefordert werden. Wenn Sie Azure DevOps auswählen, melden Sie sich bei Ihrem Azure DevOps Konto an, und wählen oder erstellen Sie ein Projekt.

  3. Geben Sie einen Repositorynamen und eine Beschreibung ein. Stellen Sie sicher, dass die Gitignore-Vorlage auf VisualStudio festgelegt ist, und wählen Sie "Erstellen und Push" aus.

Visual Studio erstellt das lokale Git-Repository, führt einen ersten Commit mit Ihren SQL-Projektdateien aus und pusht es in das Remote-Repository.

Um zu überprüfen, ob der Code erfolgreich übertragen wurde, öffnen Sie einen Browser, und navigieren Sie zu Ihrem Repository auf GitHub (https://github.com) oder Azure DevOps (https://dev.azure.com). Die SQL-Projektdateien, einschließlich der .sqlproj Datei und der .sql Objektdefinitionen, sollten angezeigt werden.

Weitere Informationen finden Sie unter "Info zu Git" in Visual Studio.

Warning

Dieses Lernprogramm ist für die SDK-Formatprojekte (Vorschau) in Visual Studio 2022 nicht verfügbar. Verwenden Sie stattdessen SQL Server Management Studio (SSMS) oder Visual Studio Code.

Wenn der SQL-Projektordner in Visual Studio Code geöffnet ist, initialisieren Sie ein lokales Git-Repository und übertragen Sie es in ein Remote-Repository.

  1. Öffnen Sie die Ansicht "Quellcodeverwaltung ", indem Sie in der Aktivitätsleiste das Symbol "Quellcodeverwaltung" auswählen oder drücken Ctrl+Shift+G.

  2. Wählen Sie "Repository initialisieren " aus, um ein neues Git-Repository im aktuellen Ordner zu erstellen.

  3. Alle Projektdateien werden als nicht nachverfolgte Änderungen angezeigt. Wählen Sie das + Symbol neben "Änderungen " aus, um alle Dateien zu stufen.

  4. Geben Sie eine Commit-Nachricht wie Initial commit of SQL project in das Nachrichteneingabefeld ein und wählen Sie die Schaltfläche Commit (Häkchensymbol) aus.

  5. Wählen Sie in der Quellcodeverwaltung-Ansicht Branch veröffentlichen aus, um Ihr lokales Repository in ein Remote-Repository zu übertragen. Wählen Sie aus, ob Sie in GitHub oder in Azure DevOps veröffentlichen möchten, und folgen Sie den Anmeldeaufforderungen. Wählen Sie eine Sichtbarkeit des Repositorys (öffentlich oder privat) aus, und bestätigen Sie dies.

Um zu überprüfen, ob der Code erfolgreich übertragen wurde, öffnen Sie einen Browser, und navigieren Sie zu Ihrem Repository auf GitHub (https://github.com) oder Azure DevOps (https://dev.azure.com). Die SQL-Projektdateien, einschließlich der .sqlproj Datei und der .sql Objektdefinitionen, sollten angezeigt werden.

Weitere Informationen finden Sie unter "Quellcodeverwaltung" in Visual Studio Code.

Wenn das SQL-Projekt in SQL Server Management Studio geöffnet ist, erstellen Sie ein lokales Git-Repository, und übertragen Sie es an eine Remote.With the SQL project open in SQL Server Management Studio, create a local Git repository and push it to a remote.

  1. Wählen Sie in der Menüleiste Git>Git-Repository erstellen aus.

  2. Wählen Sie im Dialogfeld "Git-Repository erstellen" unter "Push an einen neuen Remoteabschnitt" entweder GitHub oder Azure DevOps aus. Wenn Sie Ihre Änderungen an GitHub übertragen möchten, melden Sie sich bei Aufforderung bei Ihrem GitHub-Konto an. Wenn Sie Azure DevOps auswählen, melden Sie sich bei Ihrem Azure DevOps Konto an, und wählen oder erstellen Sie ein Projekt.

  3. Geben Sie einen Repositorynamen und eine Beschreibung ein. Stellen Sie sicher, dass die Gitignore-Vorlage auf VisualStudio festgelegt ist, und wählen Sie "Erstellen und Push" aus.

SSMS erstellt das lokale Git-Repository, führt mit Ihren SQL-Projektdateien einen ersten Commit aus und überträgt es in das Remote-Repository.

Um zu überprüfen, ob der Code erfolgreich übertragen wurde, öffnen Sie einen Browser, und navigieren Sie zu Ihrem Repository auf GitHub (https://github.com) oder Azure DevOps (https://dev.azure.com). Die SQL-Projektdateien, einschließlich der .sqlproj Datei und der .sql Objektdefinitionen, sollten angezeigt werden.

Weitere Informationen finden Sie unter "Info zu Git" in Visual Studio.

Initialisieren Sie im SQL-Projektverzeichnis ein lokales Git-Repository, committen Sie sämtliche Dateien und pushen Sie sie in ein Remote-Repository.

  1. Initialisieren Sie ein neues Git-Repository, fügen Sie eine .gitignore Datei hinzu, und erstellen Sie einen ersten Commit:

    cd MyDatabaseProject
    git init
    dotnet new gitignore
    git add .
    git commit -m "Initial commit of SQL project"
    
  2. Erstellen Sie ein neues Remote-Repository in GitHub oder Azure DevOps:

    • GitHub: Gehen Sie zu https://github.com/new und erstellen Sie ein neues Repository. Initialisieren Sie es nicht mit einem README, .gitignore oder einer Lizenz.
    • Azure DevOps: Wechseln Sie zu Ihrem Azure DevOps Projekt, wählen Sie Repos aus, und erstellen Sie ein neues Repository. Deaktivieren Sie das Kontrollkästchen "README hinzufügen".
  3. Fügen Sie die Remoteverbindung hinzu und übertragen Sie den anfänglichen Commit:

    git remote add origin <your-repository-url>
    git push -u origin main
    

    Ersetzen Sie <your-repository-url> beim Erstellen des Repositorys durch die von GitHub oder Azure DevOps bereitgestellte URL.

Um zu überprüfen, ob der Code erfolgreich übertragen wurde, öffnen Sie einen Browser, und wechseln Sie zu Ihrem Repository. Die SQL-Projektdateien, einschließlich der .sqlproj Datei und der .sql Objektdefinitionen, sollten angezeigt werden.

Schritt 3: Anwenden von Änderungen aus der Datenbank auf den vorhandenen Code

Wenn sich das Datenbankschema außerhalb des SQL-Projekts ändert (z. B. durch direkte Änderungen an einer Datenbank, einer ORM-Migration oder agentischen Aktionen), können Sie das Projekt aktualisieren, um diese Änderungen widerzuspiegeln.

Verwenden Sie den Schemaabgleich, um das SQL-Projekt aus der Datenbank zu aktualisieren.

  1. Klicken Sie in SQL Server Objekt-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie "Schemaabgleich" aus.

  2. Im Fenster "Schemaabgleich " wird die Datenbank als Quelle festgelegt. Wählen Sie die Dropdownliste " Ziel auswählen " und dann "Ziel auswählen" aus.

  3. Wählen Sie im Dialogfeld „Zielschema auswählenProjekt aus, und wählen Sie Ihr SQL-Datenbankprojekt aus. Wählen Sie OK aus.

  4. Wählen Sie Vergleichen aus, um den Vergleich auszuführen. Die Ergebnisse zeigen die Unterschiede zwischen der Datenbank (Quelle) und dem Projekt (Ziel) an.

  5. Überprüfen Sie die Unterschiede. Deaktivieren Sie alle Änderungen, die Sie nicht auf das Projekt anwenden möchten.

  6. Wählen Sie "Aktualisieren" aus, um die ausgewählten Änderungen auf das SQL-Projekt anzuwenden.

Die Projektdateien werden aktualisiert, um dem Datenbankschema zu entsprechen. Überprüfen Sie die Änderungen im Fenster Git-Änderungen, geben Sie eine Commit-Nachricht ein, und wählen Sie Commit für alle übernehmen aus. Wählen Sie "Push" aus, um die Änderungen an das Remote-Repository zu übertragen.

Warning

Dieses Lernprogramm ist für die SDK-Formatprojekte (Vorschau) in Visual Studio 2022 nicht verfügbar. Verwenden Sie stattdessen SQL Server Management Studio (SSMS) oder Visual Studio Code.

Verwenden Sie den Befehl Projekt aus Datenbank aktualisieren, um das SQL-Projekt aus der Datenbank zu aktualisieren.

  1. Klicken Sie im Datenbankobjekt-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie SQL-Datenbankprojekte>Projekt aus Datenbank aktualisieren aus.

  2. Wählen Sie das SQL-Datenbankprojekt aus, das aktualisiert und bestätigt werden soll.

  3. Der Vergleich wird ausgeführt und wendet die Änderungen aus der Datenbank auf das Projekt an. Die aktualisierten .sql Dateien werden in der Ansicht "Quellcodeverwaltung " als geänderte Dateien angezeigt.

Überprüfen Sie die Änderungen in der Ansicht "Quellcodeverwaltung ", stufen Sie die geänderten Dateien auf, geben Sie eine Commit-Nachricht ein, und wählen Sie "Commit ausführen" aus. Wählen Sie "Änderungen synchronisieren" aus, um den Commit an das Remote-Repository zu übertragen.

Verwenden Sie den Schemaabgleich, um das SQL-Projekt aus der Datenbank zu aktualisieren.

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie Tasks>Schemavergleich (Vorschau) aus.

  2. Im Fenster "Schemaabgleich " wird die Datenbank als Quelle festgelegt. Klicken Sie auf die Schaltfläche mit den Auslassungspunkten und wählen Sie Ihr SQL-Datenbankprojekt als Ziel aus.

  3. Wählen Sie Vergleichen aus, um den Vergleich auszuführen. Die Ergebnisse zeigen die Unterschiede zwischen der Datenbank (Quelle) und dem Projekt (Ziel) an.

  4. Überprüfen Sie die Unterschiede. Deaktivieren Sie alle Änderungen, die Sie nicht auf das Projekt anwenden möchten.

  5. Wählen Sie Übernehmen aus, um die ausgewählten Änderungen auf das SQL-Projekt anzuwenden.

Die Projektdateien werden aktualisiert, um dem Datenbankschema zu entsprechen. Überprüfen Sie die Änderungen im Fenster Git-Änderungen, geben Sie eine Commit-Nachricht ein, und wählen Sie Commit für alle übernehmen aus. Wählen Sie "Push" aus, um die Änderungen an das Remote-Repository zu übertragen.

Verwenden Sie SqlPackage, um das SQL-Projekt aus der Datenbank neu zu generieren und die vorhandenen Projektdateien durch das aktuelle Datenbankschema zu ersetzen. Während die anderen SQL-Projekttools eine grafische Oberfläche bereitstellen, bietet SqlPackage einen Befehlszeilenansatz für die Automatisierung, der keine Möglichkeit bietet, die Dateiänderungen zu überprüfen, bevor sie angewendet werden.

  1. Entfernen Sie die vorhandenen SQL-Objektdateien, und generieren Sie das Projekt neu:

    rm -rf MyDatabaseProject
    sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject
    
  2. Überprüfen Sie die Änderungen mit Git, und übernehmen Sie Folgendes:

    cd MyDatabaseProject
    dotnet new gitignore
    git add .
    git status
    git commit -m "Update project from database changes"
    git push
    

Schritt 4: (optional) Änderungen aus dem Git-Remote-Repository abrufen und auf die lokale Datenbank anwenden

Wenn andere Teammitglieder Datenbankschemaänderungen an das Remoterepository übertragen, können Sie diese Änderungen abrufen und in Ihrer lokalen Entwicklungsdatenbank bereitstellen.

  1. Wählen Sie Git>Pull aus der Menüleiste aus, um die neuesten Änderungen aus dem Remote-Repository abzurufen.

  2. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den SQL-Datenbankprojektknoten, und wählen Sie "Schemaabgleich" aus.

  3. Im Fenster "Schemavergleich " wird das Projekt als Quelle festgelegt. Wählen Sie die Dropdownliste " Ziel auswählen " und dann "Ziel auswählen" aus.

  4. Wählen Sie im Dialogfeld "Zielschema auswählen" die Option "Datenbank" aus, und wählen Sie die verbindung mit der lokalen Entwicklungsdatenbank aus. Wählen Sie OK aus.

  5. Wählen Sie Vergleichen aus, um den Vergleich auszuführen. Die Ergebnisse zeigen die Unterschiede zwischen dem Projekt (Quelle) und der Datenbank (Ziel) an.

  6. Überprüfen Sie die Unterschiede, um zu überprüfen, ob die Änderungen erwartet werden.

  7. Wählen Sie "Aktualisieren" aus, um die Änderungen auf die Datenbank anzuwenden.

Warning

Dieses Lernprogramm ist für die SDK-Formatprojekte (Vorschau) in Visual Studio 2022 nicht verfügbar. Verwenden Sie stattdessen SQL Server Management Studio (SSMS) oder Visual Studio Code.

  1. Öffnen Sie die Ansicht "Quellcodeverwaltung", und wählen Sie im Menü "..." die Option "Ziehen" aus (oder verwenden Sie die Schaltfläche "Synchronisieren" in der Statusleiste), um die neuesten Änderungen aus dem Remote-Repository abzurufen.

  2. Klicken Sie in der Ansicht "Datenbankprojekte " mit der rechten Maustaste auf das SQL-Datenbankprojekt, und wählen Sie "Schemaabgleich" aus.

  3. Im Fenster "Schemavergleich " wird das Projekt als Quelle festgelegt. Wählen Sie die Zielschaltfläche mit den Auslassungspunkten aus, und wählen Sie Ihre lokale Datenbankverbindung für die Entwicklung als Ziel aus.

  4. Wählen Sie Vergleichen aus, um den Vergleich auszuführen. Die Ergebnisse zeigen die Unterschiede zwischen dem Projekt (Quelle) und der Datenbank (Ziel) an.

  5. Überprüfen Sie die Unterschiede, um zu überprüfen, ob die Änderungen erwartet werden.

  6. Wählen Sie Übernehmen aus, um die Änderungen in der Datenbank zu übernehmen.

  1. Öffnen Sie ein Terminal und führen Sie git pull im Projektverzeichnis aus, um die neuesten Änderungen aus dem Remote-Repository abzurufen.

  2. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den SQL-Datenbankprojektknoten, und wählen Sie "Schemaabgleich( Vorschau)" aus.

  3. Im Fenster "Schemavergleich " wird das Projekt als Quelle festgelegt. Wählen Sie das Ziel aus, und wählen Sie ihre lokale Entwicklungsdatenbankverbindung aus.

  4. Wählen Sie Vergleichen aus, um den Vergleich auszuführen. Die Ergebnisse zeigen die Unterschiede zwischen dem Projekt (Quelle) und der Datenbank (Ziel) an.

  5. Überprüfen Sie die Unterschiede, um zu überprüfen, ob die Änderungen erwartet werden.

  6. Wählen Sie Übernehmen aus, um die Änderungen in der Datenbank zu übernehmen.

  1. Rufen Sie die neuesten Änderungen aus dem Remote-Repository ab:

    cd MyDatabaseProject
    git pull
    
  2. Erstellen Sie das Projekt, um zu überprüfen, ob die Änderungen erfolgreich kompiliert wurden:

    dotnet build
    
  3. Stellen Sie die Änderungen in Ihrer lokalen Entwicklungsdatenbank mithilfe von SqlPackage bereit:

    sqlpackage /a:Publish /sf:bin/Debug/MyDatabaseProject.dacpac /tsn:localhost /tdn:MyDatabase
    

    Ersetzen Sie MyDatabaseProject.dacpac durch den Namen Ihrer .dacpac-Ausgabedatei, und aktualisieren Sie die Werte für den Zielserver (/tsn) und die Datenbank (/tdn) nach Bedarf.