Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Memahami perbedaan definisi objek antara database dan proyek SQL dapat memberikan wawasan berharga tentang status database dan proyek Anda, termasuk selama pemecahan masalah pengembangan atau regresi yang sedang berlangsung. Proyek SQL termasuk alat untuk memvisualisasikan perbedaan, menganalisis perubahan yang diperlukan untuk memperbarui database, mengimpor perubahan dari database ke dalam kumpulan file proyek SQL, dan meninjau skrip T-SQL yang akan dijalankan untuk memperbarui database agar sesuai dengan proyek.
Artikel ini meninjau metode untuk membandingkan database dan proyek SQL menggunakan pendekatan yang berbeda:
- Anda dapat menggunakan skema dibandingkan untuk memvisualisasikanperbedaan antara database dan/atau proyek. Perbandingan ini dapat membantu Anda mengidentifikasi perubahan yang perlu disinkronkan antara database dan proyek.
- Anda dapat menggunakan laporan penyebaran untuk meringkas dan mengotomatiskan tinjauan perubahan yang diperlukan untuk memperbarui database.
- Anda dapat menggunakan perbandingan skema atau ekstrak SqlPackage untuk mengimpor perubahan dari database ke dalam kumpulan file proyek SQL.
- Anda dapat menggunakan SqlPackage skrip penerapan atau pembanding skema untuk meninjau perintah T-SQL yang dijalankan untuk memperbarui database agar sesuai dengan proyek.
Perbandingan skema: memvisualisasikan perbedaan
Prerequisites
Perbandingan skema grafis belum tersedia dalam pratinjau proyek SQL bergaya SDK di Visual Studio. Gunakan Azure Data Studio atau Visual Studio untuk membandingkan skema.
Perbandingan skema memerlukan alat grafis seperti Visual Studio, atau ekstensi MSSQL untuk Visual Studio Code.
Summary
Perbandingan skema menyediakan antarmuka terkaya secara visual untuk memahami perbedaan antara database dan proyek. Kemampuan utama dengan perbandingan skema adalah bahwa arah perbandingan dapat dibalik. Akibatnya, Anda dapat menggunakan perbandingan skema untuk memahami perubahan dari proyek yang akan disebarkan ke database atau perubahan dari database untuk ditambahkan ke proyek. Anda dapat menggunakan skema dibandingkan untuk mengidentifikasi perbedaan definisi objek, seperti tabel, tampilan, prosedur tersimpan, dan fungsi.
Kumpulan perbedaan lengkap atau subset yang dipilih dapat digunakan untuk menerapkan perubahan pada database atau proyek. Perbandingan skema juga dapat menghasilkan skrip penyebaran yang, saat dijalankan, secara efektif menerapkan perubahan pada database.
Pelajari selengkapnya tentang perbandingan skema dalam gambaran umum perbandingan skema.
Menyebarkan laporan: meninjau perubahan
Menyebarkan laporan memerlukan SqlPackage CLI.
dotnet tool install -g Microsoft.SqlPackage
Summary
Laporan penyebaran menyediakan ringkasan perubahan yang diperlukan untuk memperbarui database agar sesuai dengan proyek. SqlPackage CLI menghasilkan laporan penyebaran dengan membandingkan model sumber (.dacpac artefak atau database build proyek SQL) dengan database target. Misalnya, perintah berikut menghasilkan laporan penyebaran untuk database bernama MyDatabase dari proyek SQL bernama MyProject:
dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml
XML yang diproduksi adalah bentuk rencana penyebaran yang disederhanakan, meringkas operasi yang akan dilakukan jika penyebaran database dijalankan. Daftar operasi berikut ini tidak lengkap:
CreateAlterDropRefreshUnbindSchemaBindingUnbindFulltextIndexTableDataMotionSPRenameEnableChangeTrackingDatabaseDisableChangeTrackingDatabase
Laporan penyebaran dapat ditinjau di editor teks atau di Visual Studio dan akan terlihat mirip dengan yang berikut ini:
<?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>
Laporan penyebaran dapat digunakan untuk meninjau perubahan serta memantau peristiwa yang berpotensi berdampak tinggi, seperti gerakan data atau pembuatan/penurunan indeks berkluster. Peristiwa ini akan tercantum dalam laporan penyebaran di bawah elemen Alerts.
Keuntungan dari operasi XML laporan penyebaran adalah dapat digunakan untuk mengotomatiskan tinjauan perubahan yang diperlukan untuk memperbarui database. XML dapat diuraikan dan digunakan untuk menghasilkan laporan atau untuk memicu pemberitahuan berdasarkan operasi atau nama objek yang tercantum.
Mengimpor perubahan dari database
Seperti disebutkan di bagian perbandingan skema, perbandingan skema dapat digunakan untuk menerapkan perubahan dari database ke dalam kumpulan file proyek SQL. Menerapkan perubahan pada proyek SQL adalah skenario umum ketika Anda memiliki database yang secara aktif dikembangkan secara langsung dan proyek SQL digunakan untuk mengelola objek database dalam kontrol sumber. Menyelesaikan operasi ini secara manual melalui Visual Studio atau Azure Data Studio dapat memakan waktu, terutama ketika database memiliki banyak objek atau perubahan sporadis. Di bagian ini, kami meninjau cara mengotomatiskan ekstrak definisi objek dari database ke dalam kumpulan file proyek SQL.
Prerequisites
Dengan fokus pada otomatisasi, kami menggunakan SqlPackage CLI untuk mengekstrak definisi objek dari database ke dalam kumpulan file proyek SQL. Templat .NET Microsoft.Build.Sql.Templates digunakan untuk membuat file proyek SQL, langkah opsional.
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Summary
Perintah ekstrak SqlPackage mengambil database sumber dan menghasilkan model database output, baik sebagai .dacpac file atau sebagai sekumpulan skrip SQL.
SqlPackage default untuk menghasilkan .dacpac file, tetapi /p:ExtractTarget= properti dapat digunakan untuk menentukan sekumpulan skrip SQL. Perintah berikut mengekstrak database MyDatabase ke dalam file proyek SQL yang diatur dalam folder MyDatabaseProject:
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
Ketika folder berada di bawah kontrol sumber, definisi objek yang diekstrak akan menunjukkan perbedaan dalam alat kontrol sumber. Dengan menggunakan SqlPackage untuk menghasilkan file dan memeriksa perbedaan kontrol sumber, Anda dapat mengotomatiskan proses impor perubahan dari database ke dalam kumpulan file proyek SQL.
Dalam serangkaian tiga perintah, kita dapat menghapus kumpulan file sebelumnya, mengekstrak database, dan memeriksa perbedaan dalam alat kontrol sumber:
rm -rf MyDatabaseProject
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
git status --porcelain | wc -l
Output kami adalah jumlah file yang diubah oleh ekstrak SqlPackage terbaru. Output perintah git status dapat digunakan untuk memicu langkah otomatisasi lainnya. Jika kita ingin menggunakan set file ini sebagai proyek SQL, kita dapat menggunakan templat .NET Microsoft.Build.Sql.Templates untuk membuat file proyek SQL di folder MyDatabaseProject:
dotnet new sqlproj -n MyDatabaseProject -o MyDatabaseProject
Meninjau skrip T-SQL penerapan
Seperti disebutkan di bagian perbandingan skema, perbandingan skema dapat digunakan untuk menghasilkan skrip T-SQL yang diperlukan untuk memperbarui database agar sesuai dengan proyek SQL. Di bagian ini, kami meninjau cara menggunakan SqlPackage mengotomatiskan pembuatan skrip T-SQL yang diperlukan untuk memperbarui database agar sesuai dengan proyek SQL sehingga dapat disimpan sebagai artefak alur untuk ditinjau dan disetujui.
Prerequisites
dotnet tool install -g Microsoft.SqlPackage
Summary
Menjalankan penyebaran proyek SQL dengan SqlPackage menggunakan tindakan terbitkan , tetapi jika kita ingin meninjau skrip T-SQL yang dijalankan, kita dapat menggunakan tindakan skrip . Perintah berikut menghasilkan skrip T-SQL yang diperlukan untuk memperbarui database bernama MyDatabase agar sesuai dengan proyek SQL bernama MyProject:
dotnet build MyProject.sqlproj
sqlpackage /Action:Script /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /DeployScriptPath:Deployment.sql