Üzembe helyezés előtti és üzembe helyezés utáni szkriptek Fabric Data Warehouse (előzetes verzió)

A következőkre vonatkozik:✅ Raktár a Microsoft Fabricben

Important

Ez a funkció előzetes verzióban érhető el.

Az üzembe helyezés előtti és utáni szkriptek lehetővé teszik, hogy egy adattárház Fabricben történő üzembe helyezésének részeként egyéni Transact-SQL-parancsokat futtasson. Az üzembe helyezés előtti és az üzembe helyezés utáni szkriptek használatával törölheti az adatokat, a referenciaadatokat, vagy olyan SQL-biztonságot alkalmazhat, amely nem a raktár sémájában van kifejezve.

A Fabric Data Warehouse-ban az üzembe helyezés előtti vagy utáni szkript egy megosztott SQL-lekérdezés. Ezeket a szkripteket létrehozhatja egy SQL-adatbázisprojektben, és kijelölheti őket a Fabric portálon. A megjelölés raktárszintű metaadatként van tárolva, és a raktár .sqlproj fájljának részeként a forrásvezérlésre van kötelezve, így manuális újraalkalmazás nélkül végigjárja a Git és az üzembe helyezési folyamatokat.

Ez a cikk bemutatja az üzembe helyezés előtti és az üzembe helyezés utáni szkripteket, a Fabric portálon való konfigurálásukat, a forrásvezérlési és üzembehelyezési folyamatokkal való viselkedésüket, valamint az Visual Studio Code és SQL Server Management Studio (SSMS) használatát.

Important

Közzététel előtt mindig tekintse át az üzembehelyezési szkripteket és a beállításokat. Először fejlesztői és tesztelési környezetekben tesztelje, hogy megelőzze a nem szándékos adatvesztést.

Mik az üzembe helyezés előtti és az üzembe helyezés utáni szkriptek?

Amikor egy munkaterületet csatlakoztatsz a forrásvezérléshez, minden raktár SQL adatbázis projektként jelenik meg: egy forráskód által vezérelt szkript, amely az SQL objektumokat alkotja, amelyek a raktár sémáját alkotják (táblák, nézetek, tárolt eljárások és függvények). Minden objektum olyan .sql fájlként van tárolva, amely tartalmazza az adatdefiníciós nyelv (DDL) szintaxisát, például CREATE TABLE. Az objektumok leírják a séma kívánt állapotát , és az üzembe helyezési folyamat összehasonlítja a kívánt állapotot a célraktárral, és létrehoz egy különbségi T-SQL-szkriptet, amely objektumokat hoz létre, módosít vagy elvet, hogy a cél egyezzen a projekttel.

Az üzembe helyezés előtti és utáni szkriptek a séma üzembe helyezése előtt és után futó Transact-SQL-lel egészítik ki ezt a folyamatot:

  • A sématelepítési terv alkalmazása előtt fut egy üzembe helyezés előtti szkript.
  • A sématelepítési terv befejeződése után fut egy üzembe helyezés utáni szkript.

Az üzembe helyezés előtti vagy az üzembe helyezés utáni szkript a raktár Lekérdezések mappájában tárolt megosztott lekérdezések egyike. A raktár legfeljebb egy üzembe helyezés előtti és egy üzembe helyezés utáni szkriptet támogat. A megjelölés a szkript tartalmának duplikálása helyett raktárszintű metaadatként van tárolva, így elhanyagolható tárolási többletterhelést jelent.

Mivel minden kijelölt szkript minden alkalommal lefut, amikor az adattárházat telepítik, úgy írja meg a Transact-SQL-kódot, hogy idempotens legyen (azaz többször is biztonságosan futtatható).

Tip

Ha egy szkript idempotens, többször is futtathatod anélkül, hogy problémát okozna. Több adatbázisba is telepíthetsz anélkül, hogy előre meg kellene határoznod a státuszukat.

