Δέσμες ενεργειών πριν και μετά την ανάπτυξη για Fabric αποθήκη δεδομένων (Προεπισκόπηση)

Ισχύει για:✅ Αποθήκη στο Microsoft Fabric

Σημαντικό

Αυτή η δυνατότητα βρίσκεται προεπισκόπηση.

Οι δέσμες ενεργειών πριν και μετά την ανάπτυξη σάς επιτρέπουν να εκτελείτε προσαρμοσμένες εντολές Transact-SQL ως μέρος της ανάπτυξης μιας αποθήκης στο Fabric. Χρησιμοποιήστε δέσμες ενεργειών πριν και μετά την ανάπτυξη για να εκκαθαρίσετε δεδομένα, να δημιουργήσετε δεδομένα αναφοράς ή να εφαρμόσετε ασφάλεια SQL που δεν εκφράζεται στο σχήμα της αποθήκης.

Σε μια Fabric αποθήκη δεδομένων, μια δέσμη ενεργειών πριν ή μετά την ανάπτυξη είναι ένα κοινόχρηστο ερώτημα SQL. Μπορείτε να συντάξετε αυτές τις δέσμες ενεργειών σε ένα έργο βάσης δεδομένων SQL και να τις ορίσετε από την πύλη Fabric. Ο χαρακτηρισμός αποθηκεύεται ως μετα-δεδομένα σε επίπεδο αποθήκης και δεσμεύεται για τον έλεγχο προέλευσης ως μέρος του αρχείου της αποθήκης .sqlproj , επομένως πραγματοποιεί διαδρομές μετ' επιστροφής μέσω του Git και των διοχετεύσεων ανάπτυξης χωρίς μη αυτόματη εκ νέου εφαρμογή.

Αυτό το άρθρο εξηγεί τι είναι οι δέσμες ενεργειών πριν και μετά την ανάπτυξη, πώς μπορείτε να τις ρυθμίσετε στην πύλη Fabric, πώς συμπεριφέρονται με τις διοχετεύσεις ελέγχου προέλευσης και ανάπτυξης και πώς μπορείτε να τις συντάξετε στο Visual Studio Code και στο SQL Server Management Studio (SSMS).

Σημαντικό

Να ελέγχετε πάντα τις δέσμες ενεργειών και τις ρυθμίσεις ανάπτυξης πριν από τη δημοσίευση. Δοκιμάστε πρώτα σε περιβάλλοντα ανάπτυξης και δοκιμής για να αποτρέψετε την ακούσια απώλεια δεδομένων.

Τι είναι τα σενάρια πριν και μετά την ανάπτυξη;

Όταν συνδέετε έναν χώρο εργασίας στο στοιχείο ελέγχου προέλευσης, κάθε αποθήκη εμφανίζεται ως έργο βάσης δεδομένων SQL: μια δέσμη ενεργειών ελεγχόμενη από την προέλευση των αντικειμένων SQL που αποτελούν το σχήμα αποθήκης (πίνακες, προβολές, αποθηκευμένες διαδικασίες και συναρτήσεις). Κάθε αντικείμενο αποθηκεύεται ως .sql αρχείο που περιέχει τη σύνταξη της γλώσσας ορισμού δεδομένων (DDL), όπως CREATE TABLE. Τα αντικείμενα περιγράφουν την επιθυμητή κατάσταση του σχήματος και η διαδικασία ανάπτυξης συγκρίνει αυτήν την επιθυμητή κατάσταση με την αποθήκη προορισμού και δημιουργεί ένα διαφορικό σενάριο T-SQL που δημιουργεί, τροποποιεί ή απορρίπτει αντικείμενα, ώστε ο στόχος να ταιριάζει με το έργο.

Οι δέσμες ενεργειών πριν και μετά την ανάπτυξη επεκτείνουν αυτήν τη διαδικασία με Transact-SQL που εκτελούνται γύρω από την ανάπτυξη σχήματος:

  • Μια δέσμη ενεργειών πριν από την ανάπτυξη εκτελείται πριν από την εφαρμογή του σχεδίου ανάπτυξης σχήματος.
  • Μια δέσμη ενεργειών μετά την ανάπτυξη εκτελείται μετά την ολοκλήρωση του σχεδίου ανάπτυξης σχήματος.

