Freigeben über


Lernprogramm: Erstellen und Bereitstellen eines SQL-Projekts

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Der Entwicklungszyklus eines SQL-Datenbankprojekts ermöglicht es, die Datenbankentwicklung in die Workflows fortlaufende Integration und kontinuierliche Bereitstellung (CI/CD) zu integrieren, die als bewährte Methode für die Entwicklung vertraut sind. Während die Bereitstellung eines SQL-Datenbankprojekts manuell durchgeführt werden kann, empfiehlt es sich, eine Bereitstellungspipeline zu verwenden, um den Bereitstellungsprozess so zu automatisieren, so dass fortlaufende Bereitstellungen basierend auf Ihrer fortgesetzten lokalen Entwicklung ohne zusätzlichen Aufwand ausgeführt werden.

In diesem Artikel wird das Erstellen eines neuen SQL-Projekts, das Hinzufügen von Objekten zum Projekt und das Einrichten einer kontinuierlichen Bereitstellungspipeline zum Erstellen und Bereitstellen des Projekts mit GitHub-Aktionen beschrieben. Das Tutorial ist eine Zusammenfassung des Inhalts des Artikels SQL-Projekte - Erste Schritte. Während das Lernprogramm die Bereitstellungspipeline in GitHub-Aktionen implementiert, gelten dieselben Konzepte für Azure DevOps, GitLab und andere Automatisierungsumgebungen.

In diesem Tutorial:

  1. Erstellen eines neuen SQL-Projekts
  2. Hinzufügen von Objekten zum Projekt
  3. Lokales Erstellen des Projekts
  4. Einchecken des Projekts in die Quellcodeverwaltung
  5. Hinzufügen eines Projekt-Build-Schritts zu einer kontinuierlichen Bereitstellungspipeline
  6. Hinzufügen eines .dacpac-Bereitstellungsschritts zu einer kontinuierlichen Bereitstellungspipeline

Wenn Sie die Schritte im Artikel Erste Schritte der SQL-Projekte bereits abgeschlossen haben, können Sie mit Schritt 4 fortfahren. Am Ende dieses Lernprogramms wird Ihr SQL-Projekt automatisch erstellt und Änderungen an einer Zieldatenbank bereitgestellt.

Voraussetzungen

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

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

Stellen Sie sicher, dass Sie über die folgenden Elemente verfügen, um das Pipeline-Setup in GitHub abzuschließen:

Hinweis

Um die Bereitstellung eines SQL-Datenbankprojekts abzuschließen, benötigen Sie Zugriff auf eine Azure SQL- oder SQL Server-Instanz. Sie können lokal kostenlos mit SQL Server Developer-Edition unter Windows oder in Containern entwickeln.

Schritt 1: Erstellen eines neuen Projekts

Wir beginnen mit unserem Projekt, indem wir ein neues SQL-Datenbankprojekt erstellen, bevor wir dem Projekt manuell Objekte hinzufügen. Es gibt weitere Möglichkeiten zum Erstellen eines Projekts, über die das Projekt sofort mit Objekten aus einer vorhandenen Datenbank auffüllt wird, z. B. mithilfe der Schemavergleichstools.

Wählen Sie Datei, Neu und dann Projekt aus.

Verwenden Sie im Suchfeld des Dialogfelds Neues Projekt den Ausdruck SQL Server aus. Das oberste Ergebnis sollte SQL Server-Datenbankprojekt sein.

Screenshot: Dialog „Neues Projekt“.

Klicken Sie auf Speichern, um den Vorgang mit dem nächsten Schritt fortzusetzen. Geben Sie einen Projektnamen an, der nicht mit einem Datenbanknamen übereinstimmen muss. Überprüfen und ändern Sie den Projektspeicherort nach Bedarf.

Wählen Sie Create (Erstellen), um das Projekt zu erstellen. Das leere Projekt wird geöffnet und in der Ansicht Projektmappen-Explorer für die Bearbeitung angezeigt.

