Dela via


Självstudie: Skapa och distribuera ett SQL-projekt

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Utvecklingscykeln för ett SQL-databasprojekt gör det möjligt att integrera databasutveckling i ett CI/CD-arbetsflöde (kontinuerlig integrering och kontinuerlig distribution) som är bekant som en metod för utveckling. Distributionen av ett SQL-databasprojekt kan göras manuellt, men vi rekommenderar att du använder en distributionspipeline för att automatisera distributionsprocessen så att pågående distributioner körs baserat på din fortsatta lokala utveckling utan ytterligare arbete.

Den här artikeln beskriver hur du skapar ett nytt SQL-projekt, lägger till objekt i projektet och konfigurerar en pipeline för kontinuerlig distribution för att skapa och distribuera projektet med GitHub-åtgärder. Självstudien är mer omfattande än innehållet i artikeln Komma igång med SQL-databasprojekt. I självstudien implementeras distributionspipelinen i GitHub-åtgärder, men samma begrepp gäller för Azure DevOps, GitLab och andra automationsmiljöer.

I den här handledningen:

  1. Skapa ett nytt SQL-projekt
  2. Lägga till objekt i projektet
  3. Skapa projektet lokalt
  4. Kontrollera projektet i källkontrollen
  5. Lägg till ett byggsteg för projekt i en kontinuerlig distributionspipeline
  6. Lägg till ett .dacpac implementeringssteg i en pipeline för kontinuerlig implementering

Om du redan har slutfört stegen för att komma igång med SQL-databasprojektkan du gå vidare till steg 4. I slutet av den här självstudien kommer DITT SQL-projekt automatiskt att skapa och distribuera ändringar till en måldatabas.

Förutsättningar

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

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

Kontrollera att du har följande objekt för att slutföra pipelinekonfigurationen i GitHub:

Not

För att slutföra distributionen av ett SQL-databasprojekt behöver du åtkomst till en Azure SQL- eller SQL Server-instans. Du kan utveckla lokalt kostnadsfritt med SQL Server Developer Edition i Windows eller i containrar.

Steg 1: Skapa ett nytt projekt

Vi startar vårt projekt genom att skapa ett nytt SQL-databasprojekt innan vi lägger till objekt i det manuellt. Det finns andra sätt att skapa ett projekt som gör det möjligt att omedelbart fylla projektet med objekt från en befintlig databas, till exempel att använda schemajämförelseverktyg.

Välj File, Newoch sedan Project.

I dialogrutan Nytt projekt använder du termen SQL Server- i sökrutan. Det översta resultatet bör vara SQL Server Database Project.

Skärmbild av dialogrutan Nytt projekt.

Välj Nästa för att gå vidare till nästa steg. Ange ett projektnamn som inte behöver matcha ett databasnamn. Verifiera och ändra projektplatsen efter behov.

Välj Skapa för att skapa projektet. Det tomma projektet öppnas och visas i Solution Explorer för redigering.

Välj File, Newoch sedan Project.

I dialogrutan Nytt projekt använder du termen SQL Server- i sökrutan. Det översta resultatet ska vara SQL Server Database Project, SDK-format (förhandsversion).

Skärmbild av dialogrutan Nytt projekt.

Välj Nästa för att gå vidare till nästa steg. Ange ett projektnamn som inte behöver matcha ett databasnamn. Verifiera och ändra projektplatsen efter behov.

Välj Skapa för att skapa projektet. Det tomma projektet öppnas och visas i Solution Explorer för redigering.

I Database Projects vy över VS Code eller Azure Data Studio väljer du knappen Nytt projekt.

Skärmbild av ny vy.

Den första prompten avgör vilken projektmall som ska användas, främst baserat på om målplattformen är SQL Server eller Azure SQL. Om du uppmanas att välja en specifik version av SQL väljer du den version som matchar måldatabasen, men om måldatabasversionen är okänd väljer du den senaste versionen eftersom värdet kan ändras senare.

Ange ett projektnamn i textinmatningen som visas, som inte behöver matcha ett databasnamn.

I dialogrutan "Välj en mapp" som visas väljer du en katalog för projektets mapp, .sqlproj fil och annat innehåll som ska finnas i.

När du tillfrågas om du vill skapa ett SDK-projekt väljer du Ja.