Ένα σενάριο πριν ή μετά την ανάπτυξη είναι ένα από τα κοινόχρηστα ερωτήματα που είναι αποθηκευμένα στο φάκελο Ερωτήματα της αποθήκης. Μια αποθήκη υποστηρίζει το πολύ ένα σενάριο πριν από την ανάπτυξη και ένα σενάριο μετά την ανάπτυξη. Ο χαρακτηρισμός αποθηκεύεται ως μεταδεδομένα σε επίπεδο αποθήκης αντί να αντιγράφει το περιεχόμενο του σεναρίου, επομένως προσθέτει αμελητέα επιβάρυνση αποθήκευσης.

Επειδή κάθε καθορισμένο σενάριο εκτελείται κάθε φορά που αναπτύσσεται η αποθήκη, δημιουργήστε το Transact-SQL να είναι ανίκανο (ασφαλές να εκτελείται επανειλημμένα).

Συμβουλή

Όταν ένα σενάριο είναι ανίκανο, μπορείτε να το εκτελέσετε πολλές φορές χωρίς να προκαλέσετε προβλήματα. Μπορείτε να κάνετε ανάπτυξη σε πολλές βάσεις δεδομένων χωρίς να χρειάζεται να προκαθορίσετε την κατάστασή τους.

Υποθέσεις συνήθους χρήσης

  • Διαχείριση αναφορών και στατικών δεδομένων: Εισαγάγετε, ενημερώστε ή διαγράψτε σειρές από πίνακες αναζήτησης, ρύθμισης παραμέτρων ή αναφοράς μετά την ανάπτυξη του σχήματος.
  • Εκκαθάριση δεδομένων: Καταργήστε τα παλιά ή προσωρινά δεδομένα πριν ή μετά την εφαρμογή αλλαγών σχήματος.
  • Ρύθμιση περιβάλλοντος: Εφαρμόστε ρυθμίσεις ή αρχικοποιήστε την κατάσταση που διαφέρει μεταξύ των περιβαλλόντων ανάπτυξης, δοκιμής και παραγωγής.
  • Προετοιμασία διοχέτευσης βάσει μεταδεδομένων: Προετοιμάστε την κατάσταση αποθήκης που απαιτείται από τα βήματα διοχέτευσης κατάντη.
  • Ασφάλεια SQL: Τα δεδομένα πίνακα αποθήκης και οι δυνατότητες ασφαλείας SQL, όπως ρόλοι, χρήστες και GRANT/DENY δικαιώματα, δεν περιλαμβάνονται στο έργο βάσης δεδομένων SQL. Χρησιμοποιήστε μια δέσμη ενεργειών μετά την ανάπτυξη για να δημιουργήσετε ξανά αυτά τα αντικείμενα μετά την ανάπτυξη, συμπεριλαμβανομένων των διαφορών μεταξύ των περιβαλλόντων δοκιμής και παραγωγής. Για παραδείγματα, ανατρέξτε στο θέμα Παράδειγμα δέσμης ενεργειών μετά την ανάπτυξη για ασφάλεια SQL.

Δομή και σύνταξη αρχείου έργου SQL

Ένα έργο SQL αποθήκης αναφέρεται στις δέσμες ενεργειών πριν και μετά την ανάπτυξη στο αρχείο έργου (.sqlproj) χρησιμοποιώντας τους PreDeployPostDeploy τύπους και στοιχείου. Κάθε καταχώρηση οδηγεί σε ένα μόνο κοινόχρηστο αρχείο ερωτήματος στο έργο.

Το ακόλουθο παράδειγμα ορίζεται pre-deployment.sql ως δέσμη ενεργειών πριν από την ανάπτυξη και post-deployment.sql ως δέσμη ενεργειών μετά την ανάπτυξη:

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