Wählen Sie Datei, Neu und dann Projekt aus.

Verwenden Sie im Suchfeld des Dialogfelds Neues Projekt den Ausdruck SQL Server aus. Das oberste Ergebnis sollte SQL Server-Datenbankprojekt, SDK-Stil (Vorschau) sein.

Screenshot: Dialog „Neues Projekt“.

Klicken Sie auf Speichern, um den Vorgang mit dem nächsten Schritt fortzusetzen. Geben Sie einen Projektnamen an, der nicht mit einem Datenbanknamen übereinstimmen muss. Überprüfen und ändern Sie den Projektspeicherort nach Bedarf.

Wählen Sie Create (Erstellen), um das Projekt zu erstellen. Das leere Projekt wird geöffnet und in der Ansicht Projektmappen-Explorer für die Bearbeitung angezeigt.

Wählen Sie in der Ansicht Datenbankprojekte von VS Code oder Azure Data Studio die Schaltfläche Neues Projekt aus.

Screenshot des neuen Viewlet.

Die erste Eingabeaufforderung bestimmt, welche Projektvorlage verwendet werden soll, hauptsächlich basierend darauf, ob die Zielplattform SQL Server oder Azure SQL ist. Wenn Sie aufgefordert werden, eine bestimmte Version von SQL auszuwählen, wählen Sie die Version aus, die der Zieldatenbank entspricht. Wenn aber die Zieldatenbankversion unbekannt ist, wählen Sie die neueste Version aus, da der Wert später geändert werden kann.

Geben Sie einen Projektnamen in die angezeigte Texteingabe ein, die nicht mit einem Datenbanknamen übereinstimmen muss.

Wählen Sie im angezeigten Dialog „Ordner auswählen“ ein Verzeichnis für den Ordner, die .sqlproj-Datei und andere Inhalte des Projekts aus.

Wenn Sie gefragt werden, ob Sie ein SDK-Formatprojekt (Vorschau) erstellen möchten, wählen Sie Ja aus.

Nachdem dies abgeschlossen ist, wird das leere Projekt geöffnet und in der Ansicht Datenbankprojekte für die Bearbeitung angezeigt.

Wenn die .NET-Vorlagen für Microsoft.Build.Sql-Projekte installiert sind, können Sie über die Befehlszeile ein neues SQL-Datenbankprojekt erstellen. Die -n-Option gibt den Namen des Projekts an, und die -tp-Option gibt die Projektzielplattform an.

Verwenden Sie die Option -h, um alle verfügbaren Optionen anzuzeigen.

# install Microsoft.Build.Sql.Templates
dotnet new sqlproject -n MyDatabaseProject

Schritt 2: Hinzufügen von Objekten zum Projekt

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Hinzufügen und dann Tabelle aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt, in dem Sie den Tabellennamen angeben können. Wählen Sie Hinzufügen aus, um die Tabelle im SQL-Projekt zu erstellen.

Die Tabelle wird im Visual Studio-Tabellen-Designer mit der Vorlagentabellendefinition geöffnet, in der Sie Spalten, Indizes und andere Tabelleneigenschaften hinzufügen können. Speichern Sie die Datei, wenn Sie damit fertig sind, die anfänglichen Änderungen vorzunehmen.

Weitere Datenbankobjekte können über das Dialogfeld Neues Element hinzufügen hinzugefügt werden, z. B. Ansichten, gespeicherte Prozeduren und Funktionen. Greifen Sie auf den Dialog zu, indem Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten klicken und Hinzufügen und dann den gewünschten Objekttyp auswählen. Dateien im Projekt können über die Option Neuer Ordner unter Hinzufügen in Ordnern organisiert werden.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, wählen Sie Hinzufügen und dann Neues Element aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt. Wählen Sie Alle Vorlagen anzeigen und dann Tabelle aus. Geben Sie den Tabellennamen als Dateinamen an, und wählen Sie Hinzufügen aus, um die Tabelle im SQL-Projekt zu erstellen.

