Bagikan melalui


Gambaran umum referensi database

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

Referensi database dalam proyek SQL memungkinkan Anda menggabungkan objek yang tidak disertakan dalam proyek dengan menautkan ke proyek lain, .dacpac file, atau paket NuGet yang diterbitkan. Objek database yang ditambahkan ke proyek bisa menjadi bagian dari database yang sama, database yang berbeda di server yang sama, atau database lain di server lain. Untuk pengembangan SQL Server, referensi database dapat digunakan untuk menautkan ke database lain di server yang sama untuk penamaan tiga bagian, atau untuk menautkan ke database yang berbeda di server yang berbeda untuk kueri lintas database. Untuk database dengan sejumlah besar objek dalam grup yang berbeda, referensi database dapat digunakan untuk memecah database menjadi proyek yang lebih kecil dan lebih mudah dikelola. Ukuran proyek yang lebih kecil dapat membantu meningkatkan performa dan mengurangi waktu yang diperlukan untuk membangun proyek selama pengembangan lokal berulang.

Cuplikan layar Contoh proyek SQL yang mereferensikan dacpac, paket nuget, dan proyek untuk referensi database.

Catatan

Referensi proyek dan referensi paket NuGet adalah metode yang direkomendasikan untuk referensi database dalam pengembangan baru. Mereferensikan paket NuGet tidak didukung oleh proyek SQL asli.

Sampel dan sintaks file proyek SQL

Referensi database disertakan dalam proyek melalui entri dalam .sqlproj file, mirip dengan proyek C#. Saat referensi database mengarah ke database yang berbeda di server yang sama, elemen <DatabaseSqlCmdVariable> disertakan dalam referensi proyek. Ketika referensi database merujuk pada database yang berbeda di server yang berbeda, elemen <ServerSqlCmdVariable> juga disertakan di dalam referensi proyek. Referensi database ke database yang sama tidak menyertakan <ServerSqlCmdVariable> atau <DatabaseSqlCmdVariable> elemen.

Menyertakan referensi khusus ke referensi database dalam skrip SQL menggunakan variabel SQLCMD yang dinamai dalam file proyek untuk menentukan nama database. Misalnya, skrip SQL berikut mereferensikan tabel dalam Warehouse database:

SELECT ProductId, StorageLocation, BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory]

Referensi database yang $(Warehouse) sesuai dengan variabel SQLCMD disertakan dalam file proyek dan berisi <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>.

Referensi proyek

Dalam contoh ini, referensi proyek ditambahkan ke proyek AdventureWorksSalesLT.sqlproj SQL yang merupakan bagian dari database yang sama.

  <ItemGroup>
    <ProjectReference Include="..\AdventureWorks\AdventureWorksSalesLT.sqlproj">
      <Name>AdventureWorksSalesLT</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <Private>True</Private>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
    </ProjectReference>
  </ItemGroup>

Referensi paket Dacpac

Informasi selengkapnya tentang referensi paket dalam proyek SQL dapat ditemukan di artikel referensi paket proyek SQL.

Referensi paket ke master database sistem untuk SQL 2022 ditunjukkan dalam contoh berikut:

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

Referensi artefak Dacpac

Referensi ke berkas artefak .dacpac secara langsung tidak disarankan untuk pengembangan baru dalam proyek gaya SDK. Sebagai gantinya, gunakan referensi paket NuGet.

Dalam proyek SQL asli, referensi file .dacpac ditentukan dalam file .sqlproj dengan item <ArtifactReference>. Contoh berikut menunjukkan referensi ke artefak .dacpac dalam file .dacpac di proyek yang berbeda pada server yang sama.

  <ItemGroup>
    <ArtifactReference Include="..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac">
      <HintPath>..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>
    </ArtifactReference>
  </ItemGroup>

Menambahkan dan menggunakan referensi proyek

Menambahkan referensi proyek

Untuk menambahkan referensi proyek ke proyek SQL di Visual Studio, klik kanan simpul Referensi di bawah proyek di Penjelajah Solusi dan pilih Tambahkan Referensi Database.

Cuplikan layar dialog Visual Studio untuk referensi database.

Dialog Tambahkan Referensi Database menyajikan opsi untuk menambahkan referensi ke:

  • proyek SQL dari solusi yang sama
  • database sistem (dari .dacpac file yang disertakan secara otomatis dengan Visual Studio)
  • file aplikasi tingkat data apa pun (.dacpac) pada sistem file lokal