Σημαντικό

Fabric αποθήκη δεδομένων υποστηρίζει μόνο ένα αρχείο για το σενάριο πριν από την ανάπτυξη και ένα μόνο αρχείο για το σενάριο μετά την ανάπτυξη. Η σύνταξη μιας δέσμης ενεργειών από πολλά αρχεία - για παράδειγμα, χρησιμοποιώντας την εντολή SQLCMD :r για αναφορά σε άλλα αρχεία - δεν υποστηρίζεται. Εάν το .sqlproj περιέχει πολλές καταχωρήσεις πριν ή μετά την ανάπτυξη, η ενημέρωση του Git αποτυγχάνει.

Παράδειγμα δέσμης ενεργειών μετά την ανάπτυξη για ασφάλεια SQL

Επειδή οι δυνατότητες ασφαλείας SQL δεν καταγράφονται στο έργο βάσης δεδομένων SQL, μια δέσμη ενεργειών μετά την ανάπτυξη είναι ένας συνηθισμένος τρόπος για να τις δημιουργήσετε ξανά μετά την ανάπτυξη μιας αποθήκης. Γράψτε το σενάριο ώστε να μπορεί να εκτελείται σε κάθε ανάπτυξη.

Το παρακάτω δείγμα δημιουργεί έναν προσαρμοσμένο ρόλο βάσης δεδομένων με όνομα DataReaders και εκχωρεί SELECT δικαιώματα στο 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

Σημείωμα

Fabric αποθήκη δεδομένων δεν υποστηρίζει όλες τις δηλώσειςTransact-SQL που είναι διαθέσιμες στο SQL Server. Βεβαιωθείτε ότι οι δηλώσεις στα σενάρια σας υποστηρίζονται σε Fabric αποθήκη δεδομένων.

Ρύθμιση παραμέτρων δεσμών ενεργειών πριν και μετά την ανάπτυξη στην πύλη Fabric

Στην πύλη Fabric, ορίστε ένα υπάρχον κοινόχρηστο ερώτημα ως δέσμη ενεργειών πριν ή μετά την ανάπτυξη. Μπορείτε να το κάνετε αυτό από την Εξερεύνηση αντικειμένων ή από τις Ρυθμίσεις του είδους αποθήκης.

Δεν μπορείτε να ορίσετε ένα κοινόχρηστο ερώτημα ως δέσμη ενεργειών πριν και μετά την ανάπτυξη ταυτόχρονα.

Από το Εξερεύνηση αντικειμένων

  1. Στον επεξεργαστή αποθήκης, αναπτύξτε το φάκελο Queries στο Εξερεύνηση αντικειμένων.
  2. Κάντε δεξί κλικ στο κοινόχρηστο ερώτημα που θέλετε να χρησιμοποιήσετε.
    • Εάν είναι απαραίτητο, μετακινήστε ένα ερώτημα από την περιοχή Τα ερωτήματά μου σε ένα κοινόχρηστο ερώτημα.
  3. Επιλέξτε Ορισμός δεσμών ενεργειών ανάπτυξης. Αυτή η ενέργεια σάς μεταφέρει στο τμήμα παραθύρου ρυθμίσεων στοιχείων.
  4. Στα πεδία Δέσμη ενεργειών πριν από την ανάπτυξη και Δέσμη ενεργειών μετά την ανάπτυξη , επιλέξτε Επιλογή δέσμης ενεργειών.
  5. Επιλέξτε Ορισμός ερωτήματος ως δέσμης ενεργειών πριν/μετά την ανάπτυξη και, στη συνέχεια, επιλέξτε ένα κοινόχρηστο ερώτημα για κάθε ένα. Κάθε αναπτυσσόμενο μενού παραθέτει όλα τα κοινόχρηστα ερωτήματα στην αποθήκη.