Die Tabelle wird im Visual Studio-Abfrage-Editor mit der Vorlagentabellendefinition geöffnet, in der Sie Spalten, Indizes und andere Tabelleneigenschaften hinzufügen können. Speichern Sie die Datei, wenn Sie damit fertig sind, die anfänglichen Änderungen vorzunehmen.

Weitere Datenbankobjekte können über das Dialogfeld Neues Element hinzufügen hinzugefügt werden, z. B. Ansichten, gespeicherte Prozeduren und Funktionen. Greifen Sie auf den Dialog zu, indem Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten klicken, Hinzufügen auswählen und dann den gewünschten Objekttyp nach Anzeige aller Vorlagen auswählen. Dateien im Projekt können über die Option Neuer Ordner unter Hinzufügen in Ordnern organisiert werden.

Klicken Sie in der Ansicht Datenbankprojekte von VS Code oder Azure Data Studio mit der rechten Maustaste auf den Projektknoten und wählen Sie Tabelle hinzufügen aus. Geben Sie im daraufhin angezeigten Dialogfeld den Tabellennamen an.

Die Tabelle wird im Text-Editor mit der Vorlagentabellendefinition geöffnet, in der Sie Spalten, Indizes und andere Tabelleneigenschaften hinzufügen können. Speichern Sie die Datei, wenn Sie damit fertig sind, die anfänglichen Änderungen vorzunehmen.

Weitere Datenbankobjekte können über das Kontextmenü auf dem Projektknoten hinzugefügt werden, z. B. Ansichten, gespeicherte Prozeduren und Funktionen. Greifen Sie auf das Dialogfeld zu, indem Sie mit der rechten Maustaste auf den Projektknoten in der Ansicht Datenbankprojekte von VS Code oder Azure Data Studio und dann auf den gewünschten Objekttyp klicken. Dateien im Projekt können über die Option Neuer Ordner unter Hinzufügen in Ordnern organisiert werden.

Dateien können dem Projekt hinzugefügt werden, indem sie im Projektverzeichnis oder in geschachtelten Ordnern erstellt werden. Die Dateierweiterung sollte .sql sein sowie nach Objekttyp oder Schema und Objekttyp erstellt werden.

Die Basisvorlage für eine Tabelle kann als Ausgangspunkt zum Erstellen eines neuen Tabellenobjekts im Projekt verwendet werden:

CREATE TABLE [dbo].[Table1]
(
  [Id] INT NOT NULL PRIMARY KEY
)

Schritt 3: Erstellen des Projekts

Der Build-Prozess überprüft die Beziehungen zwischen Objekten und der Syntax für die in der Projektdatei angegebene Zielplattform. Die Artefaktausgabe aus dem Build-Prozess ist eine .dacpac-Datei, die verwendet werden kann, um das Projekt in einer Zieldatenbank bereitzustellen, und die das kompilierte Modell des Datenbankschemas enthält.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projektknoten, und wählen Sie Build aus.

Das Ausgabefenster wird automatisch geöffnet, um den Build-Prozess anzuzeigen. Wenn es Fehler oder Warnungen gibt, werden diese im Ausgabefenster angezeigt. Bei einem erfolgreichen Build wird das Buildartefakt (.dacpac-Datei) erstellt, dessen Speicherort in der Build-Ausgabe enthalten ist (Standard ist bin\Debug\projectname.dacpac).

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projektknoten, und wählen Sie Build aus.

Das Ausgabefenster wird automatisch geöffnet, um den Build-Prozess anzuzeigen. Wenn es Fehler oder Warnungen gibt, werden diese im Ausgabefenster angezeigt. Bei einem erfolgreichen Build wird das Buildartefakt (.dacpac-Datei) erstellt, dessen Speicherort in der Build-Ausgabe enthalten ist (Standard ist bin\Debug\projectname.dacpac).

