Menggunakan proyek SQL bergaya SDK dengan ekstensi Proyek SQL Database (Pratinjau)
Artikel ini memperkenalkan proyek SQL bergaya Microsoft.Build.Sql untuk SDK di ekstensi Proyek SQL Database di Azure Data Studio atau Visual Studio Code. Proyek SQL bergaya SDK sangat menguntungkan untuk aplikasi yang dikirim melalui alur atau dibangun di lingkungan lintas platform. Pengumuman awal tersedia di TechCommunity.
Catatan
Microsoft.Build.Sql saat ini dalam pratinjau.
Membuat proyek database bergaya SDK
Anda bisa membuat proyek database bergaya SDK dari proyek kosong, atau dari database yang sudah ada.
Proyek kosong
Dalam tampilan Proyek Database, pilih tombol Proyek Baru dan masukkan nama proyek dalam input teks yang muncul. Dalam kotak dialog Pilih Folder yang muncul, pilih direktori untuk folder, file, .sqlproj
dan konten proyek lainnya untuk berada.
Secara default, pilihan untuk proyek gaya SDK (Pratinjau) dicentang. Saat dialog selesai, proyek kosong dibuka dan terlihat dalam tampilan Proyek Database untuk pengeditan.
Dari database yang sudah ada
Dalam tampilan Proyek, pilih tombol Buat Proyek dari Database dan sambungkan ke SQL Server. Setelah koneksi dibuat, pilih database dari daftar database yang tersedia dan atur nama proyek. Pilih struktur target ekstraksi.
Secara default, pilihan untuk proyek gaya SDK (Pratinjau) dicentang. Ketika dialog selesai, proyek baru dibuka dan berisi skrip SQL untuk konten database yang dipilih.
Membuat dan menerbitkan
Dari antarmuka Azure Data Studio dan Visual Studio Code, membangun dan menerbitkan proyek SQL bergaya SDK diselesaikan dengan cara yang sama seperti format proyek SQL sebelumnya. Untuk informasi selengkapnya tentang proses ini, lihat Membangun dan Menerbitkan Proyek.
Untuk membangun proyek SQL gaya SDK dari baris perintah di Windows, macOS, atau Linux, gunakan perintah berikut:
dotnet build
File .dacpac
yang dihasilkan dari membangun proyek SQL bergaya SDK kompatibel dengan alat yang terkait dengan kerangka kerja aplikasi tingkat data (.dacpac
, .bacpac
), termasuk SqlPackage dan GitHub sql-action.
Kemampuan proyek
Dalam proyek SQL ada beberapa kemampuan yang dapat ditentukan dalam .sqlproj
file yang memengaruhi model database baik di build proyek atau penyebaran. Bagian berikut menjelaskan beberapa kemampuan ini yang tersedia untuk proyek Microsoft.Build.Sql.
Platform target
Properti platform target terkandung dalam DSP
tag dalam file di .sqlproj
<PropertyGroup>
bawah item. Platform target digunakan selama build proyek untuk memvalidasi dukungan untuk fitur yang disertakan dalam proyek dan ditambahkan ke .dacpac
file sebagai properti. Secara default, selama penyebaran, platform target diperiksa terhadap database target untuk memastikan kompatibilitas. Jika platform target tidak didukung oleh database target, penyebaran gagal kecuali opsi ambil alih penerbitan ditentukan.
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.1.12-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
</PropertyGroup>
Pengaturan yang valid untuk platform target adalah:
Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider
Referensi database
Validasi model database pada waktu build dapat diperpanjang melewati konten proyek SQL melalui referensi database. Referensi database yang ditentukan dalam .sqlproj
file dapat mereferensikan proyek SQL lain atau .dacpac
file, yang mewakili database lain atau lebih komponen database yang sama.
Atribut berikut tersedia untuk referensi database yang mewakili database lain:
- DatabaseSqlCmdVariable: nilainya adalah nama variabel yang digunakan untuk mereferensikan database
- Pengaturan referensi:
<DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
- Contoh penggunaan:
SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
- Pengaturan referensi:
- ServerSqlCmdVariable: nilainya adalah nama variabel yang digunakan untuk mereferensikan server tempat database berada. digunakan dengan DatabaseSqlCmdVariable, ketika database berada di server lain.
- Pengaturan referensi:
<ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
- Contoh penggunaan:
SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
- Pengaturan referensi:
- DatabaseVariableLiteralValue: nilainya adalah nama harfiah database seperti yang digunakan dalam proyek SQL, mirip
DatabaseSqlCmdVariable
dengan tetapi referensi ke database lain adalah nilai harfiah- Pengaturan referensi:
<DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
- Contoh penggunaan:
SELECT * FROM [SomeOtherDatabase].dbo.Table1
- Pengaturan referensi:
Dalam file proyek SQL, referensi database ditentukan sebagai item dengan atribut yang ArtifactReference
Include
diatur ke jalur .dacpac
file.
<ItemGroup>
<ArtifactReference Include="SampleA.dacpac">
<DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
</Project>
Referensi paket
Referensi paket digunakan untuk mereferensikan paket NuGet yang berisi .dacpac
file dan digunakan untuk memperluas model database pada waktu build sama seperti referensi database.
Contoh berikut dari file proyek SQL mereferensikan Microsoft.SqlServer.Dacpacs
paket untuk master
database.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0" />
</ItemGroup>
</Project>
Selain atribut yang tersedia untuk referensi database, atribut berikut DacpacName
dapat ditentukan untuk memilih .dacpac
dari paket yang berisi beberapa .dacpac
file.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
<DacpacName>msdb</DacpacName>
</PackageReference>
</ItemGroup>
</Project>
Variabel SqlCmd
Variabel SqlCmd dapat ditentukan dalam .sqlproj
file dan digunakan untuk mengganti token dalam objek dan skrip SQL selama .dacpac
penyebaran. Contoh berikut dari file proyek SQL menentukan variabel bernama EnvironmentName
yang tersedia untuk digunakan dalam objek dan skrip proyek.
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- do something
END
Ketika proyek SQL yang dikompilasi (.dacpac
) disebarkan, nilai variabel diganti dengan nilai yang ditentukan dalam perintah penyebaran. Misalnya, perintah berikut menyebarkan AdventureWorks.dacpac
dan mengatur nilai EnvironmentName
variabel ke production
.
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production
Skrip pra/pasca-penyebaran
Skrip pra-dan pasca-penyebaran adalah skrip SQL yang disertakan dalam proyek yang akan dijalankan selama penyebaran. Skrip pra/pasca-penyebaran disertakan dalam tetapi tidak dikompilasi atau divalidasi .dacpac
dengan model objek database. Skrip pra-penyebaran dijalankan sebelum model database diterapkan dan skrip pasca-penyebaran dijalankan setelah model database diterapkan. Contoh berikut dari file proyek SQL menambahkan file populate-app-settings.sql
sebagai skrip pasca-penyebaran.
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>