Aracılığıyla paylaş


Özgün SQL projesini SDK stili projeye dönüştürme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Yeni BIR SDK stili SQL projesi oluşturmak hızlı bir görevdir. Ancak, mevcut SQL projeleriniz varsa, yeni özelliklerden yararlanmak için bunları SDK stili SQL projelerine dönüştürebilirsiniz.

Projeyi dönüştürdükten sonra SDK stilindeki projenin aşağıdaki gibi yeni özelliklerini kullanabilirsiniz:

  • çapraz platform yapı desteği
  • basitleştirilmiş proje dosya biçimi
  • paket referansları

Dönüştürmeyi dikkatle tamamlamak için şunları yapacağız:

  1. Özgün proje dosyasının yedeğini oluşturun.
  2. Karşılaştırma için özgün projeden bir .dacpac dosya oluşturun.
  3. Proje dosyasını SDK stilinde bir proje olarak değiştirin.
  4. Karşılaştırma için değiştirilen projeden bir .dacpac dosya oluşturun.
  5. .dacpac dosyalarının aynı olduğunu doğrulayın.

SDK stilindeki projeler Visual Studio'daki SQL Server Veri Araçları'nda (SSDT) desteklenmez. Dönüştürüldükten sonra, projeyi oluşturmak veya düzenlemek için aşağıdakilerden birini kullanmanız gerekir:

  • komut satırı
  • Visual Studio Code'da SQL Veritabanı Projeleri uzantısı
  • Azure Data Studio'da SQL Veritabanı Projeleri uzantısı
  • Visual Studio 2022'de SQL Server Veri Araçları, SDK stili (önizleme)

Note

SQL projenizin bu adımların ötesinde gerekli değişiklikleri genişleten özelleştirmeler içerdiğini fark edebilirsiniz. Bu makaleye ek olarak DacFx GitHub deposu , özgün SQL projesinden SDK stili SQL projelerine yükseltmek için gereken değişiklikleri anlamak için kullanılabilir.

Prerequisites

  • .NET 8 SDK

1. Adım: Özgün proje dosyasının yedeğini oluşturma

Projeyi dönüştürmeden önce özgün proje dosyasının yedeğini oluşturun. Bu şekilde, gerekirse özgün projeye geri dönebilirsiniz.

Dosya gezgininde, dönüştürmek istediğiniz proje için .sqlproj dosyasının bir kopyasını oluşturun ve dosya uzantısının sonuna .original ekleyin. Örneğin MyProject.sqlproj, MyProject.sqlproj.original olur.

2. Adım: Karşılaştırma için özgün projeden dosya .dacpac oluşturma

Visual Studio 2022'de projeyi açın. Dosya .sqlproj hala özgün biçimde olduğundan, dosyayı özgün SQL Server Veri Araçları'nda açarsınız.

Çözüm Gezgini'nde veritabanı düğümüne sağ tıklayıp Oluştur'a tıklayarak projeyi Visual Studio'da oluşturun.

Özgün projeden bir .dacpac dosya oluşturmak için Visual Studio'da özgün SQL Server Veri Araçları'nı (SSDT) kullanmanız gerekir. Özgün SQL Server Veri Araçları'nın yüklü olduğu proje dosyasını Visual Studio 2022'de açın.

Çözüm Gezgini'nde veritabanı düğümüne sağ tıklayıp Oluştur'a tıklayarak projeyi Visual Studio'da oluşturun.

VS Code veya Azure Data Studio'da proje klasörünü açın. VS Code veya Azure Data Studio'nun Veritabanı Projeleri görünümünde proje düğümüne sağ tıklayın ve Derlemeseçin.

SQL veritabanı projeleri, dotnet build komutu kullanılarak komut satırından oluşturulabilir.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Derleme işlemi, varsayılan olarak projenin .dacpac klasörüne bir bin\Debug dosyası oluşturur. Dosya gezginini .dacpac kullanarak derleme işlemi tarafından oluşturulan öğesini bulun ve olarak proje dizininin original_project.dacpacdışında yeni bir klasöre kopyalayın. Bu .dacpac dosyayı daha sonra dönüştürmemizi doğrulamak için karşılaştırma için kullanırız.

3. Adım: Proje dosyasını SDK stilinde bir proje olarak değiştirme

Proje dosyasını değiştirmek, el ile gerçekleştirilen ve en iyi şekilde metin düzenleyicisinde gerçekleştirilen bir işlemdir. .sqlproj Dosyayı bir metin düzenleyicisinde açın ve aşağıdaki değişiklikleri yapın:

Gerekli: SDK referansını ekleyin

Proje öğesinin içinde, Microsoft.Build.Sql'e ve aşağıdaki kod parçacığında Sdk'nin dahil olduğu en son sürüme başvurmak amacıyla bir https://www.nuget.org/packages/Microsoft.build.sql öğesi ekleyin.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
  <Sdk Name="Microsoft.Build.Sql" Version="#.#.#" />
...

