Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:✅ Warehouse i Microsoft Fabric
Important
Den här funktionen är i förhandsversion.
Med skript före distribution och efter distribution kan du köra anpassade Transact-SQL kommandon som en del av distributionen av ett lager i Fabric. Använd skript före distributionen och efter distributionen för att rensa data, seed-referensdata eller tillämpa SQL-säkerhet som inte uttrycks i schemat för lagret.
I en Fabric Data Warehouse är ett fördistributions- eller efterdistributionsskript en delad SQL-fråga. Du kan skapa dessa skript i ett SQL-databasprojekt och ange dem från Fabric-portalen. Beteckningen lagras som metadata på lagernivå och har allokerats till källkontrollen som en del av lagrets fil, så den skickas .sqlproj via Git- och distributionspipelines utan manuell replikering.
Den här artikeln förklarar vad skript före distribution och efter distribution är, hur du konfigurerar dem i Fabric-portalen, hur de fungerar med källkontroll- och distributionspipelines och hur du skapar dem i Visual Studio Code och SQL Server Management Studio (SSMS).
Important
Granska alltid distributionsskript och inställningar innan du publicerar. Testa i utvecklings- och testmiljöer först för att förhindra oavsiktlig dataförlust.
Vad är skript före distribution och efter distribution?
När du kopplar en arbetsyta till versionskontroll visas varje lager som ett SQL-databasprojekt: ett källkodskontrollerat skript av de SQL-objekt som utgör warehouse-schemat (tabeller, vyer, lagrade procedurer och funktioner). Varje objekt lagras som en .sql fil som innehåller dess syntax för datadefinitionsspråk (DDL), till exempel CREATE TABLE. Objekten beskriver schemats önskade tillstånd och distributionsprocessen jämför det önskade tillståndet med mållagret och genererar ett differentiellt T-SQL-skript som skapar, ändrar eller släpper objekt så att målet matchar projektet.
Skripten före distributionen och efter distributionen utökar den här processen med Transact-SQL som körs runt schemadistributionen:
- Ett fördistributionsskript körs innan schemadistributionsplanen tillämpas.
- Ett skript efter distributionen körs när schemadistributionsplanen har slutförts.
Ett skript före eller efter distribution är en av de delade frågor som lagras i mappen Frågor i lagret. Ett lager stöder högst ett fördistributionsskript och ett skript efter distributionen. Beteckningen lagras som metadata på lagernivå i stället för att duplicera skriptinnehållet, så det lägger till försumbara lagringskostnader.
Eftersom varje angivet skript körs varje gång datalagret distribueras ska du skapa Transact-SQL-koden så att den blir idempotent (säker att köra upprepade gånger).
Tip
När ett skript är idempotent kan du köra det flera gånger utan problem. Du kan distribuera till flera databaser utan att behöva förutbestämma deras status.
Vanliga användningsfall
- Referens- och statisk datahantering: Infoga, uppdatera eller ta bort rader från uppslags-, konfigurations- eller referenstabeller när schemat har distribuerats.
- Datarensning: Ta bort inaktuella eller tillfälliga data före eller efter schemaändringar tillämpas.
- Miljökonfiguration: Tillämpa inställningar eller initiera tillstånd som skiljer sig mellan utvecklings-, test- och produktionsmiljöer.
- Pipelineinitialisering baserad på metadata: Förbered det datalagertillstånd som krävs för efterföljande pipelinesteg.
-
SQL-säkerhet: Information om lagertabeller och SQL-säkerhetsfunktioner som roller, användare och
GRANT/DENYbehörigheter ingår inte i SQL-databasprojektet. Använd ett skript efter distributionen för att återskapa dessa objekt efter distributionen, inklusive skillnader mellan test- och produktionsmiljöer. Exempel finns i Exempelskript efter distribution för SQL-säkerhet.
SQL-projektfilstruktur och syntax
Ett lager-SQL-projekt refererar till skripten före och efter distribution i projektfilen (.sqlproj) genom att använda PreDeploy och PostDeploy artikeltyperna. Varje start pekar på en enda delad frågefil i projektet.
I följande exempel anges pre-deployment.sql skriptet före distributionen och post-deployment.sql som skript efter distributionen:
<ItemGroup>
<PreDeploy Include="pre-deployment.sql" />
<PostDeploy Include="post-deployment.sql" />
</ItemGroup>
Important
Fabric Data Warehouse stöder endast en enda fil för skriptet före distributionen och en enda fil för skriptet efter distributionen. Det går inte att skapa ett skript från flera filer , till exempel genom att använda SQLCMD-kommandot :r för att referera till andra filer. Om .sqlproj innehåller flera poster före eller efter distribution misslyckas Git-uppdateringen.
Exempelskript efter distribution för SQL-säkerhet
Eftersom SQL-säkerhetsfunktioner inte samlas in i SQL-databasprojektet är ett skript efter distribution ett vanligt sätt att återskapa dem när ett lager har distribuerats. Skriv skriptet så att det kan köras på varje distribution.
Följande exempel skapar en anpassad databasroll med namnet DataReaders och beviljar SELECT behörigheter till dbo schemat.
-- post-deployment.sql
-- Recreate a role and grant permissions after deployment.
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'DataReaders')
BEGIN
CREATE ROLE DataReaders;
END;
GO
GRANT SELECT ON SCHEMA::dbo TO DataReaders;
GO
Anmärkning
Fabric Data Warehouse stöder inte alla Transact-SQL-instruktioner som är tillgängliga i SQL Server. Kontrollera att instruktionerna i skripten stöds i Fabric Data Warehouse.
Konfigurera skript före distribution och efter distribution i Fabric-portalen
I Fabric-portalen anger du en befintlig delad fråga som skriptet före distributionen eller efter distributionen. Du kan göra detta från Object Explorer eller från lagerartikelns inställningar.
Du kan inte ange en delad fråga som både skriptet före distributionen och efter distributionen samtidigt.
Från Object Explorer
- Expandera mappen Frågor i Object Explorer i lagerredigeraren.
- Högerklicka på den delade fråga som du vill använda.
- Om det behövs, flytta en fråga från Mina frågor till en delad fråga.
- Välj Ange distributionsskript. Den här åtgärden tar dig till panelen Objektinställningar.
- I fälten Pre-deployment script och Post-deployment script , välj Välj skript.
- Välj alternativet Sätt en fråga som ett skript före eller efter distribution och välj sedan en delad fråga för varje. Varje rullgardinsmeny listar alla delade frågor i lagret.
Från föremålsinställningar
- Öppna lagrets inställningar.
- Gå till CI/CD-sektionen .
- I fälten Pre-deployment script och Post-deployment script , välj Välj skript.
- Välj alternativet Sätt en fråga som ett skript före eller efter distribution och välj sedan en delad fråga för varje. Varje rullgardinsmeny listar alla delade frågor i lagret.
De val du gör lagras som metadata på lagernivå och hålls synkroniserade mellan Object Explorer och objektinställningar.
Hur skript före och efter distribution fungerar vid distribution
Med Git-integrering
När du ansluter en arbetsyta till ett Git-repo serialiseras markeringarna före och efter distribution i datalagrets .sqlproj-fil vid incheckning. När du uppdaterar lagret från Git tillämpar Fabric ändringarna på det aktiva lagret och kör skripten i ordning:
- Skriptet före distributionen körs innan schemaändringarna tillämpas.
- Distributionsplanen för schemat tillämpas.
- Skriptet efter distribution körs efter att schemaändringarna har slutförts.
Beteckningar tur och retur via Git: Att konfigurera ett skript i portalen och checka in det, eller redigera det i .sqlproj och uppdatera arbetsytan, ger ett konsekvent resultat. Upprepade incheckningar och uppdateringar duplicerar inte eller förlorar inte konfigurationen. Eftersom endast ett fördistributionsskript och ett skript efter distribution tillåts ersätter en konfiguration som skapats i Git alla befintliga beteckningar i lagret vid uppdatering.
Anmärkning
Skript före och efter driftsättning kräver den senaste upplevelsen för källkodshantering för fullt stöd för Git-arbetsflödet. I arbetsytor som inte har uppgraderats synkroniseras inte metadata för distributionsskript med versionskontroll, och distributionsskript deltar inte i Git-baserade arbetsflöden.
Denna begränsning gäller endast för Git-arbetsflöden och är inte ett krav för deployment pipelines (ALM).
Med distributionspipelines
Distributionspipelines använder beteckningarna pre-deployment och post-deployment när de marknadsför ett lager i utvecklings-,test- och produktionsfaserna . De avsedda skripten körs deterministiskt i varje målmiljö, så du kan använda dem för att tillämpa miljökonfigurationen eller tillämpa SQL-säkerhet på nytt när innehållet flyttas mellan faserna.
I arbetsytor utan källkontroll
Definitionen av lagerobjekt innehåller beteckningarna för fördistribution och efter distribution även när arbetsytan inte är ansluten till källkontrollen. När du exporterar lagret ingår konfigurationen och om du importerar den återställs konfigurationen intakt.
Skapa skript före distribution och efter distribution i ett SQL-databasprojekt
I stället för Fabric portalen kan du skapa skript före distribution och efter distribution direkt i lagrets SQL-databasprojekt med hjälp av SQL Database Projects-tillägget i Visual Studio Code eller den integrerade SQL-projektupplevelsen i SQL Server Management Studio. Konfigurationen visas i Fabric portalen – i både Object Explorer och objektinställningar – efter nästa Git-uppdatering.
Visual Studio Code
- Installera SQL Database Projects-tillägget i Visual Studio Code.
- Öppna SQL Database-projektet för ditt lager. Om din arbetsyta är ansluten till Git klonar du lagringsplatsen och öppnar sedan lagerprojektmappen.
- I vyn Databasprojekt högerklickar du på projektnoden och väljer Lägg till skript före distribution eller Lägg till skript efter distribution.
- Ange ett skriptnamn utan filnamnstillägget. Skriptfilen läggs till i projektet och öppnas i redigeraren.
- Lägg till Transact-SQL i skriptet och spara filen. Se till att filen sparas i
.sharedqueriesmappen för nästa Git-uppdatering. - Checka in och skicka ändringarna till git-lagringsplatsen och uppdatera sedan arbetsytan från källkontrollen för att tillämpa konfigurationen.
SQL Server Management Studio
- Använd SQL Server Management Studio 22 eller senare, vilket inkluderar SQL Database Projects-upplevelsen.
- Öppna SQL Database-projektet för ditt lager.
- I Prieskumník riešení högerklickar du på projektnoden och väljer Lägg till>skript. Välj skript före distribution eller skript efter distribution.
- Skriptfilen läggs till i projektet och öppnas i frågeredigeraren.
- Lägg till Transact-SQL i skriptet och spara filen. Se till att du sparar filen i
.sharedqueriesmappen för nästa Git-uppdatering. - Checka in och skicka ändringarna till git-lagringsplatsen och uppdatera sedan arbetsytan från källkontrollen för att tillämpa konfigurationen.
Redigera projektfilen direkt
I alla verktyg kan du ange ett skript genom att redigera filen .sqlproj och lägga till ett enda PreDeploy- eller PostDeploy-objekt i en ItemGroup:
<ItemGroup>
<PreDeploy Include="./sharedqueries/pre-deployment.sql" />
<PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>
Migrera från befintliga SQL-projekt
Om du migrerar en .sqlproj från SQL Server Data Tools (SSDT) eller Visual Studio som redan innehåller <PreDeploy> och <PostDeploy> poster, känner importprocessen igen och mappar dessa poster till Fabric-konfigurationen före och efter distribution. Eftersom Fabric endast stöder en fördistribution och ett skript efter distributionen kontrollerar du att projektet innehåller högst en post av varje typ innan du importerar.
Överväganden och begränsningar
- Ett lager stöder endast ett enda fördistributionsskript och ett enda skript efter distributionen. Det stöder inte flera filer per skript.
- Du kan inte ange samma delade fråga som både skript före distribution och skript efter distribution.
- Om du tar bort en delad fråga som har angetts som ett fördistributions- eller efterdistributionsskript rensas motsvarande beteckning automatiskt.
- Om du ändrar en delad fråga som har angetts som ett fördistributions- eller efterdistributionsskript till en användarfråga rensas motsvarande beteckning automatiskt.
- För- och efterdistributionsskript körs på varje distribution av lager. De Transact-SQL skripten ska vara idempotent, så att upprepade körningar inte misslyckas eller skapar duplicerade objekt.
- Fördistributions- och efterdistributionsskript verifieras inte mot databasmodellen vid bygget. Fel i skripten upptäcks vid driftsättning, och ett skriptfel stoppar driftsättningen.
- Du kan bara använda Transact-SQL som stöds i Fabric Data Warehouse.
- Identiteten som kör distributionen måste ha de behörigheter som krävs för att köra skriptinnehållet.