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
SQL 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.
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.
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.
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