Gyakori használati esetek

  • Referencia- és statikus adatkezelés: Sorokat szúrhat be, frissíthet vagy törölhet keresési, konfigurációs vagy referenciatáblákból a séma üzembe helyezése után.
  • Adattisztítás: A sémamódosítások alkalmazása előtt vagy után távolítsa el az elavult vagy ideiglenes adatokat.
  • Környezet beállítása: A fejlesztési, tesztelési és éles környezetek között eltérő beállítások alkalmazása vagy inicializálása.
  • Metaadatalapú folyamat inicializálása: Készítse elő az alsóbb rétegbeli folyamat lépéseihez szükséges raktárállapotot.
  • SQL-biztonság: A raktártábla adatai és az SQL biztonsági funkciói, például a szerepkörök, a felhasználók és GRANT/DENY az engedélyek nem szerepelnek az SQL Database-projektben. Az üzembe helyezés utáni szkripttel újra létrehozhatja ezeket az objektumokat az üzembe helyezés után, beleértve a tesztelési és az éles környezetek közötti különbségeket is. Példák: Példa az SQL-biztonság üzembe helyezés utáni szkriptjeire.

SQL-projektfájl felépítése és szintaxisa

Egy raktári SQL projekt a projektfájlban.sqlproj () a telepítés előtti és utótelepítés szkriptekre hivatkozik a PreDeploy és PostDeploy elem típusok használatával. Minden bejegyzés egyetlen megosztott lekérdezésfájlra mutat a projektben.

Az alábbi példa az üzembe helyezés előtti és pre-deployment.sql az üzembe helyezés utáni szkriptként van megjelölvepost-deployment.sql:

<ItemGroup>
  <PreDeploy Include="pre-deployment.sql" />
  <PostDeploy Include="post-deployment.sql" />
</ItemGroup>

Important

Fabric Data Warehouse csak egyetlen fájlt támogat az üzembe helyezés előtti szkripthez, és egyetlen fájlt az üzembe helyezés utáni szkripthez. A több fájlból összeállított szkriptek használata – például amikor az SQLCMD :r paranccsal más fájlokra hivatkozik – nem támogatott. Ha a .sqlproj rendszer több üzembe helyezés előtti vagy üzembe helyezés utáni bejegyzést tartalmaz, a Git-frissítés meghiúsul.

Példa az SQL-biztonság üzembe helyezését követő szkriptre

Mivel az SQL-biztonsági funkciók nincsenek rögzítve az SQL Database-projektben, az üzembe helyezés utáni szkriptek gyakran újra létrehozhatják őket a raktár üzembe helyezése után. Úgy írja meg a szkriptet, hogy minden telepítésen futtatható legyen.

Az alábbi minta létrehoz egy egyéni adatbázis-szerepkört, amelyet elneveznek DataReaders , és engedélyeket ad SELECT a dbo sémának.

-- 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

Megjegyzés:

A Fabric Data Warehouse nem támogatja az SQL Serverben elérhető összes Transact-SQL-utasítást. Győződjön meg arról, hogy a Fabric Data Warehouse támogatja a szkriptekben szereplő utasításokat.

Üzembe helyezés előtti és üzembe helyezés utáni szkriptek konfigurálása a Fabric portálon

A Fabric portálon jelöljön ki egy meglévő megosztott lekérdezést az üzembe helyezés előtti vagy az üzembe helyezés utáni szkriptként. Ezt a Object Explorer vagy a raktárelem beállításai között teheti meg.

Nem jelölhet meg megosztott lekérdezést egyszerre az üzembe helyezés előtti és az üzembe helyezés utáni szkriptként.

Forrás: Object Explorer

  1. A raktárszerkesztőben bontsa ki a Lekérdezések mappát Object Explorer.
  2. Kattintson a jobb gombbal a használni kívánt megosztott lekérdezésre.
    • Ha szükséges, mozgass egy lekérdezést a Lekérdezések mappából egy megosztott lekérdezésre.
  3. Válassza a Telepítési szkriptek beállítása lehetőséget. Ez a művelet az elembeállítások panelre viszi.
  4. A telepítés előtti szkript és a telepítés utáni szkript mezőkben válassza a Szkript kiválasztása lehetőséget.
  5. Válassza a Lekérdezés beállítása telepítés előtti/utáni parancsfájlként lehetőséget, majd válasszon ki egy megosztott lekérdezést mindkettőhöz. Minden legördülő menü felsorolja az összes megosztott lekérdezést a raktárban.

