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.
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
Microsoft Fabric'te
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği SQL veritabanı
SQL veritabanı projesi, tablolar, saklı yordamlar veya işlevler gibi tek bir veritabanının şemasını oluşturan SQL nesnelerinin yerel bir gösterimidir. SQL veritabanı projesinin geliştirme döngüsü, veritabanı geliştirmenin geliştirme için en iyi yöntem olarak bilinen sürekli tümleştirme ve sürekli dağıtım (CI/CD) iş akışlarıyla tümleştirilmesini sağlar.
Genel bakış
SQL projeleri bildirim temelli T-SQL deyimlerini temel alır. SQL veritabanı proje kodunuzda her nesneyi bir kez oluşturursunuz. Bu nesneyle ilgili sütun ekleme veya veri türünü değiştirme gibi bir şeyi değiştirmeniz gerekiyorsa, nesneyi ilk ve tek kez bildiren tekil dosyayı değiştirirsiniz.
SQL veritabanı projesi oluşturulduğunda, çıkış yapıtı bir .dacpac
dosyasıdır. Yeni ve mevcut veritabanları, .dacpac
öğesinin bir hedef veritabanına yayımlanmasıyla .dacpac
içeriğiyle eşleşecek şekilde güncellenebilir.
SQL veritabanı projeleri, derleme işlemiyle bu dosya kümesine iki temel özellik ekleyen veritabanı kodunuz çerçevesindeki çerçeveyi oluşturur:
- SQL'in belirli bir sürümüne karşı nesneler ve söz dizimi arasında başvuruların doğrulanması
- Yeni veya mevcut veritabanlarına derleme bileşeninin dağıtımı
SQL veritabanı projelerinin işlevselliği, Microsoft.SqlServer.DacFx .NET kitaplığı tarafından sağlanır ve SQL geliştirme için birkaçaracında kullanıma sunulur. DacFx, dağıtım adımlarının değiştirilmesi ve kod analizi için özel kurallar oluşturma gibi birden çok genişletilebilirlik noktasına sahiptir. SQL projeleri için proje SDK'sı Microsoft.Build.Sql 'dur, yeni geliştirme için önerilir ve Azure Data Studio ile VS Code için SQL Veritabanı Projeleri uzantısı tarafından kullanılan biçimdir. Visual Studio'da SDK stili SQL projeleri için destek önizleme aşamasındadır.
Doğrulama
Bir SQL projesi oluşturulduğunda, nesneler arasındaki ilişkiler doğrulanır. Örneğin, görünüm tanımı SQL projesinde mevcut olmayan bir tablo veya sütun içeremez.
Ayrıca, bir SQL projesi .sqlproj
dosyasında "hedef platform" adlı bir özellik içerir. Bu bilgiler, derleme işlemi sırasında işlevlerin ve T-SQL söz diziminin bu SQL sürümünde mevcut olduğunu doğrulamak için kullanılır. Örneğin, SQL Server 2022'de eklenen JSON işlevleri Sql140 (SQL Server 2017) hedef platformuna ayarlanmış bir SQL projesinde kullanılamaz.
SQL projesi oluşturmak için komut satırından dotnet build komutunu çalıştırıyoruz. SQL projelerini (Azure Data Studio, VS Code ve Visual Studio) destekleyen grafik araçlarda, SQL projesini derlemek için bir menü öğesi vardır.
Derleme işleminin konsol çıkışı hatalar (derleme hatası) veya uyarılar içerebilir. Derleme uyarıları, nesne adlarında tutarsız büyük/küçük harf uyumsuzluğu ve diğerözelleştirilebilir en iyi uygulamaları içerebilir, ancak yapıda hata oluşturmaz.
Derleme işleminin yapıt çıkışı, .dacpac
klasöründe varsayılan ayarlara sahip bir derleme için bulunabilen bir bin/Debug
dosyasıdır.
Dağıtım
.dacpac
çıktı dosyası, güçlü, yeniden kullanılabilir ve deklaratif bir yapıttır. Bu dosyayla, veritabanı kodumuzu bir veritabanına uygulamak için SqlPackage'ı veya diğer araçlarını kullanabiliriz.
.dacpac
'ı dağıtmak için SqlPackage komutu, yayınla komutudur.
Örneğin, sqlpackage /Action:Publish /SourceFile:yourfile.dacpac /TargetConnectionString:{yourconnectionstring}
.
Yeni veritabanları
SqlPackage, yeni bir veritabanına dacpac yayımlarken her nesneyi doğru sırada oluşturmak için nesne ilişkilerine gider. Örneğin, SqlPackage, Table_B'nin Table_A'ya yabancı anahtarı olduğunda Table_A'yı Table_B'den önce oluşturur.
Özellikle her T-SQL bölümünü nesne ilişkilerine göre doğru sırada otomatik olarak yürüten SQL projelerini kullanabiliyorsanız, SQL betikleri klasörünün tamamını yürütmek istemezsiniz.
Mevcut veritabanları
Yeni veritabanlarına yayımlarken nesne hiyerarşisinde gezinmeye ek olarak, .dacpac
yayımlama işlemi, veritabanını güncelleştirmek için hangi adımları izlemesi gerektiğini belirlemeden önce kaynak .dacpac
ve hedef veritabanı arasındaki farkı da hesaplar. Örneğin, Table_C SQL projesinde bulunan veritabanında iki sütun eksikse ve StoredProcedure_A değiştirildiyse, SqlPackage kör bir şekilde bir grup nesne oluşturmaya çalışmak yerine bir ALTER TABLE
deyimi ve bir ALTER PROCEDURE
deyimi oluşturur.
Mevcut veritabanlarında yayımla komutu tarafından sağlanan esneklik tek bir veritabanıyla sınırlı değildir. Yüzlerce veritabanından oluşan bir filoyu yükseltirken olduğu gibi, bir .dacpac
birden çok kez dağıtılabilir.
Ne zaman kullanılır?
SQL veritabanı projeleri, veritabanı geliştirmeyi bir CI/CD iş akışıyla tümleştirmek isteyen ekipler için çok uygundur. SQL projelerinin bildirim temelli yapısı, veritabanı şeması için tek bir doğru kaynağı sağlar ve derleme ve yayımlama işlemi veritabanlarına değişiklik dağıtmak için yinelenebilir ve güvenilir bir yol sağlar.
SQL veritabanı projeleri, EF Core gibi bir nesne ilişkisel eşleyici (ORM) ile geliştirme de dahil olmak üzere veritabanı durumu için gerçek kaynağını izlemek için kullanılır. Veritabanını oluşturmak için kullanılan ORM'ye bakılmaksızın bir veritabanının şemasını sql projesine ayıklamak için grafik araç veya komut satırı kullanılabilir.
SQL veritabanı projeleri, Azure SQL Veritabanı ve Azure Synapse Analytics dahil olmak üzere SQL Server ve Azure SQL veritabanı ailesini destekler. İster uygulama ister veri ambarı geliştirin, VERITABANınızın şemasını yönetmek için SQL veritabanı projeleri kullanılabilir. SQL projeleri Visual Studio, VS Code ve Azure Data Studio'da araçlardan geliştirilebilir.
Özgün projeler ile SDK stili projeler karşılaştırması
Microsoft.Build.Sql SDK stili proje biçimi, .NET Core'da kullanıma sunulan yeni SDK stili projeleri temel alır ve Azure Data Studio ve VS Code için SQL Veritabanı Projeleri uzantısı tarafından kullanılan biçimdir. Microsoft.Build.Sql projeleri, MSBuild (.NET Framework) temelinde özgün SQL proje biçiminin yerini alıyor. Visual Studio'da SDK stili SQL projeleri için destek şu anda önizleme aşamasındadır ve hem özgün hem de SDK stilindeki proje biçimleri Visual Studio'da kullanılabilir.
SDK stilindeki projeler gelecekte desteklenecek biçim olduğundan, yeni geliştirme çalışmalarının Microsoft.Build.Sql projelerini kullanmayı göz önünde bulundurması gerekir. SDK stili proje biçimi daha esnektir ve özgün SQL projeleriyle kullanılamayan yeni özellikler içerir:
- .NET 8 desteği (platformlar arası)
- NuGet paketi, veritabanı referansları için'i referans alır.
- Projedeki .sql dosyaları için varsayılan globbing deseni
SDK stilindeki projeler özgün SQL projelerinden bir üst işlev kümesine sahiptir ve mevcut SQL projeleri, proje dosyasınındeğiştirilmesiyle SDK stili projelere dönüştürülebilir.
İşlev kapsamı için özel durum, .NET Framework gerektiren SQLCLR nesneleri için destektir. SQLCLR nesneleri içeren bir proje SDK stilinde bir projeye dönüştürülebilir, ancak proje .NET Framework gerektirir ve Windows üzerinde Visual Studio'da derlenmelidir. SQLCLR nesnesine sahip proje oluşturulduktan sonra, .dacpac
.NET ve .NET Framework üzerinde SqlPackage ile dağıtılabilir ve bir projede (aynı veritabanı veya aynı sunucu farklı veritabanı) .dacpac
başvurusu olarak kullanılabilir.
İlgili içerik
- Çevrimdışı Veritabanı Geliştirme Project-Oriented
- SQL Veritabanı Projeleri uzantısı
- SqlPackage
- SQL projeleri için CI/CD boru hatları örneği
- GitHub sql-action
- Azure DevOps SQL dağıtımları
- Veri katmanı uygulamalarına (DAC) genel bakış
- DacFx geri bildirim deposu
- SQL veritabanı projelerini kullanmaya başlama
- SQL Projesi Oluşturma ve Dağıtma Öğreticisi