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
Database SQL 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 Anda tambahkan 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, gunakan referensi database untuk menautkan ke database lain di server yang sama untuk penamaan tiga bagian, atau untuk menautkan ke database lain di server yang berbeda untuk kueri lintas database. Untuk database dengan sejumlah besar objek dalam grup yang berbeda, gunakan referensi database 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.
Note
Gunakan referensi proyek dan referensi paket NuGet untuk referensi database dalam pengembangan baru. Proyek SQL asli tidak mendukung referensi paket NuGet.
Sampel dan sintaks file proyek SQL
Sertakan referensi database dalam proyek melalui entri dalam .sqlproj file, mirip dengan proyek C#. Gunakan sintaks SQLCMD untuk mereferensikan nama database dalam objek proyek SQL. Saat referensi database menunjuk ke database lain di server yang sama, sertakan <DatabaseSqlCmdVariable> elemen dalam referensi proyek. Saat referensi database menunjuk ke database lain di server lain, sertakan juga elemen <ServerSqlCmdVariable> di referensi proyek. Referensi database ke database yang sama tidak menyertakan <ServerSqlCmdVariable> atau <DatabaseSqlCmdVariable> elemen.
Untuk menyertakan referensi tertentu ke referensi database dalam skrip SQL, gunakan variabel SQLCMD bernama dalam file proyek untuk menentukan nama database. Misalnya, skrip SQL berikut mereferensikan tabel dalam Warehouse database:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory];
File proyek menyertakan referensi database yang sesuai dengan $(Warehouse) variabel SQLCMD dan berisi <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>.
Penamaan tiga bagian dalam database yang sama
Saat objek dalam proyek SQL mereferensikan objek lain dalam database yang sama, penamaan tiga bagian tidak diperlukan meskipun objek disertakan melalui referensi database. Namun, proyek SQL menggabungkan variabel SQLCMD otomatis untuk nama database, yang dapat Anda gunakan dalam skrip SQL untuk mereferensikan database proyek tanpa mengkodekan nama. Jika penamaan tiga bagian diperlukan, gunakan $(DatabaseName) dalam skrip SQL Anda untuk mereferensikan database. Misalnya, skrip SQL berikut mereferensikan tabel dalam database proyek:
UPDATE [$(DatabaseName)].[SalesLT].[Customer]
SET [SalesPerson] = 'John Doe',
[ModifiedDate] = GETDATE()
WHERE [CustomerId] = @CustomerId;
Nilai literal database
Dalam beberapa kasus, Anda mungkin perlu menggunakan nilai literal (non-variabel) untuk nama database dari referensi database di objek SQL Anda. Anda dapat mengonfigurasi .sqlproj file untuk menentukan nilai harfiah untuk nama database alih-alih menggunakan variabel SQLCMD. Elemen yang digunakan untuk menentukan nilai harfiah adalah <DatabaseLiteralValue>. Jika Anda menggunakan elemen ini, jangan gunakan <DatabaseSqlCmdVariable> elemen .
<DatabaseLiteralValue> Di dalam elemen , Anda menentukan nilai harfiah untuk nama database. Misalnya, referensi database dengan <DatabaseVariableLiteralValue>WarehouseDB</DatabaseVariableLiteralValue> digunakan dalam skrip SQL sebagai berikut:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [WarehouseDB].[Production].[ProductInventory];
Referensi proyek
Dalam contoh ini, Anda menambahkan referensi proyek ke proyek SQL bernama AdventureWorksSalesLT.sqlproj 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
Untuk informasi selengkapnya tentang referensi paket dalam proyek SQL, lihat Referensi paket proyek SQL.
Contoh berikut menunjukkan referensi paket ke master database sistem untuk SQL Server 2022:
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
Referensi artefak Dacpac
Jangan gunakan referensi langsung ke file artefak .dacpac dalam pengembangan baru di proyek bergaya SDK. Sebagai gantinya, gunakan referensi paket NuGet.
Dalam proyek SQL asli, Anda menentukan .dacpac referensi file dalam .sqlproj file dengan menggunakan <ArtifactReference> item. 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
.dacpacfile 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:
- sistem database
- aplikasi lapisan data (
.dacpac) - aplikasi lapisan data yang diterbitkan (
.nupkg) - project
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]
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 Anda membangun proyek dalam alur integrasi berkelanjutan (CI), Anda perlu menyiapkan lingkungan agen build yang mirip dengan lingkungan pengembangan lokal.
-
.dacpacreferensi dalam proyek SQL mengharuskan.dacpactersedia pada agen build pada jalur berkas relatif yang sama seperti yang ditentukan dalam berkas proyek. - Referensi proyek dalam proyek SQL mengharuskan proyek yang dirujuk tersedia pada agen build di 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 telah 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 (di server yang sama atau berbeda), atur variabel SQLCMD yang ditentukan dalam file proyek ke nilai yang benar untuk lingkungan target. Atur nilai variabel SQLCMD selama penyebaran dengan menggunakan /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