Klicken Sie in der Ansicht Datenbankprojekte von VS Code oder Azure Data Studio mit der rechten Maustaste auf den Projektknoten, und wählen Sie Erstellen aus.

Das Ausgabefenster wird automatisch geöffnet, um den Build-Prozess anzuzeigen. Wenn es Fehler oder Warnungen gibt, werden diese im Ausgabefenster angezeigt. Bei einem erfolgreichen Build wird das Buildartefakt (.dacpac-Datei) erstellt, dessen Speicherort in der Build-Ausgabe enthalten ist (Standard ist bin/Debug/projectname.dacpac).

SQL-Datenbankprojekte können über die Befehlszeile mithilfe des dotnet build-Befehls erstellt werden.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Die Build-Ausgabe enthält alle Fehler oder Warnungen sowie die spezifischen Dateien und Zeilennummern, in denen sie auftreten. Bei einem erfolgreichen Build wird das Buildartefakt (.dacpac-Datei) erstellt, dessen Speicherort in der Build-Ausgabe enthalten ist (Standard ist bin/Debug/projectname.dacpac).

Schritt 4: Überprüfen des Projekts in der Quellcodeverwaltung

Wir initialisieren unser Projekt als Git-Repository und übernehmen die Projektdateien zur Quellcodeverwaltung. Dieser Schritt ist erforderlich, damit das Projekt für andere freigegeben und in einer kontinuierlichen Bereitstellungspipeline verwendet werden kann.

  1. Wählen Sie im Git-Menü in Visual Studio die Option Git-Repository erstellen aus.

    Screenshot: Option „Git-Repository erstellen“ im Git-Menü in Visual Studio.

  2. Wählen Sie im Dialogfeld Git-Repository erstellen im Abschnitt In neues Remoterepository pushen die Option GitHub aus.

  3. Geben Sie im Abschnitt Neues GitHub-Repository erstellen des Dialogfelds Git-Repository erstellen den Namen des Repositorys ein, das Sie erstellen möchten. (Wenn Sie sich noch nicht bei Ihrem GitHub-Konto angemeldet haben, können Sie sich jetzt über diesen Bildschirm anmelden.)

    Screenshot: Dialogfeld „Git-Repository erstellen“ in Visual Studio mit hervorgehobener Auswahl von GitHub

    Unter Lokales Git-Repository initialisieren müssen Sie die .gitignore-Vorlagenoption verwenden, um alle absichtlich nicht nachverfolgten Dateien anzugeben, die Git ignorieren soll. Weitere Informationen zu .gitignore finden Sie unter Ignorieren von Dateien. Weitere Informationen zur Lizenzierung finden Sie unter Lizenzierung eines Repositorys.

  4. Nachdem Sie sich angemeldet und Ihre Repositoryinformationen eingegeben haben, wählen Sie die Schaltfläche Erstellen und Pushen aus, um Ihr Repository zu erstellen und Ihre App hinzuzufügen.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste den Projektknoten, und wählen Sie Veröffentlichen… aus.

Das Dialogfeld „Veröffentlichen“ wird geöffnet, in dem Sie die Zieldatenbankverbindung einrichten. Wenn Sie über keine SQL-Instanz für die Bereitstellung verfügen, wird LocalDB ((localdb)\MSSQLLocalDB) mit Visual Studio installiert und kann für Tests und Entwicklung verwendet werden.

Geben Sie einen Datenbanknamen an, und wählen Sie Veröffentlichen aus, um das Projekt in der Zieldatenbank bereitzustellen, oder Skript generieren , um ein Skript zu generieren, das vor der Ausführung überprüft werden soll.

Sie können das Repository initialisieren und lokal veröffentlichen sowie direkt auf GitHub aus VS Code oder Azure Data Studio veröffentlichen. Diese Aktion erstellt ein neues Repository auf Ihrem GitHub-Konto und verschiebt Ihre lokalen Codeänderungen in einem einzigen Schritt an das Remoterepository.

