Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:✅ Warehouse in Microsoft Fabric
Important
Deze functie is beschikbaar als preview-versie.
Met scripts vóór de implementatie en na de implementatie kunt u aangepaste Transact-SQL opdrachten uitvoeren als onderdeel van het implementeren van een magazijn in Fabric. Gebruik scripts vóór de implementatie en na de implementatie om gegevens, seed-referentiegegevens op te schonen of SQL-beveiliging toe te passen die niet wordt uitgedrukt in het schema van het magazijn.
In een Fabric Data Warehouse is een script vóór implementatie of na implementatie een gedeelde SQL-query. U kunt deze scripts ontwerpen in een SQL-databaseproject en deze toewijzen vanuit de Fabric-portal. De aanduiding wordt opgeslagen als metagegevens op warehouse-niveau en wordt ingecheckt in broncodebeheer als onderdeel van het .sqlproj-bestand van het warehouse, zodat deze via Git en implementatiepijplijnen heen en weer gaat zonder handmatig opnieuw te hoeven worden toegepast.
In dit artikel wordt uitgelegd wat pre-implementatie- en post-implementatiescripts zijn, hoe u deze configureert in de Fabric-portal, hoe ze zich gedragen met broncodebeheer en implementatiepijplijnen, en hoe u ze ontwerpt in Visual Studio Code en SQL Server Management Studio (SSMS).
Important
Controleer altijd implementatiescripts en -instellingen voordat u publiceert. Test eerst in ontwikkel- en testomgevingen om onbedoeld gegevensverlies te voorkomen.
Wat zijn scripts vóór de implementatie en na de implementatie?
Wanneer je een werkruimte verbindt met broncodebeheer, verschijnt elk warehouse als een SQL-databaseproject: een broncode-script van de SQL-objecten die samen het warehouse-schema vormen (tabellen, views, opgeslagen procedures en functies). Elk object wordt opgeslagen als een .sql bestand dat de DDL-syntaxis (Data Definition Language) bevat, zoals CREATE TABLE. De objecten beschrijven de gewenste status van het schema en het implementatieproces vergelijkt die gewenste status met het doelwarehouse en genereert een differentieel T-SQL-script waarmee objecten worden gemaakt, gewijzigd of verwijderd, zodat het doel overeenkomt met het project.
Scripts vóór de implementatie en na de implementatie breiden dit proces uit met Transact-SQL die worden uitgevoerd rond de schema-implementatie:
- Een script vóór de implementatie wordt uitgevoerd voordat het schema-implementatieplan wordt toegepast.
- Een script na de implementatie wordt uitgevoerd nadat het schema-implementatieplan is voltooid.
Een script vóór implementatie of na implementatie is een van de gedeelde query’s die zijn opgeslagen in de map Queries van het datawarehouse. Een magazijn ondersteunt maximaal één script vóór de implementatie en één script na de implementatie. De aanduiding wordt opgeslagen als metagegevens op magazijnniveau in plaats van de scriptinhoud te dupliceren, dus er wordt verwaarloosbare opslagoverhead toegevoegd.
Omdat elk aangewezen script wordt uitgevoerd telkens wanneer het magazijn wordt geïmplementeerd, maakt u de Transact-SQL die idempotent moet zijn (veilig om herhaaldelijk te worden uitgevoerd).
Tip
Wanneer een script idempotent is, kun je het meerdere keren uitvoeren zonder problemen te veroorzaken. Je kunt naar meerdere databases deployen zonder hun status vooraf te hoeven bepalen.
Veelvoorkomende gebruiksvoorbeelden
- Referentiegegevens en beheer van statische gegevens: Rijen invoegen, bijwerken of verwijderen in zoek-, configuratie- of referentietabellen nadat het schema is uitgerold.
- Gegevens opschonen: verouderde of tijdelijke gegevens verwijderen voor of na het toepassen van schemawijzigingen.
- Omgevingsinstellingen: Instellingen toepassen of de status initialiseren die verschilt tussen ontwikkel-, test- en productieomgevingen.
- Initialisatie van metagegevensgestuurde pijplijnen: bereid de magazijnstatus voor die vereist is voor downstreampijplijnstappen.
-
SQL-beveiliging: tabelgegevens en SQL-beveiligingsfuncties, zoals rollen, gebruikers en
GRANT/DENYmachtigingen, worden niet opgenomen in het SQL-databaseproject. Gebruik een script na de implementatie om deze objecten na de implementatie opnieuw te maken, inclusief verschillen tussen test- en productieomgevingen. Zie voorbeeldscript na implementatie voor SQL-beveiliging.
Structuur en syntaxis van SQL-projectbestand
Een warehouse SQL-project verwijst naar de pre-deployment en post-deployment scripts in het projectbestand (.sqlproj) door gebruik te maken van de PreDeploy en PostDeploy itemtypes. Elk item verwijst naar één gedeeld querybestand in het project.
In het volgende voorbeeld wordt pre-deployment.sql het script vóór de implementatie en post-deployment.sql als het script na de implementatie aangeduid:
<ItemGroup>
<PreDeploy Include="pre-deployment.sql" />
<PostDeploy Include="post-deployment.sql" />
</ItemGroup>
Important
Fabric Data Warehouse ondersteunt slechts één bestand voor het script vóór de implementatie en één bestand voor het script na de implementatie. Het opstellen van een script uit meerdere bestanden, bijvoorbeeld met behulp van de SQLCMD-opdracht :r om te verwijzen naar andere bestanden, wordt niet ondersteund. Als het .sqlproj meerdere vermeldingen vóór de implementatie of na de implementatie bevat, mislukt de Git-update.
Voorbeeldscript na implementatie voor SQL-beveiliging
Omdat SQL-beveiligingsfuncties niet worden vastgelegd in het SQL-databaseproject, is een script na de implementatie een veelgebruikte manier om deze opnieuw te maken nadat een warehouse is geïmplementeerd. Schrijf het script zodat het kan worden uitgevoerd bij elke implementatie.
In het volgende voorbeeld wordt een aangepaste databaserol met de naam DataReaders gemaakt en worden machtigingen SELECT verleend voor het schema 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
Note
Fabric Data Warehouse biedt geen ondersteuning voor elke Transact-SQL instructie die beschikbaar is in SQL Server. Zorg ervoor dat de instructies in uw scripts worden ondersteund in Fabric Data Warehouse.
Scripts vóór de implementatie en na de implementatie configureren in de Fabric-portal
Wijs in de Fabric-portal een bestaande gedeelde query aan als het script vóór de implementatie of na de implementatie. U kunt dit doen vanuit Objectverkenner of via de instellingen van het magazijnitem.
U kunt geen gedeelde query aanwijzen als zowel het script vóór de implementatie als het script na de implementatie tegelijk.
In Objectverkenner
- Vouw in de magazijneditor de map Query's uit in Objectverkenner.
- Klik met de rechtermuisknop op de gedeelde query die u wilt gebruiken.
- Indien nodig, verplaats een query van Mijn queries naar een gedeelde query.
- Selecteer Implementatiescripts instellen. Met deze actie gaat u naar het deelvenster Iteminstellingen.
- Selecteer in de velden Pre-implementatiescript en Post-implementatiescriptScript kiezen.
- Kies de optie Een query instellen als een pre-/post-deploymentscript en selecteer vervolgens voor beide een gedeelde query. Elke dropdown geeft alle gedeelde zoekopdrachten in het magazijn weer op.
Vanuit iteminstellingen
- Open de instellingen van het magazijn.
- Ga naar de CI/CD-sectie .
- Selecteer in de velden Pre-implementatiescript en Post-implementatiescriptScript kiezen.
- Kies de optie Een query instellen als een pre-/post-deploymentscript en selecteer vervolgens voor beide een gedeelde query. Elke dropdown geeft alle gedeelde zoekopdrachten in het magazijn weer op.
De selecties die u maakt, worden opgeslagen als metagegevens op magazijnniveau en worden gesynchroniseerd tussen Objectverkenner en iteminstellingen.
Hoe pre-implementatie- en post-implementatiescripts zich gedragen met implementatie
Met Git-integratie
Wanneer u een werkruimte verbindt met een Git-repository, worden de aanduidingen vóór en na implementatie bij het committen geserialiseerd in het .sqlproj-bestand van de warehouse. Wanneer u het magazijn bijwerkt vanuit Git, past Fabric de wijzigingen toe op het livewarehouse en voert u de scripts in de volgende volgorde uit:
- Het script vóór de implementatie wordt uitgevoerd voordat de schemawijzigingen worden toegepast.
- Het schema-implementatieplan wordt toegepast.
- Het script na de implementatie wordt uitgevoerd nadat het schema is gewijzigd.
Aanduidingen kunnen heen en weer gaan via Git: het configureren van een script in de portal en het committen ervan, of het opstellen ervan in de .sqlproj en het bijwerken van de werkruimte, geeft een consistent resultaat. Herhaalde doorvoeringen en updates dupliceren of verliezen de configuratie niet. Omdat slechts één pre-implementatie en één script na implementatie zijn toegestaan, vervangt een configuratie die is geschreven in Git elke bestaande aanduiding in het magazijn bij de update.
Note
Pre-deployment en post-deployment scripts vereisen de nieuwste ervaring met bronbeheer voor volledige ondersteuning van Git-workflows. In werkruimtes die niet zijn geüpgraded, worden deployment-scriptmetadata niet gesynchroniseerd met bronbeheer en nemen deployment-scripts niet deel aan Git-gebaseerde workflows.
Deze beperking geldt alleen voor Git-workflows en is geen vereiste voor deployment pipelines (ALM).
Met implementatiepijplijnen
Deployment pipelines gebruiken de benamingen vóór implementatie en na implementatie wanneer een warehouse door de fasen Development, Test en Production wordt gepromoveerd. De aangewezen scripts worden deterministisch uitgevoerd in elke doelomgeving, zodat u ze kunt gebruiken om omgevingsinstellingen toe te passen of SQL-beveiliging opnieuw toe te passen wanneer inhoud tussen fasen wordt verplaatst.
In werkruimten zonder broncodebeheer
De definitie van het magazijnitem bevat de aanduidingen voor pre-implementatie en post-implementatie, zelfs als de werkruimte niet is verbonden met broncodebeheer. Het exporteren van het magazijn bevat de configuratie en het importeren ervan herstelt de configuratie intact.
Scripts voor pre-implementatie en post-implementatie maken in een SQL-databaseproject
In plaats van de Fabric-portal kunt u scripts voor pre-implementatie en post-implementatie rechtstreeks in het SQL Database-project van het warehouse maken met behulp van de extensie SQL Database Projects in Visual Studio Code of de geïntegreerde SQL-projecten in SQL Server Management Studio. De configuratie wordt weergegeven in de Fabric-portal, zowel in Objectverkenner als iteminstellingen, na de volgende Git-update.
Visual Studio code
- Installeer de extensie SQL Database Projects in Visual Studio Code.
- Open het SQL-databaseproject voor uw magazijn. Als uw werkruimte is verbonden met Git, kloon dan de repo en open vervolgens de warehouse-projectmap.
- Klik in de weergave Databaseprojecten met de rechtermuisknop op het projectknooppunt en selecteer Pre-Deployment Script toevoegen of Script na implementatie toevoegen.
- Geef een scriptnaam op zonder de bestandsextensie. Het scriptbestand wordt toegevoegd aan het project en geopend in de editor.
- Voeg uw Transact-SQL toe aan het script en sla het bestand op. Zorg ervoor dat het bestand in de
.sharedqueriesmap is opgeslagen voor de volgende Git-update. - Voer de wijzigingen door en push deze naar uw Git-opslagplaats en werk vervolgens de werkruimte bij vanuit broncodebeheer om de configuratie toe te passen.
SQL Server Management Studio
- Gebruik SQL Server Management Studio 22 of hoger, waaronder de SQL Database Projects-ervaring.
- Open het SQL-databaseproject voor uw magazijn.
- Klik in Solution Explorer met de rechtermuisknop op het projectknooppunt en selecteer Script toevoegen>. Selecteer Pre-implementatiescript of Post-implementatiescript.
- Het scriptbestand wordt toegevoegd aan het project en geopend in de query-editor.
- Voeg uw Transact-SQL toe aan het script en sla het bestand op. Zorg dat je het bestand opslaat in de
.sharedqueriesmap voor de volgende Git-update. - Voer de wijzigingen door en push deze naar uw Git-opslagplaats en werk vervolgens de werkruimte bij vanuit broncodebeheer om de configuratie toe te passen.
Het projectbestand rechtstreeks bewerken
In elk hulpprogramma kunt u een script aanwijzen door het .sqlproj bestand te bewerken en één PreDeploy item PostDeploy toe te voegen aan een ItemGroup:
<ItemGroup>
<PreDeploy Include="./sharedqueries/pre-deployment.sql" />
<PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>
Migreren van bestaande SQL-projecten
Als je een .sqlproj uit SQL Server Data Tools (SSDT) of Visual Studio migreert dat al vermeldingen voor <PostDeploy> en <PreDeploy> bevat, herkent het importproces die vermeldingen en koppelt het deze aan de Fabric-pre-deploymentconfiguratie en post-deploymentconfiguratie. Omdat Fabric slechts één pre-implementatie en één script na de implementatie ondersteunt, moet u ervoor zorgen dat het project maximaal één vermelding van elk type bevat voordat u importeert.
Overwegingen en beperkingen
- Een magazijn ondersteunt slechts één script vóór de implementatie en één script na de implementatie. Het biedt geen ondersteuning voor meerdere bestanden per script.
- U kunt niet dezelfde gedeelde query aanwijzen als zowel het script vóór de implementatie als het script na de implementatie.
- Als u een gedeelde query verwijdert die is aangewezen als een pre-implementatie- of post-implementatiescript, wordt de bijbehorende aanduiding automatisch gewist.
- Als u een gedeelde query wijzigt die is aangewezen als een pre-implementatie- of post-implementatiescript in een gebruikersquery, wordt de bijbehorende aanduiding automatisch gewist.
- Scripts vóór en na de implementatie worden uitgevoerd op elke magazijnimplementatie. De Transact-SQL scripts moeten idempotent zijn, zodat herhaalde uitvoeringen niet mislukken of dubbele objecten maken.
- Scripts vóór de implementatie en na de implementatie worden tijdens de build niet gevalideerd op basis van het databasemodel. Fouten in de scripts worden op het moment van de implementatie weergegeven en een scriptfout stopt de implementatie.
- U kunt alleen Transact-SQL gebruiken die wordt ondersteund in Fabric Data Warehouse.
- De identiteit waarop de implementatie wordt uitgevoerd, moet beschikken over de machtigingen die zijn vereist om de scriptinhoud uit te voeren.