Az elem beállításaiból

  1. Nyisd meg a raktár beállításait.
  2. Menj a CI/CD szekcióhoz.
  3. A telepítés előtti szkript és a telepítés utáni szkript mezőkben válassza a Szkript kiválasztása lehetőséget.
  4. Válassza a Lekérdezés beállítása telepítés előtti/utáni parancsfájlként lehetőséget, majd válasszon ki egy megosztott lekérdezést mindkettőhöz. Minden legördülő menü felsorolja az összes megosztott lekérdezést a raktárban.

A kiválasztott elemeket a rendszer raktárszintű metaadatokként tárolja, és szinkronban marad a Object Explorer és az elembeállítások között.

Az üzembe helyezés előtti és az üzembe helyezés utáni szkriptek működése az üzembe helyezéssel

Git-integrációval

Amikor egy munkaterületet egy Git-adattárhoz csatlakoztat, az üzembe helyezés előtti és az üzembe helyezés utáni megjelölések szerializálva lesznek a raktár fájljában .sqlproj a véglegesítéskor. Amikor frissíti a raktárt a Gitből, Fabric alkalmazza a módosításokat az élő raktárra, és a szkripteket a következő sorrendben futtatja:

  1. Az üzembe helyezés előtti szkript a sémamódosítások alkalmazása előtt fut.
  2. A sémaüzembehelyezési terv alkalmazva lett.
  3. Az üzembe helyezés utáni szkript a sémamódosítások befejeződése után fut.

A megnevezések oda-vissza működnek a Giten keresztül: ha a portálon konfigurál egy szkriptet és véglegesíti, vagy a(z) .sqlproj környezetben hozza létre, majd frissíti a munkaterületet, az eredmény következetes lesz. Az ismétlődő véglegesítések és frissítések nem duplikálják vagy elveszítik a konfigurációt. Mivel csak egy üzembe helyezés előtti és egy üzembe helyezés utáni szkript engedélyezett, a Gitben létrehozott konfiguráció lecseréli a frissítés alatt álló raktárban lévő összes meglévő megjelölést.

Megjegyzés:

A telepítés előtti és utáni szkriptekhez a legújabb forráskódkezelési felület szükséges a teljes Git-munkafolyamat támogatásához. Olyan munkaterületeken, amelyeket még nem fejlesztettek meg, a telepítési szkript metaadatai nem szinkronizálódnak a forráskódolással, és a telepítési szkriptek nem vesznek részt Git-alapú munkafolyamatokban.

Ez a korlátozás csak a Git munkafolyamatokra vonatkozik, és nem előfeltétel a telepítési folyamatokhoz (ALM).

Üzembehelyezési folyamatokkal

A telepítési folyamatok a telepítés előtti és utó-telepítési jelöléseket használják, amikor egy raktárt népszerűsítenek a Fejlesztés, Tesztelés és Gyártás szakaszokon keresztül. A kijelölt szkriptek determinisztikusan hajtanak végre minden célkörnyezetben, így a környezetbeállítás alkalmazásához vagy az SQL-biztonság ismételt alkalmazásához használhatja őket, amikor a tartalom a szakaszok között mozog.

Forrásvezérlés nélküli munkaterületeken

A raktárelem definíciója tartalmazza az üzembe helyezés előtti és az üzembe helyezés utáni megjelöléseket akkor is, ha a munkaterület nincs csatlakoztatva a forrásvezérlőhöz. A raktár exportálása magában foglalja a konfigurációt, és importálása érintetlenül állítja vissza a konfigurációt.

Üzembe helyezés előtti és üzembe helyezés utáni szkriptek létrehozása SQL Database-projektben

A Fabric portál helyett közvetlenül a raktár SQL Database-projektjében készíthet előtelepítés előtti és üzembe helyezés utáni szkripteket a Visual Studio Code SQL Database Projects bővítményével vagy a SQL Server Management Studio integrált SQL-projektek felületével. A konfiguráció megjelenik a Fabric portálon – Object Explorer és elembeállítások között is – a következő Git-frissítés után.