Από τις ρυθμίσεις στοιχείων

  1. Ανοίξτε τις Ρυθμίσεις της αποθήκης.
  2. Μεταβείτε στην ενότητα CI/CD .
  3. Στα πεδία Δέσμη ενεργειών πριν από την ανάπτυξη και Δέσμη ενεργειών μετά την ανάπτυξη , επιλέξτε Επιλογή δέσμης ενεργειών.
  4. Επιλέξτε Ορισμός ερωτήματος ως δέσμης ενεργειών πριν/μετά την ανάπτυξη και, στη συνέχεια, επιλέξτε ένα κοινόχρηστο ερώτημα για κάθε ένα. Κάθε αναπτυσσόμενο μενού παραθέτει όλα τα κοινόχρηστα ερωτήματα στην αποθήκη.

Οι επιλογές που κάνετε αποθηκεύονται ως μεταδεδομένα σε επίπεδο αποθήκης και διατηρούνται συγχρονισμένες μεταξύ του Εξερεύνηση αντικειμένων και των Ρυθμίσεων είδους.

Πώς συμπεριφέρονται οι δέσμες ενεργειών πριν και μετά την ανάπτυξη με την ανάπτυξη

Με ενσωμάτωση Git

Όταν συνδέουμε έναν χώρο εργασίας σε ένα αποθετήριο Git, οι προσδιορισμοί πριν και μετά την ανάπτυξη σειριοποιούνται στο αρχείο της αποθήκης .sqlproj κατά την υποβολή. Όταν ενημερώνουμε την αποθήκη από το Git, το Fabric εφαρμόζει τις αλλαγές στη δυναμική αποθήκη και εκτελεί τις δέσμες ενεργειών με τη σειρά:

  1. Η δέσμη ενεργειών πριν από την ανάπτυξη εκτελείται πριν από την εφαρμογή των αλλαγών σχήματος.
  2. Εφαρμόζεται το σχέδιο ανάπτυξης σχήματος.
  3. Η δέσμη ενεργειών μετά την ανάπτυξη εκτελείται μετά την ολοκλήρωση των αλλαγών σχήματος.

Ονομασίες μετ' επιστροφής μέσω του Git: η ρύθμιση παραμέτρων μιας δέσμης ενεργειών στην πύλη και η δέσμευσή της ή η συγγραφή της .sqlproj στον χώρο εργασίας και η ενημέρωση του χώρου εργασίας, παράγει ένα συνεπές αποτέλεσμα. Οι επαναλαμβανόμενες υποβολές και ενημερώσεις δεν αντιγράφουν ούτε χάνουν τη ρύθμιση παραμέτρων. Επειδή επιτρέπεται μόνο μία δέσμη ενεργειών πριν από την ανάπτυξη και μία δέσμη ενεργειών μετά την ανάπτυξη, μια ρύθμιση παραμέτρων που έχει συνταχθεί στο Git αντικαθιστά οποιαδήποτε υπάρχουσα ονομασία στην αποθήκη κατά την ενημέρωση.

Σημείωμα

Τα σενάρια πριν και μετά την ανάπτυξη απαιτούν την πιο πρόσφατη εμπειρία ελέγχου προέλευσης για πλήρη υποστήριξη ροής εργασιών Git. Σε χώρους εργασίας που δεν έχουν αναβαθμιστεί, τα μετα-δεδομένα δέσμης ενεργειών ανάπτυξης δεν συγχρονίζονται με τον έλεγχο προέλευσης και οι δέσμες ενεργειών ανάπτυξης δεν θα συμμετέχουν σε ροές εργασιών που βασίζονται στο Git.

Αυτός ο περιορισμός ισχύει μόνο για ροές εργασίας Git και δεν αποτελεί προϋπόθεση για διοχετεύσεις ανάπτυξης (ALM).

Με αγωγούς ανάπτυξης

Οι διοχετεύσεις ανάπτυξης χρησιμοποιούν τις ονομασίες πριν και μετά την ανάπτυξη κατά την προώθηση μιας αποθήκης στα στάδια ανάπτυξης, δοκιμής και παραγωγής . Οι καθορισμένες δέσμες ενεργειών εκτελούνται ντετερμινιστικά σε κάθε περιβάλλον προορισμού, ώστε να μπορείτε να τις χρησιμοποιήσετε για να εφαρμόσετε τη ρύθμιση περιβάλλοντος ή για να εφαρμόσετε ξανά την ασφάλεια SQL καθώς το περιεχόμενο μετακινείται μεταξύ των σταδίων.

