共用方式為


SQL 專案套件參考

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Microsoft Fabric 中的 SQL 資料庫

SQL 專案中的套件參考能讓您參考來自其他專案或 NuGet 套件的資料庫物件。 透過套件參考新增至專案的資料庫物件可以是相同資料庫的一部分、相同伺服器上的不同資料庫,或是不同伺服器上的不同資料庫。

注意

套件參考是新開發中參考資料庫物件的建議方法。 只有 SDK 樣式的 SQL 專案才支持參考 NuGet 套件。

資料庫物件套件參考

套件參考是數種方法之一,可將資料庫物件作為資料庫參考新增至 SQL 專案。 套件參考可以包含相同資料庫的物件、相同伺服器上的不同資料庫,或是不同伺服器上的不同資料庫。 套件參考可用來將資料庫分解成更小、更易於管理的專案,這有助於縮短在本機迭代開發過程中建置立專案所需的時間。

引用兩個套件和一個專案作為資料庫參考的 SQL 專案範例螢幕擷取畫面。

SQL 專案檔範例和語法

套件參考會透過 .sqlproj 檔案中的項目新增至 SQL 專案,類似於 C# 專案。 當套件參考位於相同伺服器上的不同資料庫時,套件參考中會包含 <DatabaseSqlCmdVariable> 元素。 當套件參考位於不同伺服器上的不同資料庫時,套件參考中會包含 <ServerSqlCmdVariable> 元素。 相同資料庫的套件參考不包含 <ServerSqlCmdVariable><DatabaseSqlCmdVariable> 元素。

下列範例包含對 Contoso.AdventureWorks.SalesLT 套件的套件參考,作為相同資料庫的資料庫參考,其中套件中的物件成為 SQL 專案中資料庫模型的一部分:

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

下列範例包含 Contoso.AdventureWorks 套件的套件參考,做為相同伺服器上不同資料庫的資料庫參考(AdventureWorks),其中封裝中的對象會成為 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>

在此範例中,AdventureWorks .dacpac 檔案會發佈為 NuGet 摘要 Contoso.AdventureWorks 版本 1.1.0 套件。 <DatabaseSqlCmdVariable> 元素會指定封裝中物件所在相同伺服器上的資料庫名稱,並用來在三部分命名中指出此參考。 SQLCMD 變數AdventureDB 用於在部署階段設定資料庫名稱,且在專案中與這個範例查詢類似:

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

<DacpacName> 元素指定套件參考的 .dacpac 檔案名稱,不含副檔名或路徑。 <DacpacName> 元素是可選的,只有在 .dacpac 檔案的名稱與套件的名稱不同時,才需要這個元素。

系統資料庫

SQL 系統資料庫 (mastermsdb) 作為資料庫參考套件發佈在 NuGet.org 上。 這些套件包含系統資料庫的結構描述,並且可用作 SQL 專案中的套件參考。 系統資料庫套件的版本與其相關的 SQL Server 版本保持一致。 例如,SQL Server 2022 的 master 系統資料庫套件是 Microsoft.SqlServer.Dacpacs.Master 版本 160.2.1,可新增至 SQL 專案作為套件參考:

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

次要版本變更會反映錯誤修復,以及 SQL Server 版本內結構描述的次要變更。

可用的系統資料庫套件如下:

打包 dacpac 的 NuGet 套件

資料庫參考套件是包含 .dacpac 檔案的 NuGet 套件。 NuGet 套件可以發佈至 NuGet 摘要,如 Azure Artifacts,以用於 SQL 專案。 建立此套件會遵循為其他類型的專案建立 NuGet 套件的相同程序。 如需詳細資訊,請參閱使用 dotnet CLI 建立套件

SQL 專案程序的套件參考摘要的螢幕擷取畫面。

若要將 .sqlproj 檔案封裝為 NuGet 套件,請使用命令列中的 dotnet pack 命令。 根據預設,dotnet pack 命令會從 .sqlproj 資料夾中的 bin/Debug 檔案建立 NuGet 套件。

套件元資料可由 <PropertyGroup> 檔案中 .sqlproj 元素內的屬性指定。 例如,下列屬性會指定套件識別碼、版本、描述、作者和公司:

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

.nupkg 命令所建立的 dotnet pack 檔案可以發佈至 NuGet 摘要,以用於 SQL 專案。 這些資料庫物件可由具有封裝存取權限的任何人檢視,因此應該考慮選取公用或私人餵送位置。 如需詳細資訊,請參閱利用私人套件源進行裝載

參考 PackageId.dacpac 檔名不同的封裝時,在取用封裝時,套件參考中需要 <DacpacName> 專案。

擴展程式代碼分析規則套件引用

套件參考也可用來引用作為程式碼分析擴充性一部分的 所開發的更多程式碼分析規則。 程式代碼分析規則套件的套件參考類似於資料庫物件封裝的套件參考。 下列範例顯示對自訂程式碼分析規則套件的參考:

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

所參考的套件應該可以在 NuGet 來源中找到,例如 NuGet.org、Azure Artifacts 或本機來源。 參考包含程式代碼分析規則的套件時,規則會自動包含在 SQL 專案中,並在專案屬性 RunSqlCodeAnalysis 設定為 true 時進行評估。 規則可以在專案屬性中個別停用或設置為返回錯誤。