Visual Studio Code

  1. Telepítse a Visual Studio Code-ban az SQL Database Projects nevű bővítményt.
  2. Nyissa meg az SQL Database-projektet a raktárhoz. Ha a munkaterület csatlakozik a Githez, klónozza az adattárat, majd nyissa meg a raktárprojekt mappát.
  3. Az Adatbázisprojektek nézetben kattintson a jobb gombbal a projektcsomópontra, és válassza az Üzembe helyezés előtti szkript hozzáadása vagy az Üzembe helyezés utáni szkript hozzáadása lehetőséget.
  4. Adja meg a szkript nevét fájlkiterjesztés nélkül. A szkriptfájl hozzá lesz adva a projekthez, és megnyílik a szerkesztőben.
  5. Adja hozzá a Transact-SQL a szkripthez, és mentse a fájlt. Győződj meg róla, hogy a fájl a következő Git-frissítéshez a .sharedqueries mappába legyen mentve.
  6. Véglegesítse és küldje el a módosításokat a Git-adattárba, majd frissítse a munkaterületet a forrásvezérlőből a konfiguráció alkalmazásához.

SQL Server Management Studio

  1. Használja a SQL Server Management Studio 22-et vagy újabb verziót, amely tartalmazza az SQL Database Projects felületét.
  2. Nyissa meg az SQL Database-projektet a raktárhoz.
  3. A Megoldáskezelő kattintson a jobb gombbal a projektcsomópontra, és válassza aSzkript>. Válassza az üzembe helyezés előtti vagyaz üzembe helyezés utáni szkriptet.
  4. A szkriptfájl hozzá lesz adva a projekthez, és megnyílik a lekérdezésszerkesztőben.
  5. Adja hozzá a Transact-SQL a szkripthez, és mentse a fájlt. Győződj meg róla, hogy .sharedqueries a fájlt a mappába mented a következő Git frissítéshez.
  6. Véglegesítse és küldje el a módosításokat a Git-adattárba, majd frissítse a munkaterületet a forrásvezérlőből a konfiguráció alkalmazásához.

A projektfájl szerkesztése közvetlenül

Bármely eszközben kijelölhet egy szkriptet úgy, hogy szerkeszti a .sqlproj fájlt, és egyetlen PreDeploy elemet vagy PostDeploy elemet ad hozzá a következőhöz ItemGroup:

<ItemGroup>
  <PreDeploy Include="./sharedqueries/pre-deployment.sql" />
  <PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>

Migrálás meglévő SQL-projektekből

Ha egy .sqlproj elemet migrálsz az SQL Server Data Toolsból (SSDT) vagy a Visual Studioból, amely már tartalmaz <PreDeploy> és <PostDeploy> bejegyzéseket, az importálási folyamat felismeri ezeket a bejegyzéseket, és hozzárendeli őket a Fabric üzembe helyezés előtti és utáni konfigurációjához. Mivel Fabric csak egy üzembe helyezés előtti és egy üzembe helyezés utáni szkriptet támogat, importálás előtt győződjön meg arról, hogy a projekt legfeljebb egy bejegyzést tartalmaz minden típusból.

Megfontolások és korlátok

  • A raktár csak egyetlen üzembe helyezés előtti szkriptet és egyetlen üzembe helyezés utáni szkriptet támogat. Szkriptenként nem támogat több fájlt.
  • Nem jelölheti ki ugyanazt a megosztott lekérdezést, mint az üzembe helyezés előtti és az üzembe helyezés utáni szkript.
  • Ha olyan megosztott lekérdezést töröl, amely üzembe helyezés előtti vagy üzembe helyezés utáni szkriptként van kijelölve, a megfelelő kijelölés automatikusan törlődik.
  • Ha az üzembe helyezés előtti vagy az üzembe helyezés utáni szkriptként kijelölt megosztott lekérdezést felhasználói lekérdezéssé módosítja, a megfelelő kijelölés automatikusan törlődik.
  • Az üzembe helyezés előtti és utáni szkriptek minden raktártelepítésen futnak. A Transact-SQL szkripteknek idempotensnek kell lenniük, hogy az ismétlődő futtatások ne hiúsuljanak meg, vagy duplikált objektumokat hozzanak létre.
  • Az üzembe helyezés előtti és az üzembe helyezés utáni szkriptek nem lesznek érvényesítve az adatbázis-modellel a létrehozáskor. A szkriptek hibái az üzembe helyezés során jelentkeznek, és egy szkripthiba leállítja az üzembe helyezést.
  • Csak a Fabric Data Warehouse-ben támogatott Transact-SQL-t használhatja.
  • Az üzembe helyezést futtató identitásnak rendelkeznie kell a szkript tartalmának végrehajtásához szükséges engedélyekkel.