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.
Overview
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.
Validation
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.
Deployment
.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 stilindeki projeleri temel alır ve VS Code için SQL Veritabanı Projeleri uzantısı ve Doku tümleşik kaynak denetimindeki SQL veritabanı tarafından kullanılan biçimdir. Microsoft.Build.Sql projeleri, MSBuild (.NET Framework) temelinde özgün SQL proje biçiminin yerini alıyor.
Uyarı
Visual Studio 2026 yalnızca özgün SQL proje biçimini destekler. SDK stili SQL projeleri Visual Studio 2022'de önizleme aşamasındadır ve genel olarak VS Code'da kullanılabilir. SQL projeleri araçları hakkında daha fazla bilgi edinin.
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, hem özgün hem de SDK stili SQL projelerinde desteklenen ancak .NET Framework gerektiren SQLCLR nesneleri için destektir. SQLCLR nesneleri içeren özgün bir SQL projesi SDK stilinde bir projeye dönüştürülebilir, ancak proje, proje derlemesi için .NET yerine .NET Framework gerektirir. 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