Gerekli: Gereksiz derleme hedefi içeri aktarmalarını kaldırma

SQL projelerinin orijinal sürümleri, İçeri Aktarma deyimlerinde çeşitli derleme hedeflerine ve özelliklerine atıfta bulunur. <Import/> Benzersiz ve kasıtlı bir değişiklik olan açıkça eklediğiniz öğeler dışında, ile <Import ...>başlayan satırları kaldırın. örneğinizde .sqlprojvarsa kaldırılacak örnekler:

...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...

Gerekli: Özellikler klasörünü kaldırma

Özgün SQL projelerinde, çözüm gezginindeki proje özelliklerine erişimi temsil eden bir Properties klasör için bir giriş vardır. Bu öğenin proje dosyasından kaldırılması gerekir.

örneğinizde .sqlprojvarsa kaldırmak için:

<ItemGroup>
  <Folder Include="Properties" />
</ItemGroup>

Gerekli: Varsayılan olarak dahil edilen Derleme öğelerini kaldırın

Özgün SQL projeleri, proje dosyasındaki veritabanı nesnelerini açıkça öğe olarak .sql temsil eden tüm <Build Include="..." /> dosyaları listeler. SDK stili SQL projelerinde, proje klasör ağacındaki (.sql) tüm **/*.sql dosyalar varsayılan olarak dahil edilir, bu nedenle derleme performansı sorunlarını önlemek için bu dosyaların öğelerinin kaldırılması <Build Include="...." /> gerekir.

Proje dosyasından kaldırılması gereken satırlar, örneğin:

  <Build Include="SalesLT/Products.sql" />
  <Build Include="SalesLT/SalesLT.sql" />
  <Build Include="SalesLT/Categories.sql" />
  <Build Include="SalesLT/CategoriesProductCount.sql" />

<PreDeploy Include="..." /> veya <PostDeploy Include="..." /> öğelerini kaldırmamalısınız, çünkü bu düğümler söz konusu dosyalar için belirli bir davranışı dikte eder. Ayrıca, SQL proje klasör ağacında olmayan dosyaların öğelerini de kaldırmamalısınız <Build Include="..." /> .

İsteğe bağlı: SSDT başvurularını kaldırma

Özgün SQL Server Veri Araçları (SSDT), Visual Studio yüklemesini algılamak için proje dosyasında ek içerik gerektiriyor. SDK stili SQL projelerinde bu satırlar gereksizdir ve kaldırılabilir:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
    <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
    <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
    <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
  </PropertyGroup>

İsteğe bağlı: Varsayılan derleme ayarlarını kaldırma

Özgün SQL projeleri Yayın ve Hata Ayıklama derleme ayarları için iki büyük blok içerirken, SDK stili SQL projelerinde bu seçeneklerin varsayılanları SDK tarafından bilinir. Derleme ayarlarında özelleştirmeleriniz yoksa şu blokları kaldırmayı göz önünde bulundurun:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\Release\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\Debug\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

Proje özellikleri başvurusu, kullanılabilir özellikleri ve bunların varsayılanlarını listeler.

4. Adım: Çözüm dosyaları

Proje dosyanıza bir çözüm dosyasında (.sln) başvurulabilir. Bir çözüm dosyanız varsa, yeni SDK stili proje dosyasına başvurmak için dosyayı güncelleştirmeniz gerekir. Çözüm dosyanız yoksa bu bölümü atlayabilir ve 5. Adıma geçebilirsiniz.

1. Seçenek: Yeni çözüm dosyası oluşturma

Yalnızca SQL projesini içeren bir çözüm dosyası için, çözüm dosyasını kaldırmak ve SDK stili projeyle yeni bir çözüm dosyası oluşturmak daha kolaydır.

dotnet new sln --name MySolution
dotnet sln MySolution.sln add MyDatabaseProject\MyDatabaseProject.sqlproj

Seçenek 2: Çözüm dosyasını düzenleme

Bir çözüm dosyası birden çok proje içerdiğinde, çözüm dosyasını yeni SDK stili proje dosyasına başvuracak şekilde güncelleştirmeniz gerekir. Çözüm dosyasını bir metin düzenleyicisinde düzenleyebilir ve proje başvuruyu yeni SDK stili proje dosyasıyla değiştirebilirsiniz. Çözüm dosyasındaki proje başvurusu şu şekilde görünmelidir:

Project("{PROJECT_TYPE_GUID}") = "MyDatabaseProject", "MyDatabaseProject\MyDatabaseProject.sqlproj", "{PROJECT_GUID}"
EndProject

PROJECT_TYPE_GUID Microsoft.Build.Sql projesinin değeri ve 42EA0DBD-9CF1-443E-919E-BE9C484E4577PROJECT_GUID proje dosyası <ProjectGuid> öğesinde bulunan projenin benzersiz tanımlayıcısıdır. Projenizle birlikte bir çözüm dosyanız varsa, değerin PROJECT_GUID değiştirilmesi gerekmez ve özgün proje dosyasındakiyle aynı kalabilir. Değerin PROJECT_TYPE_GUID Microsoft.Build.Sql proje türü GUID olarak değiştirilmesi gerekir.

5. Adım: Karşılaştırma için değiştirilen projeden dosya .dacpac oluşturma

SQL projesi artık Visual Studio 2022 ile uyumlu değildir. Projeyi oluşturmak veya düzenlemek için şunlardan birini kullanmanız gerekir:

  • komut satırı
  • Visual Studio Code'da SQL Veritabanı Projeleri uzantısı
  • Azure Data Studio'da SQL Veritabanı Projeleri uzantısı
  • Visual Studio 2022'de SQL Server Veri Araçları, SDK stili (önizleme)

Proje dosyası artık SDK stilindedir, ancak Visual Studio 2022'de açmak için SQL Server Veri Araçları, SDK stilinde (önizleme) yüklü olmalıdır. PROJEYI VISUAL Studio 2022'de SQL Server Veri Araçları, SDK stili (önizleme) yüklü olarak açın.

VS Code veya Azure Data Studio'da proje klasörünü açın. VS Code veya Azure Data Studio'nun Veritabanı Projeleri görünümünde proje düğümüne sağ tıklayın ve Derlemeseçin.

SQL veritabanı projeleri, dotnet build komutu kullanılarak komut satırından oluşturulabilir.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Derleme işlemi, varsayılan olarak projenin .dacpac klasörüne bir bin\Debug dosyası oluşturur. Dosya gezginini .dacpac kullanarak derleme işlemi tarafından oluşturulan öğesini bulun ve proje dizininin dışında yeni bir klasöre kopyalayın. Bu .dacpac dosyayı daha sonra dönüştürmemizi doğrulamak için karşılaştırma için kullanırız.

6. Adım: Dosyaların aynı olduğunu .dacpac doğrulayın

Dönüştürmenin başarılı olduğunu doğrulamak için özgün ve değiştirilmiş projelerden oluşturulan dosyaları karşılaştırın .dacpac . SQL projelerinin şema karşılaştırma özellikleri, iki .dacpac dosya arasındaki veritabanı modellerindeki farkı görselleştirmemize olanak tanır. Alternatif olarak DacpacVerify komut satırı yardımcı programı, dağıtım öncesi/sonrası betikleri ve proje ayarları dahil olmak üzere iki .dacpac dosyayı karşılaştırmak için kullanılabilir.

DacpacVerify, dotnet aracı olarak yüklenebilir. Aracı yüklemek için aşağıdaki komutu çalıştırın:

dotnet tool install --global Microsoft.DacpacVerify --prerelease

DacpacVerify söz dizimi, iki .dacpac dosyasının dosya yolunu dacpacverify <source DACPAC path> <target DACPAC path> olarak belirtmektir. İki .dacpac dosyayı karşılaştırmak için aşağıdaki komutu çalıştırın:

DacpacVerify original_project.dacpac modified_project.dacpac

Dosyalardaki nesneleri karşılaştırmak için Visual Studio veya Azure Data Studio'daki .dacpac şema karşılaştırma aracını kullanabilirsiniz.

Visual Studio'yu bir proje yüklenmeden başlatın. Araçlar>SQL Server>Yeni Şema Karşılaştırması'na gidin. Kaynak olarak özgün .dacpac dosyayı ve hedef olarak değiştirilen .dacpac dosyayı seçin. Visual Studio'da Şema Karşılaştırma'yı kullanma hakkında daha fazla bilgi için bkz. Şema karşılaştırmasını kullanarak farklı veritabanı tanımlarını karşılaştırma.

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'yu kullanın.

Şema karşılaştırması Visual Studio Code'da kullanılamaz. Şemaları karşılaştırmak için Azure Data Studio veya Visual Studio kullanın.

Azure Data Studio'da, henüz yüklü değilse SQL Server Şema Karşılaştırma uzantısını yükleyin. Komut paletini Ctrl/Cmd+Shift+P ile açıp Schema Compare yazarak komut paletinden yeni bir şema karşılaştırması başlatın.

Kaynak olarak özgün .dacpac dosyayı ve hedef olarak değiştirilen .dacpac dosyayı seçin.

Grafik şema karşılaştırması Visual Studio ve Azure Data Studio'da kullanılabilir.

Şema karşılaştırması çalıştırıldığında hiçbir sonuç görüntülenmemelidir. Farklılıkların olmaması, özgün ve değiştirilmiş projelerin eşdeğer olduğunu ve dosyada aynı veritabanı modelini ürettiğini .dacpac gösterir.

Note

Şema karşılaştırması üzerinden .dacpac dosyalarının karşılaştırılması, dağıtım öncesi/sonrası betikleri, yeniden düzenleme günlüğü veya diğer proje ayarlarını doğrulamaz. Yalnızca veritabanı modelini doğrular. DacpacVerify komut satırı yardımcı programını kullanmak, iki .dacpac dosyaya eşdeğer olduğunu doğrulamanın önerilen yoludur.