Dialog ini juga menyediakan daftar dropdown untuk dipilih dari lokasi referensi berikut:

  • database yang sama
  • database yang berbeda, server yang sama
  • database yang berbeda, server yang berbeda

Untuk menambahkan referensi proyek ke proyek SQL, tambahkan <ItemGroup> item ke .sqlproj file dengan item referensi yang sesuai untuk setiap referensi database. Misalnya, referensi proyek berikut ditambahkan ke proyek SQL untuk mereferensikan WorldWideImporters proyek dalam database yang berbeda di server yang berbeda:

  <ItemGroup>
    <ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
      <Name>WorldWideImporters</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
      <DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
    </ProjectReference>
  </ItemGroup>

Referensi proyek digunakan dalam definisi tampilan sampel dalam proyek SQL:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

Untuk menambahkan referensi database ke proyek SQL di ekstensi Proyek SQL Database, klik kanan simpul Referensi Database di bawah proyek dalam tampilan Proyek Database dan pilih Tambahkan Referensi Database.

Cuplikan layar dialog tambahkan referensi Azure Data Studio.

Jenis referensi yang tersedia adalah:

  • basis data sistem
  • aplikasi lapisan data (.dacpac)
  • aplikasi lapisan data yang diterbitkan (.nupkg)
  • proyek

Ekstensi juga meminta untuk memilih dari lokasi referensi berikut:

  • database yang sama
  • database yang berbeda, server yang sama
  • database yang berbeda, server yang berbeda

Untuk menambahkan referensi proyek ke proyek SQL, tambahkan <ItemGroup> item ke .sqlproj file dengan item referensi yang sesuai untuk setiap referensi database. Misalnya, referensi proyek berikut ditambahkan ke proyek SQL untuk mereferensikan WorldWideImporters proyek dalam database yang berbeda di server yang berbeda:

  <ItemGroup>
    <ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
      <Name>WorldWideImporters</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
      <DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
    </ProjectReference>
  </ItemGroup>

Referensi proyek digunakan dalam definisi tampilan sampel dalam proyek SQL:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

Membangun dengan referensi proyek

Membangun proyek SQL dengan referensi database mungkin memerlukan konfigurasi tambahan untuk memastikan bahwa objek yang dirujuk tersedia selama proses build. Misalnya, jika proyek sedang dibangun dalam alur integrasi berkelanjutan (CI), lingkungan agen build perlu disiapkan mirip dengan lingkungan pengembangan lokal.

  • .dacpac referensi dalam proyek SQL mengharuskan .dacpac tersedia pada agen build pada jalur berkas relatif yang sama seperti yang ditentukan dalam berkas proyek.
  • referensi proyek dalam proyek SQL mengharuskan proyek yang dirujuk harus ada pada agen build pada jalur file relatif yang sama seperti yang ditentukan dalam file proyek dan dapat berhasil dibangun pada agen build.
  • referensi database sistem yang dibuat dalam proyek SQL asli di Visual Studio mengharuskan agen build menginstal Visual Studio.
  • Referensi paket NuGet dalam proyek SQL mengharuskan paket diterbitkan ke umpan NuGet yang juga ditetapkan sebagai sumber paket untuk agen build.

Menerbitkan dengan referensi proyek

Menerbitkan .dacpac yang dibangun dari proyek dengan referensi basis data tidak memerlukan langkah tambahan. File .dacpac berisi objek yang dirujuk dan variabel SQLCMD yang ditentukan dalam file proyek.

Untuk referensi database ke objek dalam database yang sama, objek dari proyek yang dirujuk disertakan dalam .dacpac file tetapi tidak disertakan dalam penyebaran secara default. Untuk menyertakan objek dalam penyebaran, gunakan /p:IncludeCompositeObjects=true opsi di alat baris perintah SqlPackage. Misalnya, perintah berikut mendeploy proyek AdventureWorks dengan opsi /p:IncludeCompositeObjects=true untuk menyertakan objek dari referensi database AdventureWorks.

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /p:IncludeCompositeObjects=true

Saat Anda menyebarkan .dacpac file dengan referensi database ke database yang berbeda (pada server yang sama atau berbeda), variabel SQLCMD yang ditentukan dalam file proyek harus diatur ke nilai yang benar untuk lingkungan target. Mengatur nilai variabel SQLCMD selama penyebaran dilakukan dengan /v opsi di alat baris perintah SqlPackage . Misalnya, perintah berikut mengatur WorldWideImporters variabel ke WorldWideImporters dan WWIServer variabel ke localhost:

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:WorldWideImporters=WorldWideImporters /v:WWIServer=localhost