När det är klart öppnas det tomma projektet och visas i vyn Database Projects för redigering.

Med .NET-mallarna för Microsoft.Build.Sql-projekt installerade kan du skapa ett nytt SQL-databasprojekt från kommandoraden. Alternativet -n anger namnet på projektet och alternativet -tp anger projektmålplattformen.

Använd alternativet -h för att se alla tillgängliga alternativ.

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

Steg 2: Lägga till objekt i projektet

I Solution Explorerhögerklickar du på projektnoden och väljer Lägg tilloch sedan Tabell. Dialogrutan Lägg till nytt objekt visas, där du kan ange tabellnamnet. Välj Lägg till för att skapa tabellen i SQL-projektet.

Tabellen öppnas i Visual Studio-tabelldesignern med malltabelldefinitionen, där du kan lägga till kolumner, index och andra tabellegenskaper. Spara filen när du är klar med de första redigeringarna.

Fler databasobjekt kan läggas till via dialogrutan Lägg till nytt objekt, till exempel vyer, lagrade procedurer och funktioner. Öppna dialogrutan genom att högerklicka på projektnoden i Solution Explorer och välja Lägg tilloch sedan önskad objekttyp. Filer i projektet kan ordnas i mappar via alternativet Ny mapp under Lägg till.

I Solution Explorerhögerklickar du på projektnoden och väljer Lägg tilloch sedan Nytt objekt. Dialogrutan Lägg till nytt objekt visas, välj Visa alla mallar och sedan tabell. Ange tabellnamnet som filnamn och välj Lägg till för att skapa tabellen i SQL-projektet.

Tabellen öppnas i Visual Studio-frågeredigeraren med malltabelldefinitionen, där du kan lägga till kolumner, index och andra tabellegenskaper. Spara filen när du är klar med de första redigeringarna.

Fler databasobjekt kan läggas till via dialogrutan Lägg till nytt objekt, till exempel vyer, lagrade procedurer och funktioner. Öppna dialogrutan genom att högerklicka på projektnoden i Solution Explorer och välja Lägg tilloch sedan önskad objekttyp efter Visa alla mallar. Filer i projektet kan ordnas i mappar via alternativet Ny mapp under Lägg till.

Högerklicka på projektnoden i Database Projects vy över VS Code eller Azure Data Studio och välj Lägg till tabell. I dialogrutan som visas anger du tabellnamnet.

Tabellen öppnas i textredigeraren med malltabelldefinitionen, där du kan lägga till kolumner, index och andra tabellegenskaper. Spara filen när du är klar med de första redigeringarna.

Fler databasobjekt kan läggas till via snabbmenyn på projektnoden, till exempel vyer, lagrade procedurer och funktioner. Öppna dialogrutan genom att högerklicka på projektnoden i Database Projects vy över VS Code eller Azure Data Studio och sedan önskad objekttyp. Filer i projektet kan ordnas i mappar via alternativet Ny mapp under Lägg till.

Filer kan läggas till i projektet genom att skapa dem i projektkatalogen eller kapslade mappar. Filtillägget ska vara .sql och organisation efter objekttyp eller schema och objekttyp rekommenderas.

Basmallen för en tabell kan användas som utgångspunkt för att skapa ett nytt tabellobjekt i projektet:

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

Steg 3: Skapa projektet

Byggprocessen validerar relationerna mellan objekt och syntaxen mot målplattformen som anges i projektfilen. Artefaktutdata från byggprocessen är en .dacpac fil som kan användas för att distribuera projektet till en måldatabas och som innehåller den kompilerade modellen för databasschemat.

Högerklicka på projektnoden i Solution Exploreroch välj Build.

Utdatafönstret öppnas automatiskt för att visa byggprocessen. Om det finns fel eller varningar visas de i utdatafönstret. I en lyckad version skapas byggartefakten (.dacpac-filen) dess plats ingår i byggutdata (standardvärdet är bin\Debug\projectname.dacpac).

Högerklicka på projektnoden i Solution Exploreroch välj Build.

Utdatafönstret öppnas automatiskt för att visa byggprocessen. Om det finns fel eller varningar visas de i utdatafönstret. I en lyckad version skapas byggartefakten (.dacpac-filen) dess plats ingår i byggutdata (standardvärdet är bin\Debug\projectname.dacpac).

