共用方式為


SQL 專案系統物件

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

SQL 專案會在專案建置程序期間驗證資料庫物件參照。 根據預設,SQL 專案不會在資料庫模型中包含系統物件,如果您的專案包含系統物件的參考,可能會導致驗證錯誤。 若要解決這些驗證錯誤,您需要為專案的目標平台加入 master.dacpac 資料庫參考。

master.dacpac資料庫參考可以新增為 Microsoft.Build.Sql SDK 樣式 SQL 專案中的套件參考,或新增為 SDK 樣式和原始 SQL 專案中的成品參考

新增套件參考

可用的系統資料庫套件包括:

將套件參考新增至 SQL 專案的最直接方法是使用 .NET 命令列介面 (CLI)。 下列範例會將 Azure SQL 資料庫 master 系統資料庫的套件參考新增至 SQL 專案:

dotnet add <path-to-sqlproj> package Microsoft.SqlServer.Dacpacs.Azure.Master

此命令將下列項目 .sqlproj 新增至檔案 (套件版本將反映執行命令時可用的最新版本):

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

新增構件參照

VS Code 和 Visual Studio SQL 專案介面提供一種方法,可以將工件參考新增到用於專案目標平臺的 master.dacpac 檔案中。

對檔案的 .sqlproj 結果編輯看起來類似下列範例,其中會新增成品參考至 Visual Studio 中的 Azure SQL 資料庫 master 系統資料庫:

<ItemGroup>
    <ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>
  </ItemGroup>

這些 master.dacpac 檔案是從應用程式的安裝位置參考的,這對於某些 CI/CD 系統來說可能很脆弱。 如果您的建置系統不包含系統資料庫檔案,您可以將檔案複製 master.dacpac 到解決方案內的位置,並更新 IncludeHintPath 屬性以指向該位置。

Fabric 中的 SQL 資料庫

Fabric 系統物件中的 SQL 資料庫包含在套件中 Microsoft.SqlServer.Dacpacs.DbFabric ,但可能需要其他步驟,才能正確設定 Fabric 環境中 SQL 資料庫的資料庫參考。

使用 Fabric 中的整合式原始檔控制建立的 SQL 專案包含套件參照,以及 DatabaseVariableLiteralValue 設定為 master的屬性。 此屬性是必要的,因為 Fabric 中的 SQL 資料庫不提供資料庫的 master 存取權,但可以在使用者資料庫中參考相同的系統物件。

如果您在 Visual Studio 或 VS Code 中建立新的 SQL 專案,則必須將屬性更新 DatabaseVariableLiteralValuemaster 符合 Fabric 環境中 SQL 資料庫中使用的資料庫名稱。

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.DbFabric">
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
      <Version>170.0.0</Version>
    </PackageReference>
  </ItemGroup>