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 2022 (16.x) dan versi yang
lebih baru database Azure SQL Database
Azure SQL Managed Instance
SQL di Microsoft Fabric
Proyek database SQL adalah representasi lokal objek SQL yang terdiri dari skema untuk database tunggal, seperti tabel, prosedur tersimpan, atau fungsi. Siklus pengembangan proyek database SQL memungkinkan pengembangan database diintegrasikan ke dalam alur kerja integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD) yang akrab sebagai praktik terbaik pengembangan.
Overview
Proyek SQL didasarkan pada pernyataan T-SQL deklaratif. Dalam kode proyek database SQL, Anda membuat setiap objek sekali. Jika Anda perlu mengubah sesuatu tentang objek tersebut, seperti menambahkan kolom atau mengubah jenis data, Anda mengubah file tunggal yang mendeklarasikan objek untuk waktu pertama dan satu-satunya.
Saat proyek database SQL dibangun, artefak output adalah .dacpac file. Database baru dan yang sudah ada dapat diperbarui agar sesuai dengan konten .dacpac dengan menerbitkan .dacpac ke database target.
Kerangka kerja proyek database SQL di sekitar kode database Anda yang menambahkan dua kemampuan dasar ke kumpulan file tersebut dengan proses build-nya:
- validasi referensi antara objek dan sintaks terhadap versi SQL tertentu
- penyebaran artefak build ke database baru atau yang sudah ada
Fungsionalitas untuk proyek database SQL disediakan oleh pustaka .NET Microsoft.SqlServer.DacFx dan muncul dalam beberapa alat untuk pengembangan SQL. DacFx memiliki beberapa titik ekstensibilitas, seperti modifikasi langkah penyebaran dan kemampuan untuk membuat aturan kustom untuk analisis kode. Proyek SDK untuk proyek SQL Microsoft.Build.Sql, disarankan untuk pengembangan baru dan merupakan format yang digunakan oleh ekstensi Proyek SQL Database untuk Azure Data Studio dan VS Code. Dukungan untuk proyek SQL bergaya SDK di Visual Studio sedang dalam pratinjau.
Validation
Saat proyek SQL dibangun, hubungan antara objek divalidasi. Misalnya, definisi tampilan tidak boleh berisi tabel atau kolom yang tidak ada di proyek SQL.
Selain itu, proyek SQL berisi properti dalam file .sqlproj yang disebut "target platform". Informasi ini digunakan selama proses build untuk memvalidasi bahwa fungsi dan sintaks T-SQL ada dalam versi SQL tersebut. Misalnya, fungsi JSON yang ditambahkan di SQL Server 2022 tidak dapat digunakan dalam proyek SQL yang diatur ke platform target Sql140 (SQL Server 2017).
Untuk membangun proyek SQL, kami menjalankan build dotnet dari baris perintah. Dalam alat grafis yang mendukung proyek SQL (Azure Data Studio, VS Code, dan Visual Studio), ada item menu untuk membangun proyek SQL.
Output konsol dari proses build mungkin berisi kesalahan (kegagalan build) atau peringatan. Peringatan kompilasi dapat mencakup penggunaan huruf yang tidak konsisten dalam nama objek dan praktik terbaik lainnya yang dapat disesuaikan, tetapi tidak menyebabkan kegagalan kompilasi.
Artefak keluaran dari proses pembangunan adalah berkas .dacpac, yang dapat ditemukan untuk pembangunan dengan pengaturan default di folder bin/Debug.
Deployment
File output, yaitu .dacpac, adalah artefak yang kuat, dapat digunakan kembali, dan deklaratif. Dengan file ini, kita dapat menggunakan SqlPackage atau alat lain untuk menerapkan kode database kita ke database. Perintah SqlPackage untuk menyebarkan .dacpac adalah perintah publish.
Contohnya,sqlpackage /Action:Publish /SourceFile:yourfile.dacpac /TargetConnectionString:{yourconnectionstring}.
Database baru
SqlPackage menavigasi hubungan objek untuk membuat setiap objek dalam urutan yang tepat saat menerbitkan dacpac ke database baru. Misalnya, SqlPackage membuat Table_A sebelum Table_B ketika Table_B memiliki kunci asing untuk Table_A.
Anda tidak ingin menjalankan seluruh folder skrip SQL, terutama ketika Anda dapat menggunakan proyek SQL yang secara otomatis menjalankan setiap bagian T-SQL dalam urutan yang tepat berdasarkan hubungan objek.
Database yang sudah ada
Selain menavigasi hierarki objek saat menerbitkan ke database baru, .dacpac proses penerbitan juga menghitung perbedaan antara database sumber .dacpac dan target sebelum menentukan langkah apa yang perlu dilakukan untuk memperbarui database tersebut. Misalnya, jika Table_C kehilangan dua kolom dalam database yang dimilikinya dalam proyek SQL dan StoredProcedure_A diubah, SqlPackage membuat ALTER TABLE pernyataan dan ALTER PROCEDURE pernyataan alih-alih mencoba membuat sekelompok objek secara membabi buta.
Fleksibilitas yang disediakan oleh perintah terbitkan ke database yang ada tidak terbatas pada satu database. Satu .dacpac dapat disebarkan beberapa kali, seperti saat meningkatkan sekumpulan seratus database.
Waktu menggunakan
Proyek database SQL sangat cocok untuk tim yang ingin mengintegrasikan pengembangan database ke dalam alur kerja CI/CD. Sifat deklaratif proyek SQL memungkinkan satu sumber kebenaran untuk skema database, dan proses build dan penerbitan menyediakan cara yang dapat diulang dan dapat diandalkan untuk menyebarkan perubahan pada database.
Proyek database SQL digunakan untuk melacak sumber kebenaran untuk status database, termasuk pengembangan dengan pemeta hubungan objek (ORM) seperti EF Core. Baik alat grafis atau baris perintah dapat digunakan untuk mengekstrak skema database ke proyek SQL, terlepas dari ORM yang digunakan untuk membuat database.
Proyek database SQL mendukung keluarga database SQL Server dan Azure SQL, termasuk Azure SQL Database dan Azure Synapse Analytics. Baik Anda mengembangkan aplikasi atau gudang data, proyek database SQL dapat digunakan untuk mengelola skema database Anda. Proyek SQL dapat dikembangkan dari alat di Visual Studio, VS Code, dan Azure Data Studio.
Proyek asli vs proyek bergaya SDK
Format proyek gaya SDK Microsoft.Build.Sql didasarkan pada proyek gaya SDK baru yang diperkenalkan dalam .NET Core dan merupakan format yang digunakan oleh ekstensi Proyek SQL Database untuk VS Code dan dengan database SQL dalam kontrol sumber yang terintegrasi dengan Fabric. Proyek Microsoft.Build.Sql menggantikan format proyek SQL asli berdasarkan MSBuild (.NET Framework).
Nota
Visual Studio 2026 hanya mendukung format proyek SQL asli. Proyek SQL bergaya SDK sedang dalam pratinjau di Visual Studio 2022 dan umumnya tersedia di Visual Studio Code. Pelajari selengkapnya tentang alat proyek SQL.
Pekerjaan pengembangan baru harus mempertimbangkan untuk menggunakan proyek Microsoft.Build.Sql, karena proyek bergaya SDK adalah format yang akan didukung di masa mendatang. Format proyek bergaya SDK lebih fleksibel dan berisi fitur baru yang tidak tersedia dengan proyek SQL asli:
- Dukungan .NET 8+ (lintas platform)
- Referensi paket NuGet untuk referensi database
- Pola globbing default untuk file .sql dalam proyek
Proyek bergaya SDK memiliki superset fungsionalitas dari proyek SQL asli dan proyek SQL yang ada dapat dikonversi ke proyek bergaya SDK melalui modifikasi file proyek.
Pengecualian untuk cakupan fungsionalitas adalah dukungan untuk objek SQLCLR, yang didukung dalam proyek SQL asli dan bergaya SDK tetapi memerlukan .NET Framework. Proyek SQL asli yang berisi objek SQLCLR dapat dikonversi ke proyek gaya SDK, tetapi proyek memerlukan .NET Framework alih-alih .NET untuk build proyek. Setelah proyek dengan objek SQLCLR dibangun, .dacpac dapat disebarkan dengan SqlPackage pada .NET dan .NET Framework dan dapat digunakan sebagai referensi .dacpac dalam proyek (database yang sama atau server yang sama database yang berbeda).
Konten terkait
- Pengembangan Database Offline Berorientasi Proyek
- Ekstensi Proyek SQL Database
- SqlPackage
- Sampel alur CI/CD untuk proyek SQL
- GitHub sql-action
- Penyebaran Azure DevOps SQL
- gambaran umum aplikasi tingkat data (DAC)
- Repositori umpan balik DacFx
- Mulai menggunakan proyek database SQL
- Tutorial: Membuat dan menyebarkan proyek SQL