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
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Veritabanı ve SQL projesi arasındaki nesne tanımı farklarını anlamak, devam eden geliştirme veya regresyon sorunlarını giderme de dahil olmak üzere veritabanınızın ve projenizin durumu hakkında değerli içgörüler sağlayabilir. SQL projeleri arasında farkları görselleştirmeye, veritabanını güncelleştirmek için gereken değişiklikleri analiz etmeye, değişiklikleri veritabanından SQL proje dosya kümesine aktarmaya ve veritabanını projeyle eşleşecek şekilde güncelleştirmek için yürütülecek T-SQL betiklerini gözden geçirmeye yönelik araçlar bulunur.
Bu makalede, farklı yaklaşımlar kullanarak veritabanı ve SQL projesini karşılaştırma yöntemleri inceleniyor:
- Veritabanları ve/veya projeler arasındaki farkları görselleştirmek için şema karşılaştırmasını kullanabilirsiniz. Bu karşılaştırma, veritabanı ve proje arasında eşitlenmesi gereken değişiklikleri belirlemenize yardımcı olabilir.
- Veritabanını güncelleştirmek için gereken değişiklikleri özetlemek ve gözden geçirmeleri otomatikleştirmek için dağıtım raporu kullanabilirsiniz.
- Veritabanındaki değişiklikleri SQL proje dosya kümesine aktarmak için şema karşılaştırmasını veya SqlPackage ayıklamasını kullanabilirsiniz.
- SqlPackage dağıtım betiğini veya şema karşılaştırmasını kullanarak veritabanını projeyle eşleşecek şekilde güncelleştirmek üzere yürütülen T-SQL deyimlerini gözden geçirebilirsiniz .
Şema karşılaştırması: farkları görselleştirme
Prerequisites
- Visual Studio 2022 Community, Professional veya Enterprise sürümü
- Visual Studio 2022'de yüklü SQL Server Veri Araçları (SSDT)
Visual Studio'daki SDK tarzı SQL projeleri önizlemesinde grafiksel şema karşılaştırması henüz mevcut değil. Şemaları karşılaştırmak için Azure Data Studio veya Visual Studio kullanın.
Şema karşılaştırması için Visual Studio gibi bir grafik aracı veya Visual Studio Code için MSSQL uzantısı gerekir.
Summary
Şema karşılaştırması, veritabanı ve proje arasındaki farkları anlamak için görsel olarak en zengin arabirimi sağlar. Şema karşılaştırmasının önemli bir özelliği, karşılaştırmanın yön yönünün geri alınamaz olmasıdır. Sonuç olarak, bir projeden veritabanına dağıtılacak değişiklikleri veya bir veritabanından projeye eklenecek değişiklikleri anlamak için şema karşılaştırmasını kullanabilirsiniz. Tablolar, görünümler, saklı yordamlar ve işlevler gibi nesne tanımlarındaki farkları belirlemek için şema karşılaştırmasını kullanabilirsiniz.
Değişiklikleri veritabanına veya projeye uygulamak için tüm fark kümesi veya seçili bir alt küme kullanılabilir. Şema karşılaştırması, çalıştırıldığında değişiklikleri veritabanına etkili bir şekilde uygulayan bir dağıtım betiği de oluşturabilir.
Şema karşılaştırması hakkında daha fazla bilgi için bkz. Şema karşılaştırmaya genel bakış.
Raporu dağıtma: değişiklikleri gözden geçirme
Raporları dağıtma için SqlPackage CLI gerekir.
- .NET 8 SDK
- SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
Summary
Dağıtım raporu, veritabanını projeyle eşleşecek şekilde güncelleştirmek için gereken değişikliklerin özetini sağlar. SqlPackage CLI, bir kaynak modeli (SQL projesi derleme yapıtı veya veritabanı) hedef veritabanıyla karşılaştırarak bir .dacpac. Örneğin, aşağıdaki komut adlı MyDatabasebir SQL projesinden adlı MyProject veritabanı için bir dağıtım raporu oluşturur:
dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml
Üretilen XML, bir veritabanı dağıtımı çalıştırılırsa gerçekleştirilecek işlemleri özetleyen, dağıtım planının basitleştirilmiş bir biçimidir. Aşağıdaki işlem listesi kapsamlı değildir:
CreateAlterDropRefreshUnbindSchemaBindingUnbindFulltextIndexTableDataMotionSPRenameEnableChangeTrackingDatabaseDisableChangeTrackingDatabase
Dağıtım raporu bir metin düzenleyicisinde veya Visual Studio'da gözden geçirilebilir ve aşağıdakine benzer olacaktır:
<?xml version="1.0" encoding="utf-8"?>
<DeploymentReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02">
<Alerts />
<Operations>
<Operation Name="Create">
<Item Value="[CO].[Products].[IX_Products_CategorySlug]" Type="SqlIndex" />
</Operation>
<Operation Name="Alter">
<Item Value="[CO].[Brands]" Type="SqlTable" />
<Item Value="[CO].[AddProductImage]" Type="SqlProcedure" />
</Operation>
<Operation Name="Refresh">
<Item Value="[CO].[SelectStarView]" Type="SqlView" />
</Operation>
</Operations>
</DeploymentReport>
Dağıtım raporu, değişiklikleri gözden geçirmek ve veri hareketi veya kümelenmiş dizin oluşturma/bırakma gibi olası yüksek etki olaylarını izlemek için kullanılabilir. Bu olaylar dağıtım raporunda öğesinin Alerts altında listelenir.
Rapor XML'sini dağıtma işleminin avantajlarından biri, veritabanını güncelleştirmek için gereken değişikliklerin gözden geçirilmesini otomatikleştirmek için kullanılabilmesidir. XML ayrıştırılabilir ve rapor oluşturmak veya listelenen işlemlere veya nesne adlarına göre uyarıları tetikleme amacıyla kullanılabilir.
Veritabanından değişiklikleri içeri aktarma
Şema karşılaştırma bölümünde belirtildiği gibi, şema karşılaştırması veritabanındaki değişiklikleri SQL proje dosya kümesine uygulamak için kullanılabilir. Bir SQL projesine değişiklikleri uygulamak, doğrudan içinde etkin olarak geliştirilmiş bir veritabanınız olduğunda ve kaynak denetimindeki veritabanı nesnelerini yönetmek için bir SQL projesi kullanıldığında yaygın bir senaryodur. Bu işlemi Visual Studio veya Azure Data Studio aracılığıyla el ile tamamlamak, özellikle veritabanında çok sayıda nesne veya düzensiz değişiklik olduğunda zaman alabilir. Bu bölümde, bir veritabanından SQL proje dosya kümesine nesne tanımlarının ayıklanması işleminin nasıl otomatikleştirebileceğimizi gözden geçireceğiz.
Prerequisites
Otomasyona odaklanarak sqlpackage CLI'yi kullanarak veritabanından SQL proje dosya kümesine nesne tanımlarını ayıklarız. Microsoft.Build.Sql.Templates .NET şablonları, isteğe bağlı bir adım olan SQL proje dosyası oluşturmak için kullanılır.
- .NET 8 SDK
- SqlPackage CLI
- Microsoft.Build.Sql.Templates .NET şablonlarını
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Summary
SqlPackage ayıklama komutu bir kaynak veritabanı alır ve dosya olarak veya SQL betikleri kümesi olarak .dacpac bir çıkış veritabanı modeli oluşturur.
SqlPackage varsayılan olarak bir .dacpac dosya oluşturmak için kullanılır, ancak /p:ExtractTarget= özelliği bir SQL betikleri kümesi belirtmek için kullanılabilir. Aşağıdaki komut, veritabanını MyDatabase klasöründeki MyDatabaseProjectbir SQL proje dosyası kümesine ayıklar:
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
Bir klasör kaynak denetimi altında olduğunda, ayıklanan nesne tanımları kaynak denetim araçlarındaki farkları gösterir. SqlPackage kullanarak dosyaları oluşturabilir ve kaynak denetimindeki farkları denetleyerek, değişiklikleri veritabanından SQL proje dosya kümesine aktarma işlemini otomatikleştirebilirsiniz.
Üç komut serisinde, önceki dosya kümesini kaldırabilir, veritabanını ayıklayabilir ve kaynak denetimi araçlarındaki farkları denetleyebiliriz:
rm -rf MyDatabaseProject
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
git status --porcelain | wc -l
Çıktımız, en son SqlPackage ayıklaması tarafından değiştirilen dosyaların sayısıdır. Komutun git status çıkışı diğer otomasyon adımlarını tetikleme amacıyla kullanılabilir. Bu dosya kümesini bir SQL projesi olarak kullanmak istiyorsak, klasöründe MyDatabaseProjectbir SQL proje dosyası oluşturmak için Microsoft.Build.Sql.Templates .NET şablonlarını kullanabiliriz:
dotnet new sqlproj -n MyDatabaseProject -o MyDatabaseProject
Dağıtım T-SQL betiklerini gözden geçirme
Şema karşılaştırma bölümünde belirtildiği gibi, bir veritabanını sql projesiyle eşleşecek şekilde güncelleştirmek için gereken T-SQL betiklerini oluşturmak için şema karşılaştırması kullanılabilir. Bu bölümde, SqlPackage'ın bir veritabanını bir SQL projesiyle eşleşecek şekilde güncelleştirmek için gerekli olan T-SQL betiklerinin oluşturulmasını otomatikleştirmeyi ve gözden geçirme ve onay için işlem hattı yapıtı olarak depolanmalarını sağlamayı gözden geçireceğiz.
Prerequisites
- .NET 8 SDK
- SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
Summary
SqlPackage ile SQL projesi dağıtımı çalıştırmak yayımlama eylemini kullanır, ancak yürütülen T-SQL betiklerini gözden geçirmek istiyorsak betik eylemini kullanabiliriz. Aşağıdaki komut, adlı veritabanını adlı MyDatabase sql projesiyle MyProjecteşleşecek şekilde güncelleştirmek için gereken T-SQL betiklerini oluşturur:
dotnet build MyProject.sqlproj
sqlpackage /Action:Script /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /DeployScriptPath:Deployment.sql