I Database Projects vy över VS Code eller Azure Data Studio högerklickar du på projektnoden och väljer Skapa.

Utdatafönstret öppnas automatiskt för att visa byggprocessen. Om det finns fel eller varningar visas de i utdatafönstret. I en lyckad version skapas byggartefakten (.dacpac-filen) dess plats ingår i byggutdata (standardvärdet är bin/Debug/projectname.dacpac).

SQL-databasprojekt kan skapas från kommandoraden med hjälp av kommandot dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Byggutdata innehåller eventuella fel eller varningar och de specifika filer och radnummer där de inträffar. I en lyckad version skapas byggartefakten (.dacpac-filen) dess plats ingår i byggutdata (standardvärdet är bin/Debug/projectname.dacpac).

Steg 4: Kontrollera projektet i källkontrollen

Vi initialiserar vårt projekt som ett Git-repo och committar projektfilerna till versionshantering. Det här steget är nödvändigt för att projektet ska kunna delas med andra och användas i en pipeline för kontinuerlig distribution.

  1. På menyn Git i Visual Studio väljer du Skapa Git-lagringsplats.

    Skärmbild av alternativet Skapa Git-lagringsplats från Git-menyn i Visual Studio.

  2. I dialogrutan Skapa en Git-lagringsplats, under avsnittet Push to a new remote, väljer du GitHub.

  3. I avsnittet Skapa en ny GitHub-lagringsplats i dialogrutan Skapa en Git-lagringsplats anger du namnet på den lagringsplats som du vill skapa. (Om du ännu inte har loggat in på ditt GitHub-konto kan du också göra det från den här skärmen.)

    Skärmbild av dialogrutan Skapa Git-lagringsplats i Visual Studio med GitHub-markeringen markerad.

    Under Initiera en lokal Git-lagringsplatsbör du använda mallen .gitignore för att ange eventuella avsiktligt ospårade filer som du vill att Git ska ignorera. Mer information om .gitignore finns i Ignorera filer. Mer information om licensiering finns i Licensing a repository.

  4. När du har loggat in och angett din lagringsplatsinformation väljer du knappen Skapa och push- för att skapa lagringsplatsen och lägga till din app.

Högerklicka på projektnoden i Solution Exploreroch välj Publicera....

Publiceringsdialogrutan öppnas där du upprättar måldatabasanslutning. Om du inte har någon befintlig SQL-instans för distribution installeras LocalDB ((localdb)\MSSQLLocalDB) med Visual Studio och kan användas för testning och utveckling.

Ange ett databasnamn och välj Publicera för att distribuera projektet till måldatabasen eller Generera skript för att generera ett skript som ska granskas innan det körs.

Du kan initiera och lokal lagringsplats och publicera den direkt till GitHub från VS Code eller Azure Data Studio. Den här åtgärden skapar en ny lagringsplats på ditt GitHub-konto och skickar dina lokala kodändringar till fjärrlagringsplatsen i ett enda steg.

Använd knappen Publicera på GitHub i källkontrollvyn i VS Code eller Azure Data Studio. Du uppmanas sedan att ange ett namn och en beskrivning för lagringsplatsen och om du vill göra den offentlig eller privat.

Skärmbild av dialogrutan Skapa Git-lagringsplats i Visual Studio med GitHub-markeringen markerad.

Du kan också initiera en lokal lagringsplats och skicka den till GitHub genom att följa stegen när du skapar en tom lagringsplats på GitHub.

Initiera ett nytt Git-repository i projektkatalogen och committa projektfilerna till versionskontroll.

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

Skapa en ny lagringsplats på GitHub och skicka den lokala lagringsplatsen till fjärrlagringsplatsen.

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

Steg 5: Lägga till ett projektversionssteg i en pipeline för kontinuerlig distribution