Σε χώρους εργασίας χωρίς έλεγχο προέλευσης

Ο ορισμός του είδους αποθήκης περιλαμβάνει τους προσδιορισμούς πριν και μετά την ανάπτυξη, ακόμη και όταν ο χώρος εργασίας δεν είναι συνδεδεμένος με τον έλεγχο προέλευσης. Η εξαγωγή της αποθήκης περιλαμβάνει τη διαμόρφωση και η εισαγωγή της επαναφέρει τη διαμόρφωση ανέπαφη.

Σύνταξη δεσμών ενεργειών πριν και μετά την ανάπτυξη σε ένα έργο βάσης δεδομένων SQL

Αντί για την πύλη Fabric, μπορείτε να συντάξετε δέσμες ενεργειών πριν και μετά την ανάπτυξη απευθείας στο έργο βάσης δεδομένων SQL της αποθήκης, χρησιμοποιώντας την επέκταση SQL Database Projects στο Visual Studio Code ή την ενσωματωμένη εμπειρία έργων SQL στο SQL Server Management Studio. Η ρύθμιση παραμέτρων εμφανίζεται στην πύλη Fabric - τόσο στην Εξερεύνηση αντικειμένων όσο και στις Ρυθμίσεις στοιχείων - μετά την επόμενη ενημέρωση του Git.

κώδικας Visual Studio

  1. Εγκαταστήστε την επέκταση SQL Database Projects στο Visual Studio Code.
  2. Ανοίξτε το έργο βάσης δεδομένων SQL για την αποθήκη σας. Εάν ο χώρος εργασίας σας είναι συνδεδεμένος στο Git, κλωνοποιήστε το αποθετήριο δεδομένων και, στη συνέχεια, ανοίξτε τον φάκελο έργου αποθήκης.
  3. Στην προβολή Έργα βάσης δεδομένων , κάντε δεξί κλικ στον κόμβο του έργου και επιλέξτε Προσθήκη δέσμης ενεργειών πριν από την ανάπτυξη ή Προσθήκη δέσμης ενεργειών μετά την ανάπτυξη.
  4. Δώστε ένα όνομα δέσμης ενεργειών χωρίς την επέκταση αρχείου. Το αρχείο σεναρίου προστίθεται στο έργο και ανοίγει στο πρόγραμμα επεξεργασίας.
  5. Προσθέστε το Transact-SQL σας στο σενάριο και αποθηκεύστε το αρχείο. Βεβαιωθείτε ότι το αρχείο είναι αποθηκευμένο στον .sharedqueries φάκελο για την επόμενη ενημέρωση του Git.
  6. Δεσμεύστε και προωθήστε τις αλλαγές στο αποθετήριο Git και, στη συνέχεια, ενημερώστε τον χώρο εργασίας από το στοιχείο ελέγχου προέλευσης για να εφαρμόσετε τη διαμόρφωση.

SQL Server Management Studio

  1. Χρησιμοποιήστε το SQL Server Management Studio 22 ή νεότερη έκδοση, το οποίο περιλαμβάνει την εμπειρία SQL Database Projects.
  2. Ανοίξτε το έργο βάσης δεδομένων SQL για την αποθήκη σας.
  3. Στο εξερεύνηση λύσεων, κάντε δεξί κλικ στον κόμβο του έργου και επιλέξτε Προσθήκη>δέσμης ενεργειών. Επιλέξτε Δέσμη ενεργειών πριν από την ανάπτυξη ή Δέσμη ενεργειών μετά την ανάπτυξη.
  4. Το αρχείο δέσμης ενεργειών προστίθεται στο έργο και ανοίγει στο πρόγραμμα επεξεργασίας ερωτημάτων.
  5. Προσθέστε το Transact-SQL σας στο σενάριο και αποθηκεύστε το αρχείο. Βεβαιωθείτε ότι έχετε αποθηκεύσει το αρχείο στον .sharedqueries φάκελο για την επόμενη ενημέρωση του Git.
  6. Δεσμεύστε και προωθήστε τις αλλαγές στο αποθετήριο Git και, στη συνέχεια, ενημερώστε τον χώρο εργασίας από το στοιχείο ελέγχου προέλευσης για να εφαρμόσετε τη διαμόρφωση.

