Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Warehouse i Microsoft Fabric
Viktig!
Denne funksjonen er i forhåndsversjon.
Pre-deployment og post-deployment skript lar deg kjøre egendefinerte Transact-SQL-kommandoer som en del av distribusjonen av et lager i Fabric. Bruk skript før og etter distribusjon for å rydde opp data, seed-referansedata eller anvende SQL-sikkerhet som ikke er uttrykt i skjemaet til lageret.
I en Fabric datalager er et pre-deployment eller post-deploying-skript en delt SQL-spørring. Du kan lage disse skriptene i et SQL-databaseprosjekt og angi dem fra Fabric-portalen. Betegnelsen lagres som metadata på lagernivå og er forpliktet til kildekontroll som en del av lagerets .sqlproj fil, slik at den kan gå rundtur gjennom Git- og distribusjonspipelines uten manuell gjenapplikasjon.
Denne artikkelen forklarer hva pre-deployment og post-deployment-skript er, hvordan du konfigurerer dem i Fabric-portalen, hvordan de oppfører seg med kildekontroll- og distribusjonspipelines, og hvordan du kan lage dem i Visual Studio Code og SQL Server Management Studio (SSMS).
Viktig!
Gå alltid gjennom distribusjonsskript og innstillinger før du publiserer. Test først i utviklings- og testmiljøer for å forhindre utilsiktet datatap.
Hva er skript før og etter utrulling?
Når du kobler et arbeidsområde til kildekontroll, fremstår hvert lager som et SQL-databaseprosjekt: et kildekontrollert skript av SQL-objektene som utgjør warehouse-skjemaet (tabeller, visninger, lagrede prosedyrer og funksjoner). Hvert objekt lagres som en .sql fil som inneholder dens datadefinisjonsspråk (DDL)-syntaks, for eksempel CREATE TABLE. Objektene beskriver ønsket tilstand for skjemaet, og distribusjonsprosessen sammenligner denne ønskede tilstanden med mållageret og genererer et differensiert T-SQL-skript som oppretter, endrer eller fjerner objekter slik at målet matcher prosjektet.
Pre-deployment og post-deployment-skript utvider denne prosessen med Transact-SQL som går rundt skjema-distribusjonen:
- Et pre-deployment-skript kjøres før skjema-distribusjonsplanen brukes.
- Et post-distribusjonsskript kjøres etter at skjema-distribusjonsplanen er fullført.
Et pre-deployment eller post-deploying-skript er en av de delte spørringene som lagres under Queries-mappen i lageret. Et lager støtter maksimalt ett forhåndsdistribusjonsskript og ett post-distribusjonsskript. Betegnelsen lagres som metadata på lagernivå i stedet for å duplisere skriptinnholdet, så det gir ubetydelig lagringsoverhead.
Siden hvert utpekte skript kjører hver gang lageret distribueres, opprett Transact-SQL som er idempotent (trygt å kjøre gjentatte ganger).
Tips
Når et skript er idempotent, kan du kjøre det flere ganger uten problemer. Du kan distribuere til flere databaser uten å måtte forhåndsbestemme statusen deres.
Vanlige brukstilfeller
- Referanse- og statisk datahåndtering: Sett inn, oppdater eller slett rader fra oppslags-, konfigurasjons- eller referansetabeller etter at skjemaet er distribuert.
- Dataopprydding: Fjern utdaterte eller midlertidige data før eller etter at skjemaendringer er implementert.
- Miljøoppsett: Bruk innstillinger eller initialiser tilstand som varierer mellom utviklings-, test- og produksjonsmiljøer.
- Metadata-drevet pipeline-initialisering: Forbered lagerstatusen som kreves av nedstrøms pipeline-steg.
-
SQL-sikkerhet: Warehouse-tabelldata og SQL-sikkerhetsfunksjoner som roller, brukere og
GRANT/DENYtillatelser er ikke inkludert i SQL-databaseprosjektet. Bruk et skript etter utrulling for å gjenskape disse objektene etter utrulling, inkludert forskjeller mellom test- og produksjonsmiljøer. For eksempler, se Eksempel på post-distribusjonsskript for SQL-sikkerhet.
SQL-prosjektfilstruktur og syntaks
Et warehouse-SQL-prosjekt refererer til skriptene før distribusjon og etter distribusjon i prosjektfilen (.sqlproj) ved å bruke PreDeploy og PostDeploy varetypene. Hver oppføring peker til en enkelt delt spørringsfil i prosjektet.
Følgende eksempel betegner pre-deployment.sql som pre-deployment-skriptet og post-deployment.sql som post-deployment-skriptet:
<ItemGroup>
<PreDeploy Include="pre-deployment.sql" />
<PostDeploy Include="post-deployment.sql" />
</ItemGroup>
Viktig!
Fabric datalager støtter kun én fil for pre-deploying-skriptet og én fil for post-deployment-skriptet. Å komponere et skript fra flere filer – for eksempel ved å bruke SQLCMD-kommandoen :r for å referere til andre filer – støttes ikke. Hvis den .sqlproj inneholder flere oppføringer før eller etter utrulling, feiler Git-oppdateringen.
Eksempel på post-distribusjonsskript for SQL-sikkerhet
Fordi SQL-sikkerhetsfunksjoner ikke er fanget opp i SQL-databaseprosjektet, er et post-deployment-skript en vanlig måte å gjenskape dem på etter at et lager er distribuert. Skriv skriptet slik at det kan kjøre på hver utrulling.
Følgende eksempel oppretter en egendefinert databaserolle med navnet DataReaders og gir SELECT tillatelser til skjemaet dbo .
-- 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
Notat
Fabric datalager støtter ikke alle Transact-SQL utsagn som finnes i SQL Server. Sørg for at utsagnene i skriptene dine støttes i Fabric datalager.
Konfigurer skript før og etter distribusjon i Fabric-portalen
I Fabric-portalen, angi en eksisterende delt spørring som pre-deployment eller post-deployment script. Du kan gjøre dette fra Object Explorer eller fra varehusets innstillinger.
Du kan ikke utpeke en delt spørring som både pre-deployment og post-deployment-skript samtidig.
Fra Object Explorer
- I lagereditoren, utvid mappen Queries i Object Explorer.
- Høyreklikk på den delte spørringen du ønsker å bruke.
- Om nødvendig, flytt en spørring fra Mine spørringer til en delt spørring.
- Velg Set deploying-skript. Denne handlingen tar deg til innstillingspanelet for gjenstander.
- I feltene Pre-deployment script og Post-deployment script , velg Velg script.
- Velg alternativet Sett en spørring som et før-/post-distribusjonsskript , og velg deretter en delt spørring for hver. Hver nedtrekksmeny viser alle delte spørringer i lageret.
Fra gjenstandsinnstillinger
- Åpne lagerets innstillinger.
- Gå til CI/CD-seksjonen .
- I feltene Pre-deployment script og Post-deployment script , velg Velg script.
- Velg alternativet Sett en spørring som et før-/post-distribusjonsskript , og velg deretter en delt spørring for hver. Hver nedtrekksmeny viser alle delte spørringer i lageret.
Valgene du gjør lagres som metadata på lagernivå og holdes synkronisert mellom Object Explorer og Item Settings.
Hvordan skript før og etter distribusjon oppfører seg med distribusjon
Med Git-integrasjon
Når du kobler et arbeidsområde til et Git-repo, blir pre-deployment og post-deployment-betegnelsene serialisert inn i lagerets .sqlproj fil på commit. Når du oppdaterer lageret fra Git, anvender Fabric endringene på det levende lageret og kjører skriptene i rekkefølge:
- Pre-deployment-skriptet kjører før skjemaendringene brukes.
- Skjemautplasseringsplanen brukes.
- Post-deploying-skriptet kjører etter at skjemaendringene er fullført.
Betegnelser rundtur gjennom Git: å konfigurere et skript i portalen og committe det, eller å lage det i og .sqlproj oppdatere arbeidsområdet, gir et konsistent resultat. Gjentatte commits og oppdateringer dupliserer ikke eller mister konfigurasjonen. Siden kun ett forhåndsdistribusjons- og ett post-distribusjonsskript er tillatt, erstatter en konfigurasjon laget i Git enhver eksisterende betegnelse i lageret ved oppdatering.
Med distribusjonspipelines
Distribusjonspipelines bruker betegnelsene før utrulling og etter utrulling når de promoterer et lager gjennom utviklings-, test- og produksjonsfasene . De utpekte skriptene kjører deterministisk i hvert målmiljø, så du kan bruke dem til å anvende miljøoppsett eller til å gjeninnføre SQL-sikkerhet etter hvert som innholdet beveger seg mellom stadier.
I arbeidsområder uten kildekontroll
Lagervaredefinisjonen inkluderer pre-deployment og post-deployment betegnelser selv når arbeidsområdet ikke er koblet til kildekontroll. Eksport av lageret inkluderer konfigurasjonen, og import av det gjenoppretter konfigurasjonen intakt.
Forfatter skript før og etter distribusjon i et SQL-databaseprosjekt
I stedet for Fabric-portalen kan du lage pre-deployment- og post-deployment-skript direkte i lagerets SQL-databaseprosjekt ved å bruke SQL Database Projects-utvidelsen i Visual Studio Code eller den integrerte SQL-prosjektopplevelsen i SQL Server Management Studio. Konfigurasjonen vises i Fabric-portalen – både i Object Explorer og item Settings – etter neste Git-oppdatering.
Visual Studio Code
- Installer SQL Database Projects-utvidelsen i Visual Studio Code.
- Åpne SQL-databaseprosjektet for lageret ditt. Hvis arbeidsområdet ditt er koblet til Git, klon repoet, og åpne deretter mappen for lagerprosjektet.
- I visningen Databaseprosjekter , høyreklikk på prosjektnoden og velg Legg til Forhåndsdistribusjonsskript eller Legg til Skript etter distribusjon.
- Oppgi et skriptnavn uten filendelse. Skriptfilen legges til prosjektet og åpnes i editoren.
- Legg til Transact-SQL i skriptet og lagre filen. Sørg for at filen lagres i
.sharedqueriesmappen for neste Git-oppdatering. - Commit og push endringene til ditt Git-repo, oppdater deretter arbeidsområdet fra kildekode for å bruke konfigurasjonen.
SQL Server Management Studio
- Bruk SQL Server Management Studio 22 eller nyere, som inkluderer erfaring med SQL Database Projects.
- Åpne SQL-databaseprosjektet for lageret ditt.
- I løsningsutforsker, høyreklikk på prosjektnoden og velg Add>Script. Velg Pre-Deployment Script eller Post-Deployment Script.
- Skriptfilen legges til prosjektet og åpnes i spørringseditoren.
- Legg til Transact-SQL i skriptet og lagre filen. Sørg for at du lagrer filen i
.sharedqueriesmappen for neste Git-oppdatering. - Commit og push endringene til ditt Git-repo, oppdater deretter arbeidsområdet fra kildekode for å bruke konfigurasjonen.
Rediger prosjektfilen direkte
I ethvert verktøy kan du angi et skript ved å redigere .sqlproj filen og legge til ett enkelt PreDeploy eller PostDeploy et element i en ItemGroup:
<ItemGroup>
<PreDeploy Include="./sharedqueries/pre-deployment.sql" />
<PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>
Migrer fra eksisterende SQL-prosjekter
Hvis du migrerer en .sqlproj fra SQL Server Data Tools (SSDT) eller Visual Studio som allerede inneholder <PreDeploy> og <PostDeploy> oppføringer, gjenkjenner importprosessen og mapper disse oppføringene til Fabric-konfigurasjonen før utrulling og etter utrulling. Siden Fabric kun støtter ett pre-deployment og ett post-deployment-skript, sørg for at prosjektet inneholder maksimalt én oppføring av hver type før import.
Hensyn og begrensninger
- Et lager støtter kun ett skript før distribusjon og ett enkelt skript etter distribusjon. Den støtter ikke flere filer per skript.
- Du kan ikke angi samme delte spørring som både før og etter distribusjon.
- Hvis du sletter en delt spørring som er utpekt som et pre-deployment eller post-deployment-skript, slettes den tilsvarende betegnelsen automatisk.
- Hvis du endrer en delt spørring som er utpekt som et pre-deployment eller post-deployment script til en brukerforespørsel, slettes den tilsvarende betegnelsen automatisk.
- Pre- og post-deployment-skript kjøres på hver warehouse-distribusjon. De Transact-SQL skriptene bør være idempotente, slik at gjentatte kjøringer ikke feiler eller skaper dupliserte objekter.
- Forhånds- og post-distribusjonsskript valideres ikke mot databasemodellen ved bygging. Feil i skriptene dukker opp ved distribusjon, og en skriptfeil stopper distribusjonen.
- Du kan bare bruke Transact-SQL som støttes i Fabric datalager.
- Identiteten som kjører distribusjonen må ha de nødvendige tillatelsene for å kjøre skriptinnholdet.