Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlara uygulanır:✅ Warehouse in Microsoft Fabric
Important
Bu özellik önizleme aşamasındadır.
Dağıtım öncesi ve dağıtım sonrası betikleri, Fabric'da bir ambar dağıtmanın bir parçası olarak özel Transact-SQL komutları çalıştırmanıza olanak sağlar. Verileri temizlemek, tohum başvuru verilerini temizlemek veya ambar şemasında belirtilmeyen SQL güvenliğini uygulamak için dağıtım öncesi ve dağıtım sonrası betikleri kullanın.
Fabric Veri Ambarında, dağıtım öncesi veya dağıtım sonrası betik, paylaşılan bir SQL sorgusudur. Bu betikleri bir SQL veritabanı projesinde yazabilir ve Fabric portalından atayabilirsiniz. Bu tanımlama, ambar düzeyinde meta verisi olarak depolanır ve ambarın .sqlproj dosyasının bir parçası olarak kaynak denetimine işlenir; böylece elle yeniden uygulanmasına gerek kalmadan Git ve dağıtım işlem hatları boyunca korunur.
Bu makalede, dağıtım öncesi ve dağıtım sonrası betiklerin ne olduğu, Fabric portalında nasıl yapılandıracakları, kaynak denetimi ve dağıtım işlem hatlarıyla nasıl davrandıkları ve bunları Visual Studio Code ve SQL Server Management Studio(SSMS) içinde nasıl yazacakları açıklanmaktadır.
Important
Yayımlamadan önce her zaman dağıtım betiklerini ve ayarlarını gözden geçirin. İstenmeyen veri kaybını önlemek için önce geliştirme ve test ortamlarında test edin.
Dağıtım öncesi ve dağıtım sonrası betikleri nelerdir?
Bir çalışma alanını kaynak kontrolüne bağladığınızda, her depo bir SQL veritabanı projesi olarak görünür: depo şemasını oluşturan SQL nesnelerinin (tablolar, görünümler, depolanmış prosedürler ve fonksiyonlar) kaynak kontrollü bir betikidir. Her nesne, .sql gibi veri tanımlama dili (DDL) söz dizimini içeren bir CREATE TABLE dosyası olarak depolanır. Nesneler şemanın istenen durumunu açıklar ve dağıtım işlemi istenen durumu hedef ambarla karşılaştırır ve hedefin projeyle eşleşmesi için nesneleri oluşturan, değiştiren veya düşüren bir değişiklik T-SQL betiği oluşturur.
Dağıtım öncesi ve dağıtım sonrası komut dosyaları, bu süreci şema dağıtımından önce ve sonra çalışan Transact-SQL ile genişletir:
- Şema dağıtım planı uygulanmadan önce bir dağıtım öncesi betik çalıştırılır.
- Dağıtım sonrası betik, şema dağıtım planı tamamlandıktan sonra çalışır.
Dağıtım öncesi veya dağıtım sonrası betik, ambarın Sorgular klasörü altında saklanan paylaşılan sorgulardan biridir. Ambar en fazla bir dağıtım öncesi betiği ve bir dağıtım sonrası betiği destekler. Tanımlama, betik içeriğini çoğaltmak yerine ambar düzeyi meta verisi olarak depolanır; bu nedenle ihmal edilebilir düzeyde ek depolama yükü getirir.
Belirlenen her betik, veri ambarı her dağıtıldığında çalıştığından, Transact-SQL’i idempotent olacak şekilde oluşturun (yani, tekrar tekrar güvenle çalıştırılabilir).
Tip
Bir script idempotent olduğunda, sorun yaratmadan birden fazla çalıştırabilirsiniz. Birden fazla veritabanına statülerini önceden belirlemeye gerek kalmadan dağıtabilirsiniz.
Yaygın kullanım örnekleri
- Başvuru ve statik veri yönetimi: Şema dağıtıldıktan sonra arama, yapılandırma veya başvuru tablolarından satır ekleme, güncelleştirme veya silme.
- Veri temizleme: Şema değişiklikleri uygulanmadan önce veya uygulandıktan sonra eski veya geçici verileri kaldırın.
- Ortam kurulumu: Geliştirme, test ve üretim ortamları arasında farklılık gösteren ayarları uygulayın veya durumu başlatın.
- Meta veri odaklı işlem hattının başlatılması: Sonraki işlem hattı adımlarının gerektirdiği veri ambarı durumunu hazırlayın.
-
SQL güvenliği: Ambar tablosu verileri ve roller, kullanıcılar ve
GRANT/DENYizinler gibi SQL güvenlik özellikleri SQL veritabanı projesine dahil değildir. Test ve üretim ortamları arasındaki farklar dahil olmak üzere dağıtımdan sonra bu nesneleri yeniden oluşturmak için dağıtım sonrası betiği kullanın. Örnekler için bkz. SQL güvenliği için örnek dağıtım sonrası betiği.
SQL proje dosyası yapısı ve söz dizimi
Bir veri ambarı SQL projesi, proje dosyasında (.sqlproj) bulunan dağıtım öncesi ve dağıtım sonrası betiklere, PreDeploy ve PostDeploy öğe türlerini kullanarak başvurur. Her giriş, projedeki tek bir paylaşılan sorgu dosyasını gösterir.
Aşağıdaki örnekte dağıtım öncesi betik ve pre-deployment.sql dağıtım sonrası betiği olarak gösterilmektedirpost-deployment.sql:
<ItemGroup>
<PreDeploy Include="pre-deployment.sql" />
<PostDeploy Include="post-deployment.sql" />
</ItemGroup>
Important
Fabric Data Warehouse, dağıtım öncesi betiği için yalnızca tek bir dosyayı ve dağıtım sonrası betiği için tek bir dosyayı destekler. Birden çok dosyadan betik oluşturma (örneğin, diğer dosyalara başvurmak için SQLCMD :r komutunu kullanarak) desteklenmez.
.sqlproj birden çok dağıtım öncesi veya dağıtım sonrası girdisi içeriyorsa Git güncelleştirmesi başarısız olur.
SQL güvenliği için dağıtım sonrası betiği örneği
SQL güvenlik özellikleri SQL veritabanı projesinde yer almadığından, bir veri ambarı dağıtıldıktan sonra bunları yeniden oluşturmak için dağıtım sonrası bir betik yaygın olarak kullanılan bir yöntemdir. Her dağıtımda çalışabilmesi için betiği yazın.
Aşağıdaki örnek, DataReaders adlı özel bir veritabanı rolü oluşturur ve SELECT şemasına dbo izinlerini verir.
-- 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, SQL Server'da kullanılabilen herTransact-SQL deyimini desteklemez. Betiklerinizdeki deyimlerin Fabric Data Warehouse'da desteklendiğinden emin olun.
Fabric portalında dağıtım öncesi ve dağıtım sonrası betikleri yapılandırma
Fabric portalında, mevcut bir paylaşılan sorguyu dağıtım öncesi veya dağıtım sonrası betiği olarak belirleyin. Bunu Nesne Gezgini veya ambar öğesinin Ayarlar bölümünden yapabilirsiniz.
Paylaşılan sorguyu aynı anda hem dağıtım öncesi hem de dağıtım sonrası betiği olarak tanımlayamazsınız.
Nesne Gezgini'nden
- Ambar düzenleyicisinde, Nesne Gezgini'dakiSorgular klasörünü genişletin.
- Kullanmak istediğiniz paylaşılan sorguya sağ tıklayın.
- Gerekirse, bir sorguyu Sorgularım'dan paylaşılan bir sorguya taşıyın.
- Dağıtım betiklerini ayarla'yı seçin. Bu eylem sizi öğe ayarları bölmesine götürür.
- Pre-deployment script ve Post-deployment script alanlarında Choose script seçeneğini belirleyin.
- Bir sorguyu dağıtım öncesi/sonrası betik olarak ayarlayın ve ardından her biri için paylaşılan bir sorgu seçin. Her açılır menü, depodaki tüm paylaşılan sorguları listeler.
Öğe ayarlarından
- Deponun ayarlarını açın.
- CI/CD bölümüne gidin.
- Pre-deployment script ve Post-deployment script alanlarında Komut dosyası seç seçeneğini belirleyin.
- Bir sorguyu dağıtım öncesi/sonrası betik olarak ayarlayın ve ardından her biri için paylaşılan bir sorgu seçin. Her açılır menü, depodaki tüm paylaşılan sorguları listeler.
Yaptığınız seçimler ambar düzeyinde meta veriler olarak depolanır ve Nesne Gezgini ile öğe Ayarları arasında eşitlenmiş olarak tutulur.
Dağıtım öncesi ve dağıtım sonrası betikleri dağıtım sırasında nasıl çalışır?
Git entegrasyonuyla
Çalışma alanını bir Git deposuna bağladığınızda, dağıtım öncesi ve dağıtım sonrası atamaları, commit sırasında veri ambarının .sqlproj dosyasına serileştirilir. Git'ten ambarı güncelleştirdiğinizde Fabric değişiklikleri canlı ambara uygular ve betikleri sırayla çalıştırır:
- Dağıtım öncesi betik, şema değişiklikleri uygulanmadan önce çalışır.
- Şema dağıtım planı uygulanır.
- Dağıtım sonrası betik, şema değişiklikleri tamamlandıktan sonra çalışır.
Git üzerinden gidiş dönüş atamaları: portalda bir betiği yapılandırma ve işleme veya çalışma alanına yazma .sqlproj ve çalışma alanını güncelleştirme tutarlı bir sonuç verir. Yinelenen işlemeler ve güncelleştirmeler yapılandırmayı yinelemez veya kaybetmez. Yalnızca bir dağıtım öncesi ve bir dağıtım sonrası betiğine izin verildiğinden, Git'te yazılan bir yapılandırma, güncelleştirmede ambardaki mevcut tüm atamaların yerini alır.
Dağıtım işlem hatları ile
Dağıtım boru hatları, bir depoyu Geliştirme, Test ve Üretim aşamalarında tanıtırken ön ve dağıtım sonrası tanımlamaları kullanır. Belirlenen betikler her hedef ortamda belirleyici bir şekilde yürütülür, böylece ortam kurulumu uygulamak veya içerik aşamalar arasında ilerledikçe SQL güvenliğini yeniden uygulamak için bunları kullanabilirsiniz.
Kaynak denetimi olmayan çalışma alanlarında
Ambar öğesi tanımı, çalışma alanı kaynak denetimine bağlı olmasa bile dağıtım öncesi ve dağıtım sonrası tanımlarını içerir. Ambarı dışarı aktarmak yapılandırmayı içerir ve içeri aktarmak yapılandırmayı olduğu gibi geri yükler.
SQL veritabanı projesinde dağıtım öncesi ve dağıtım sonrası betikleri yazma
Fabric portalı yerine, Visual Studio Code SQL Veritabanı Projeleri uzantısını veya SQL Server Management Studio tümleşik SQL projeleri deneyimini kullanarak doğrudan ambarın SQL veritabanı projesinde dağıtım öncesi ve dağıtım sonrası betikler yazabilirsiniz. Yapılandırma, sonraki Git güncelleştirmesinin ardından Fabric portalında (hem Nesne Gezgini hem de öğe Ayarları' nda) görünür.
Visual Studio Code
- Visual Studio Code’da SQL Veritabanı Projeleri uzantısını yükleyin.
- Ambarınız için SQL veritabanı projesini açın. Çalışma alanınız Git'e bağlıysa depoyu kopyalayın ve ambar projesi klasörünü açın.
- Veritabanı Projeleri görünümünde, proje düğümüne sağ tıklayın ve Dağıtım Öncesi Betik Ekle veya Dağıtım Sonrası Betik Ekle seçeneğini belirleyin.
- Dosya uzantısı olmadan bir script adı sağlayın. Betik dosyası projeye eklenir ve düzenleyicide açılır.
- Transact-SQL kodunuzu betiğe ekleyin ve dosyayı kaydedin. Bir sonraki Git güncellemesi için dosyanın klasörde kaydedildiğinden
.sharedqueriesemin olun. - Değişiklikleri işleyip Git deponuza gönderin, ardından yapılandırmayı uygulamak için kaynak denetiminden çalışma alanını güncelleştirin.
SQL Server Management Studio
- SQL Veritabanı Projeleri deneyimini içeren SQL Server Management Studio 22 veya üzerini kullanın.
- Ambarınız için SQL veritabanı projesini açın.
- Çözüm Gezgini'da proje düğümüne sağ tıklayın ve Ekle>Betik öğesini seçin. Dağıtım Öncesi Betiği veya Dağıtım Sonrası Betiği seçin.
- Betik dosyası projeye eklenir ve sorgu düzenleyicisinde açılır.
- Transact-SQL kodunuzu betiğe ekleyin ve dosyayı kaydedin. Dosyayı bir sonraki Git güncellemesi için klasöre kaydettiğinden
.sharedqueriesemin ol. - Değişiklikleri işleyip Git deponuza gönderin, ardından yapılandırmayı uygulamak için kaynak denetiminden çalışma alanını güncelleştirin.
Proje dosyasını doğrudan düzenleme
Herhangi bir araçta, .sqlproj dosyasını düzenleyip PreDeploy öğesine tek bir PostDeploy veya ItemGroup öğesi ekleyerek bir betik tanımlayabilirsiniz:
<ItemGroup>
<PreDeploy Include="./sharedqueries/pre-deployment.sql" />
<PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>
Mevcut SQL projelerinden geçiş
SQL Server Veri Araçları (SSDT) veya Visual Studio’dan, zaten <PostDeploy> ve .sqlproj girdilerini içeren bir <PreDeploy> geçirirseniz, içe aktarma işlemi bu girdileri tanır ve Fabric’in ön dağıtım ve dağıtım sonrası yapılandırmasıyla eşleştirir. Fabric yalnızca bir dağıtım öncesi ve bir dağıtım sonrası betiği desteklediği için, içeri aktarmadan önce projede her türden en fazla bir öğe bulunduğundan emin olun.
Dikkat edilmesi gerekenler ve sınırlamalar
- Ambar yalnızca tek bir dağıtım öncesi betiği ve tek bir dağıtım sonrası betiğini destekler. Betik başına birden çok dosyayı desteklemez.
- Hem dağıtım öncesi hem de dağıtım sonrası betiğiyle aynı paylaşılan sorguyu tanımlayamazsınız.
- Dağıtım öncesi veya dağıtım sonrası betiği olarak belirlenmiş paylaşılan bir sorguyu silerseniz ilgili belirleme otomatik olarak kaldırılır.
- Dağıtım öncesi veya dağıtım sonrası betiği olarak tanımlanmış paylaşılan bir sorguyu kullanıcı sorgusuna dönüştürürseniz, bu tanımlama otomatik olarak kaldırılır.
- Dağıtım öncesi ve sonrası komut dosyaları, her depo dağıtımında çalıştırılır. Transact-SQL betikleri, tekrar tekrar çalıştırıldığında hata vermeyecek veya yinelenen nesneler oluşturmayacak şekilde idempotent olmalıdır.
- Dağıtım öncesi ve dağıtım sonrası betikler, derleme sırasında veritabanı modeline göre doğrulanmaz. Betiklerdeki hatalar dağıtım zamanında ortaya çıkar ve bir betik hatası dağıtımı durdurur.
- Yalnızca Fabric Data Warehouse desteklenenTransact-SQL kullanabilirsiniz.
- Dağıtımı çalıştıran kimlik, betik içeriğini yürütmek için gereken izinlere sahip olmalıdır.