SQL-projekt backas upp av ett .NET-bibliotek och därför skapas projekten med kommandot dotnet build. Det här kommandot är en grundläggande del av även de mest enkla CI/CD-pipelines (kontinuerlig integrering och kontinuerlig leverans). Byggsteget kan läggas till i en pipeline för kontinuerlig distribution som vi skapar i GitHub-åtgärder.

  1. I roten på lagringsplatsen skapar du en ny katalog med namnet .github/workflows. Den här katalogen innehåller arbetsflödesfilen som definierar pipelinen för kontinuerlig distribution.

  2. I katalogen .github/workflows skapar du en ny fil med namnet sqlproj-sample.yml.

  3. Lägg till följande innehåll i sqlproj-sample.yml-filen och redigera projektnamnet så att det matchar projektets namn och sökväg:

    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. Kommitta arbetsflödesfilen till förrådet och skicka ändringarna till det fjärrlagrade förrådet.

  5. På GitHub.com navigerar du till huvudsidan för lagringsplatsen. Under namnet på lagringsplatsen väljer du Åtgärder. I det vänstra sidofältet väljer du det arbetsflöde som du nyss skapade. En nyligen genomförd körning av arbetsflödet bör visas i listan över arbetsflödeskörningar från när du push-överförde arbetsflödesfilen till lagringsplatsen.

Mer information om grunderna för att skapa ditt första GitHub Actions-arbetsflöde finns i snabbstarten GitHub Actions.

Steg 6: Lägg till ett .dacpac distributionssteg i en pipeline för kontinuerlig distribution

Den kompilerade modellen för ett databasschema i en .dacpac fil kan distribueras till en måldatabas med hjälp av kommandoradsverktyget SqlPackage eller andra distributionsverktyg. Distributionsprocessen bestämmer vilka steg som krävs för att uppdatera måldatabasen så att den matchar schemat som definierats i .dacpacoch skapar eller ändrar objekt efter behov baserat på de objekt som redan finns i databasen. Om du till exempel vill distribuera en .dacpac fil till en måldatabas baserat på en anslutningssträng:

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

Skärmbild av DacFx-käll- och måljämförelseprocessen före distributionen.

Distributionsprocessen är idempotent, vilket innebär att den kan köras flera gånger utan att orsaka problem. Pipelinen vi skapar kommer att bygga och implementera vårt SQL-projekt varje gång en ändring checkas in på main-grenen av vårt arkiv. I stället för att köra kommandot SqlPackage direkt i distributionspipelinen kan vi använda en distributionsuppgift som abstraherar kommandot och tillhandahåller ytterligare funktioner som loggning, felhantering och uppgiftskonfiguration. Distributionsuppgiften GitHub sql-action kan läggas till i en pipeline för kontinuerlig distribution i GitHub-åtgärder.

Note

Om du kör en distribution från en automationsmiljö måste du konfigurera databasen och miljön så att distributionen kan nå databasen och autentiseras. I Azure SQL Database eller SQL Server på en virtuell dator kan detta kräva att du konfigurerar en brandväggsregel så att automationsmiljön kan ansluta till databasen samt tillhandahålla en anslutningssträng med nödvändiga autentiseringsuppgifter. Vägledning finns i dokumentationen GitHub sql-action.

  1. Öppna filen sqlproj-sample.yml i katalogen .github/workflows.

  2. Lägg till följande steg i filen sqlproj-sample.yml efter byggsteget:

    - name: Deploy
      uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.SQL_CONNECTION_STRING }}
        action: 'publish'
        path: 'bin/Debug/MyDatabaseProject.dacpac'
    
  3. Innan du genomför ändringarna lägger du till en hemlighet på lagringsplatsen som innehåller anslutningssträngen till måldatabasen. Navigera till Inställningarpå lagringsplatsen på GitHub.com och sedan Hemligheter. Välj Ny lagringsplatshemlighet och lägg till en hemlighet med namnet SQL_CONNECTION_STRING med värdet för anslutningssträngen i måldatabasen.

    Skärmbild av inställningarna för GitHub-lagringsplatsen med knappen Ny lagringsplatshemlighet markerad.

  4. Kommitta ändringarna från sqlproj-sample.yml till lagringsplats och skicka ändringarna till fjärrlagringsplats.

  5. Gå tillbaka till arbetsflödeshistoriken på GitHub.com och välj den senaste körningen av arbetsflödet. Distributionssteget bör visas i listan med steg för arbetsflödeskörningen och arbetsflödet returnerar en lyckad kod.

  6. Kontrollera distributionen genom att ansluta till måldatabasen och kontrollera att objekten i projektet finns i databasen.

GitHub-distributioner kan skyddas ytterligare genom att upprätta en miljörelation i ett arbetsflöde och kräva godkännande innan en distribution körs. Mer information om miljöskydd och skydd av hemligheter finns i dokumentationen GitHub Actions.

Få hjälp