Bagikan melalui


Referensi paket proyek SQL

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL database di Microsoft Fabric

Referensi paket dalam proyek SQL memungkinkan Anda mereferensikan objek database dari proyek lain atau paket NuGet. Objek database yang ditambahkan ke proyek melalui referensi paket dapat menjadi bagian dari database yang sama, database yang berbeda di server yang sama, atau database yang berbeda di server yang berbeda.

Catatan

Referensi paket adalah metode yang direkomendasikan untuk mereferensikan objek database dalam pengembangan baru. Mereferensikan paket NuGet hanya didukung dalam proyek SQL bergaya SDK.

Referensi objek paket database

Referensi paket adalah salah satu dari beberapa metode untuk menambahkan objek database ke proyek SQL sebagai referensi database. Referensi paket dapat berisi objek untuk database yang sama, database yang berbeda di server yang sama, atau database yang berbeda di server yang berbeda. Referensi paket dapat digunakan untuk memecah database menjadi proyek yang lebih kecil dan lebih mudah dikelola, yang dapat membantu mengurangi waktu yang diperlukan untuk membangun proyek selama pengembangan lokal berulang.

Cuplikan layar Contoh proyek SQL yang mereferensikan dua paket dan satu proyek untuk referensi database.

Sampel dan sintaks file proyek SQL

Referensi paket ditambahkan ke proyek SQL melalui entri dalam .sqlproj file, mirip dengan proyek C#. Ketika referensi paket adalah ke database yang berbeda di server yang sama, <DatabaseSqlCmdVariable> elemen disertakan dalam referensi paket. Ketika referensi paket adalah ke database yang berbeda di server yang berbeda, <ServerSqlCmdVariable> elemen juga disertakan dalam referensi paket. Referensi paket ke database yang sama tidak disertakan <ServerSqlCmdVariable> atau <DatabaseSqlCmdVariable> elemen.

Contoh berikut menyertakan referensi paket ke Contoso.AdventureWorks.SalesLT paket sebagai referensi database untuk database yang sama di mana objek dalam paket menjadi bagian dari model database dalam proyek SQL:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

Contoh berikut mencakup referensi paket ke paket Contoso.AdventureWorks sebagai referensi database untuk database yang berbeda (AdventureWorks) di server yang sama di mana objek dalam paket menjadi bagian dari model database dalam proyek SQL:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
      <DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
      <DacpacName>AdventureWorks</DacpacName>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <SqlCmdVariable Include="AdventureDB">
      <DefaultValue>AdventureWorks</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>

Dalam contoh ini, file .dacpac AdventureWorks diterbitkan sebagai paket Contoso.AdventureWorks versi 1.1.0 ke umpan NuGet. Elemen <DatabaseSqlCmdVariable> menentukan nama database pada server yang sama di mana objek dalam paket berada dan akan digunakan untuk menunjukkan referensi ini dalam penamaan tiga bagian. Variabel SQLCMDAdventureDB digunakan untuk mengatur nama database pada waktu penyebaran dan digunakan dalam proyek yang mirip dengan kueri contoh ini:

SELECT * FROM [$(AdventureDB)].dbo.Customers;

Elemen <DacpacName> menentukan nama file .dacpac untuk referensi paket, tanpa ekstensi atau jalur file. Elemen <DacpacName> bersifat opsional dan hanya diperlukan ketika nama file .dacpac berbeda dari nama paket.

Sistem database

Database sistem SQL (master, msdb) diterbitkan pada NuGet.org sebagai paket referensi database. Paket ini berisi skema untuk database sistem dan dapat digunakan sebagai referensi paket dalam proyek SQL. Paket database sistem diberi versi untuk menyelaraskan dengan versi SQL Server yang terkait dengannya. Misalnya, master paket database sistem untuk SQL Server 2022 adalah Microsoft.SqlServer.Dacpacs.Master versi 160.2.1 dan dapat ditambahkan ke proyek SQL sebagai referensi paket:

...
  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
  </ItemGroup>
</Project>

Perubahan versi minor mencerminkan perbaikan bug dan perubahan kecil pada skema dalam versi SQL Server.

Paket database sistem yang tersedia adalah:

Paket dacpac Paket NuGet

Paket referensi database adalah paket NuGet yang berisi .dacpac file. Paket NuGet dapat diterbitkan ke umpan NuGet, seperti Artefak Azure, untuk digunakan dalam proyek SQL. Membuat paket ini mengikuti proses yang sama dengan membuat paket NuGet untuk jenis proyek lainnya. Untuk informasi selengkapnya, lihat Membuat paket dengan dotnet CLI.

Cuplikan layar Ringkasan referensi paket untuk proses proyek SQL.

Untuk mengemas .sqlproj file sebagai paket NuGet, gunakan dotnet pack perintah dari baris perintah. Secara default, dotnet pack perintah membuat paket NuGet dari .sqlproj file di bin/Debug folder.

Metadata paket dapat ditentukan dengan properti di elemen <PropertyGroup> dalam file .sqlproj. Misalnya, properti berikut menentukan ID paket, versi, deskripsi, penulis, dan perusahaan:

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

File yang dibuat oleh perintah .nupkgdotnet pack dapat diterbitkan ke umpan NuGet untuk digunakan dalam proyek SQL. Objek database ini dapat dilihat oleh siapa saja yang memiliki akses ke paket, jadi pertimbangan harus dibuat untuk memilih lokasi umpan publik atau privat. Untuk informasi selengkapnya, lihat Hosting dengan umpan paket privat.

Saat mereferensikan paket di mana PackageId berbeda dari nama file .dacpac, elemen <DacpacName> diperlukan dalam referensi paket saat menggunakan paket.

Referensi paket aturan analisis kode yang diperluas

Referensi paket juga dapat digunakan untuk mereferensikan lebih banyak aturan analisis kode yang dikembangkan sebagai bagian dari ekstensibilitas analisis kode . Referensi paket untuk paket aturan analisis kode mirip dengan referensi paket untuk paket objek database. Contoh berikut menunjukkan referensi paket ke paket aturan analisis kode kustom:

<ItemGroup>
  <PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>

Paket yang dirujuk harus tersedia di umpan NuGet, seperti NuGet.org, Azure Artifacts, atau sumber lokal. Ketika paket yang berisi aturan analisis kode dirujuk, aturan secara otomatis disertakan dalam proyek SQL dan dievaluasi ketika properti proyek RunSqlCodeAnalysis diatur ke true. Aturan dapat dinonaktifkan atau ditingkatkan untuk mengembalikan kesalahan satu per satu di properti proyek.