Bagikan melalui


Mengonversi proyek SQL asli ke proyek bergaya SDK

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Membuat proyek SQL gaya SDK baru adalah tugas cepat. Namun, jika Anda memiliki proyek SQL yang ada, Anda dapat mengonversinya ke proyek SQL bergaya SDK untuk memanfaatkan fitur baru.

Setelah mengonversi proyek, Anda dapat menggunakan fitur baru proyek gaya SDK, seperti:

  • dukungan build lintas platform
  • format file proyek yang disederhanakan
  • referensi paket

Untuk menyelesaikan konversi dengan hati-hati, kami akan:

  1. Buat cadangan file proyek asli.
  2. Buat .dacpac file dari proyek asli untuk perbandingan.
  3. Ubah file proyek menjadi proyek bergaya SDK.
  4. Buat .dacpac file dari proyek yang dimodifikasi untuk perbandingan.
  5. Verifikasi bahwa .dacpac filenya sama.

Proyek bergaya SDK tidak didukung oleh SQL Server Data Tools (SSDT) di Visual Studio. Setelah dikonversi, Anda harus menggunakan salah satu hal berikut untuk membangun atau mengedit proyek:

  • baris perintah
  • ekstensi Proyek SQL Database di Visual Studio Code
  • ekstensi Proyek SQL Database di Azure Data Studio

Prasyarat

Langkah 1: Buat cadangan file proyek asli

Sebelum Anda mengonversi proyek, buat cadangan file proyek asli. Dengan cara ini, Anda dapat kembali ke proyek asli jika diperlukan.

Di file explorer, buat salinan .sqlproj file untuk proyek yang ingin Anda konversi dengan .original ditambahkan di akhir ekstensi file. Misalnya, MyProject.sqlproj menjadi MyProject.sqlproj.original.

Langkah 2: Buat .dacpac file dari proyek asli untuk perbandingan

Buka proyek di Visual Studio 2022. File .sqlproj masih dalam format asli, jadi Anda membukanya di SQL Server Data Tools asli.

Buat proyek di Visual Studio dengan mengklik kanan simpul database di Penjelajah Solusi dan memilih Bangun.

Untuk membuat .dacpac file dari proyek asli, Anda harus menggunakan SQL Server Data Tools (SSDT) asli di Visual Studio. Buka file proyek di Visual Studio 2022 dengan SQL Server Data Tools asli terinstal.

Buat proyek di Visual Studio dengan mengklik kanan simpul database di Penjelajah Solusi dan memilih Bangun.

Buka folder proyek di VISUAL Code atau Azure Data Studio. Dalam tampilan Proyek Database visual Studio Code atau Azure Data Studio, klik kanan simpul proyek dan pilih Bangun.

Proyek database SQL dapat dibangun dari baris perintah menggunakan dotnet build perintah .

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proses build membuat .dacpac file di bin\Debug folder proyek secara default. Menggunakan file explorer, temukan yang .dacpac dibuat oleh proses build dan salin ke folder baru di luar direktori proyek sebagai original_project.dacpac. Kami menggunakan file ini .dacpac untuk perbandingan untuk memvalidasi konversi kami nanti.

Langkah 3: Ubah file proyek ke proyek bergaya SDK

Memodifikasi file proyek adalah proses manual, paling baik dilakukan di editor teks. .sqlproj Buka file di editor teks dan buat perubahan berikut:

Diperlukan: Tambahkan referensi SDK

Di dalam elemen proyek, tambahkan item untuk mereferensikan Sdk Microsoft.Build.Sql dan versi terbaru dari https://www.nuget.org/packages/Microsoft.build.sql.

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

Diperlukan: Menghapus impor target build yang tidak perlu

Proyek SQL asli mereferensikan beberapa target build dan properti dalam pernyataan Impor. Kecuali untuk <Import/> item yang Anda tambahkan secara eksplisit, yang merupakan perubahan unik dan sengaja, hapus baris yang dimulai dengan <Import ...>. Contoh untuk dihapus jika ada di .sqlproj:

...
<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" />
...

Diperlukan: Hapus folder Properti

Proyek SQL asli memiliki entri untuk Properties folder yang mewakili akses ke properti proyek di penjelajah solusi. Item ini perlu dihapus dari file proyek.

Contoh untuk menghapus jika ada di .sqlproj:

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

Opsional: Menghapus referensi SSDT