Επεξεργαστείτε απευθείας το αρχείο έργου

Σε οποιοδήποτε εργαλείο, μπορείτε να ορίσετε ένα σενάριο επεξεργάζοντας το .sqlproj αρχείο και προσθέτοντας ένα μεμονωμένο PreDeploy ή PostDeploy ένα στοιχείο σε ένα ItemGroupαρχείο :

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

Μετεγκατάσταση από υπάρχοντα έργα SQL

Εάν μετεγκαταστήσετε ένα .sqlproj από το SQL Server Data Tools (SSDT) ή το Visual Studio που περιέχει <PreDeploy> ήδη καταχωρήσεις<PostDeploy>, η διαδικασία εισαγωγής αναγνωρίζει και αντιστοιχίζει αυτές τις καταχωρήσεις στη ρύθμιση παραμέτρων πριν και μετά την ανάπτυξη του Fabric. Επειδή το Fabric υποστηρίζει μόνο μία δέσμη ενεργειών πριν από την ανάπτυξη και μία δέσμη ενεργειών μετά την ανάπτυξη, βεβαιωθείτε ότι το έργο περιέχει το πολύ μία καταχώρηση από κάθε τύπο πριν από την εισαγωγή.

Ζητήματα προς εξέταση και περιορισμοί

  • Μια αποθήκη υποστηρίζει μόνο ένα σενάριο πριν από την ανάπτυξη και ένα μόνο σενάριο μετά την ανάπτυξη. Δεν υποστηρίζει πολλά αρχεία ανά σενάριο.
  • Δεν μπορείτε να ορίσετε το ίδιο κοινόχρηστο ερώτημα με τη δέσμη ενεργειών πριν και μετά την ανάπτυξη.
  • Εάν διαγράψετε ένα κοινόχρηστο ερώτημα που έχει οριστεί ως δέσμη ενεργειών πριν ή μετά την ανάπτυξη, ο αντίστοιχος χαρακτηρισμός διαγράφεται αυτόματα.
  • Εάν αλλάξετε ένα κοινόχρηστο ερώτημα που έχει οριστεί ως δέσμη ενεργειών πριν ή μετά την ανάπτυξη σε ερώτημα χρήστη, ο αντίστοιχος χαρακτηρισμός καταργείται αυτόματα.
  • Τα σενάρια πριν και μετά την ανάπτυξη εκτελούνται σε κάθε ανάπτυξη αποθήκης. Τα σενάρια Transact-SQL θα πρέπει να είναι ανίσχυρα, έτσι ώστε οι επαναλαμβανόμενες εκτελέσεις να μην αποτυγχάνουν ή να δημιουργούν διπλότυπα αντικείμενα.
  • Οι δέσμες ενεργειών πριν και μετά την ανάπτυξη δεν επικυρώνονται σε σχέση με το μοντέλο βάσης δεδομένων κατά το χρόνο κατασκευής. Τα σφάλματα στις δέσμες ενεργειών εμφανίζονται κατά το χρόνο ανάπτυξης και μια αποτυχία δέσμης ενεργειών διακόπτει την ανάπτυξη.
  • Μπορείτε να χρησιμοποιήσετε μόνοTransact-SQL που υποστηρίζεται σε Fabric αποθήκη δεδομένων.
  • Η ταυτότητα που εκτελεί την ανάπτυξη πρέπει να έχει τα δικαιώματα που απαιτούνται για την εκτέλεση του περιεχομένου της δέσμης ενεργειών.