Verwenden Sie die Schaltfläche Auf GitHub veröffentlichen in der Ansicht „Quellcodeverwaltung“ in VS Code oder Azure Data Studio. Anschließend werden Sie aufgefordert, einen Namen und eine Beschreibung für das Repository anzugeben und ebenso anzugeben, ob es öffentlich oder privat sein soll.

Screenshot: Dialogfeld „Git-Repository erstellen“ in Visual Studio mit hervorgehobener Auswahl von GitHub

Alternativ können Sie ein lokales Repository initialisieren und an GitHub senden, wenn Sie ein leeres Repository auf GitHub erstellen.

Initialisieren Sie ein neues Git-Repository im Projektverzeichnis und übernehmen Sie die Projektdateien zur Quellcodeverwaltung.

git init
git add .
git commit -m "Initial commit"

Erstellen eines neuen Repositorys auf GitHub und Pushen des lokalen Repositorys zum Remoterepository.

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

Schritt 5: Hinzufügen eines Projekt-Build-Schritts zu einer kontinuierlichen Bereitstellungspipeline

SQL-Projekte werden von einer .NET-Bibliothek unterstützt, und infolgedessen werden die Projekte mit dem dotnet build-Befehl erstellt. Dieser Befehl ist selbst in den einfachsten Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) ein fester Bestandteil. Der Build-Schritt kann einer kontinuierlichen Bereitstellungspipeline hinzugefügt werden, die wir in GitHub-Aktionen erstellen.

  1. Erstellen Sie im Stamm des Repositorys ein neues Verzeichnis mit dem Namen .github/workflows. Dieses Verzeichnis enthält die Workflow-Datei, die die fortlaufende Bereitstellungspipeline definiert.

  2. Erstellen Sie im Verzeichnis .github/workflows eine neue Datei namens sqlproj-sample.yml.

  3. Fügen Sie der sqlproj-sample.yml-Datei den folgenden Inhalt hinzu, und bearbeiten Sie den Projektnamen so, dass er dem Namen und dem Pfad Ihres Projekts entspricht:

    name: sqlproj-sample
    
    on:
      push:
        branches: [ "main" ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v4
    
        - name: Setup .NET
          uses: actions/setup-dotnet@v4
          with:
            dotnet-version: 8.0.x
    
        - name: Build
          run: dotnet build MyDatabaseProject.sqlproj
    
  4. Übertragen Sie die Workflow-Datei in das Repository und schieben Sie die Änderungen in das Remoterepository.

  5. Navigieren Sie auf GitHub.com zur Hauptseite des Repositorys. Klicke unter dem Repositorynamen auf Aktionen. Wählen Sie in der linken Seitenleiste den von Ihnen gerade erstellten Workflow aus. Eine aktuelle Ausführung des Workflows sollte in der Liste der Workflow-Ausführungen angezeigt werden, wenn Sie die Workflow-Datei an das Repository übertragen haben.

Weitere Informationen zu den Grundlagen der Erstellung Ihres ersten GitHub-Aktion-Workflows finden Sie in GitHub Actions-Schnellstart.

Schritt 6: Hinzufügen eines .dacpac-Bereitstellungsschritts zu einer kontinuierlichen Bereitstellungspipeline

Das kompilierte Modell eines Datenbankschemas in einer .dacpac-Datei kann mithilfe des SqlPackage-Befehlszeilentools oder anderer Bereitstellungstools in einer Zieldatenbank bereitgestellt werden. Der Bereitstellungsprozess bestimmt die erforderlichen Schritte, um die Zieldatenbank so zu aktualisieren, dass sie dem in .dacpac definierten Schema entspricht, wodurch je nach Bedarf Objekte erstellt oder geändert werden können, und zwar basierend auf den Objekten, die bereits in der Datenbank vorhanden sind. So stellen Sie z. B. eine .dacpac-Datei basierend auf einem Verbindungszeichenfolge in einer Zieldatenbank bereit:

sqlpackage /Action:Publish /SourceFile:bin/Debug/MyDatabaseProject.dacpac /TargetConnectionString:{yourconnectionstring}

Screenshot des DacFx-Quell- und Zielvergleichsprozesses vor der Bereitstellung.

Der Bereitstellungsprozess ist idempotent, d. h. er kann mehrmals ausgeführt werden, ohne Probleme zu verursachen. Die Pipeline, die wir erstellen, erstellt und stellt jedes Mal, wenn eine Änderung in den main-Zweig unseres Repositorys eingecheckt wird, unser SQL-Projekt bereit. Anstatt den SqlPackage-Befehl direkt in unserer Bereitstellungspipeline auszuführen, können wir eine Bereitstellungsaufgabe verwenden, die den Befehl abstrahiert und zusätzliche Features wie Protokollierung, Fehlerbehandlung und Aufgabenkonfiguration bereitstellt. Die Bereitstellungsaufgabe GitHub sql-action kann einer kontinuierlichen Bereitstellungspipeline in GitHub-Aktionen hinzugefügt werden.

Hinweis

Zum Ausführen einer Bereitstellung aus einer Automatisierungsumgebung muss die Datenbank und Umgebung so konfiguriert werden, dass die Bereitstellung die Datenbank erreichen und authentifizieren kann. In Azure SQL-Datenbank oder SQL Server in einem virtuellen Computer erfordert dies möglicherweise das Einrichten einer Firewallregel, damit die Automatisierungsumgebung eine Verbindung mit der Datenbank herstellen kann und eine Verbindungszeichenfolge mit den erforderlichen Anmeldedaten bereitstellt. Anleitungen finden Sie in der GitHub-Sql-Aktion-Dokumentation.

  1. Öffnen Sie die sqlproj-sample.yml-Datei im .github/workflows-Verzeichnis.

  2. Fügen Sie nach dem Build-Schritt den folgenden Schritt zur sqlproj-sample.yml-Datei hinzu:

    - name: Deploy
      uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.SQL_CONNECTION_STRING }}
        action: 'publish'
        path: 'bin/Debug/MyDatabaseProject.dacpac'
    
  3. Bevor Sie die Änderungen übertragen, fügen Sie dem Repository ein Geheimnis hinzu, das die Verbindungszeichenfolge zur Zieldatenbank enthält. Navigieren Sie im Repository auf GitHub.com zu Einstellungen und dann zu Geheimnisse. Wählen Sie Neuer Repositoryschlüssel aus und fügen Sie einen geheimen Schlüssel namens SQL_CONNECTION_STRING mit dem Wert der Verbindungszeichenfolge zur Zieldatenbank hinzu.

    Screenshot der GitHub-Repository-Einstellungen mit hervorgehobener Schaltfläche „Neues Repository-Geheimnis“.

  4. Übernehmen Sie die Änderungen aus sqlproj-sample.yml aus dem Repository und übertragen Sie die Änderungen an das Remoterepository.

  5. Navigieren Sie zurück zur Workflowhistorie auf GitHub.com und wählen Sie die letzte Ausführung des Workflows aus. Der Bereitstellungsschritt sollte in der Liste der Schritte für die Workflow-Ausführung angezeigt werden, und der Workflow gibt einen Erfolgscode zurück.

  6. Überprüfen Sie die Bereitstellung, indem Sie eine Verbindung mit der Zieldatenbank herstellen und überprüfen, ob die Objekte im Projekt in der Datenbank vorhanden sind.

GitHub-Bereitstellungen können weiter gesichert werden, indem eine Umgebungsbeziehung in einem Workflow eingerichtet und eine Genehmigung erforderlich ist, bevor eine Bereitstellung ausgeführt wird. Weitere Informationen zum Umgebungsschutz und zum Schutz von Geheimnissen finden Sie in der Dokumentation zu GitHub Actions.

Hilfe erhalten