SQL Server Data Tools (SSDT) asli memerlukan konten tambahan dalam file proyek untuk mendeteksi penginstalan Visual Studio. Baris ini tidak perlu dalam proyek SQL gaya SDK dan dapat dihapus:

  <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>

Opsional: Menghapus pengaturan build default

Proyek SQL asli mencakup dua blok besar untuk pengaturan build Rilis dan Debug, sementara di SQL gaya SDK memproyeksikan default untuk opsi ini diketahui oleh SDK. Jika Anda tidak memiliki kustomisasi ke pengaturan build, pertimbangkan untuk menghapus blok ini:

  <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>

Langkah 4: Buat .dacpac file dari proyek yang dimodifikasi untuk perbandingan

Proyek SQL tidak lagi kompatibel dengan Visual Studio 2022. Untuk membangun atau mengedit proyek, Anda harus menggunakan salah satu dari:

  • baris perintah
  • ekstensi Proyek SQL Database di Visual Studio Code
  • ekstensi Proyek SQL Database di Azure Data Studio

File proyek sekarang dalam format gaya SDK, tetapi untuk membukanya di Visual Studio 2022, Anda harus menginstal Alat Data SQL Server, gaya SDK (pratinjau) dan proyek harus memiliki ekstensi .sqlprojxfile . Buka proyek di Visual Studio 2022 dengan SQL Server Data Tools, gaya SDK (pratinjau) terinstal.

Buka folder proyek di VISUAL Code atau Azure Data Studio. Dalam tampilan Proyek Database visual Studio Code atau Azure Data Studio, klik kanan simpul proyek dan pilih Bangun.

Proyek database SQL dapat dibangun dari baris perintah menggunakan dotnet build perintah .

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proses build membuat .dacpac file di bin\Debug folder proyek secara default. Menggunakan file explorer, temukan yang .dacpac dibuat oleh proses build dan salin ke folder baru di luar direktori proyek. Kami menggunakan file ini .dacpac untuk perbandingan untuk memvalidasi konversi kami nanti.

Langkah 5: Verifikasi bahwa .dacpac filenya sama

Untuk memverifikasi bahwa konversi berhasil, bandingkan file yang .dacpac dibuat dari proyek asli dan yang dimodifikasi. Kemampuan perbandingan skema proyek SQL memungkinkan kami memvisualisasikan perbedaan model database.

Anda dapat menggunakan alat perbandingan skema di Visual Studio, Visual Studio Code, atau Azure Data Studio untuk membandingkan .dacpac file. Alat komunitas berdasarkan pustaka DacFx .NET juga tersedia.

Luncurkan Visual Studio tanpa proyek yang dimuat. Buka Alat>Perbandingan Skema Baru SQL Server.> Pilih file asli .dacpac sebagai sumber dan file yang dimodifikasi .dacpac sebagai target. Untuk informasi selengkapnya tentang menggunakan Perbandingan Skema di Visual Studio, lihat menggunakan skema dibandingkan dengan membandingkan definisi database yang berbeda.

Perbandingan skema grafis belum tersedia dalam pratinjau proyek SQL bergaya SDK di Visual Studio. Gunakan Azure Data Studio untuk membandingkan skema.

Perbandingan skema tidak tersedia di Visual Studio Code. Gunakan Azure Data Studio atau Visual Studio untuk membandingkan skema.

Di Azure Data Studio, instal ekstensi SQL Server Schema Compare jika belum diinstal. Luncurkan perbandingan skema baru dari palet perintah dengan membuka palet perintah dengan Ctrl/Cmd+Shift+P dan mengetik Schema Compare.

Pilih file asli .dacpac sebagai sumber dan file yang dimodifikasi .dacpac sebagai target.

Perbandingan skema grafis tersedia di Visual Studio dan Azure Data Studio.

Ketika perbandingan skema dijalankan, tidak ada hasil yang harus ditampilkan. Kurangnya perbedaan menunjukkan bahwa proyek asli dan yang dimodifikasi setara, menghasilkan model database yang sama dalam .dacpac file.

Catatan

Perbandingan .dacpac file melalui perbandingan skema tidak memvalidasi skrip pra/pasca-penyebaran, refaktorlog, atau pengaturan proyek lainnya. Ini hanya memvalidasi model database. Mengonversi .dacpac ke .zip arsip dan membandingkan konten secara manual dapat memberikan perbandingan yang lebih rinci.