次の方法で共有


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 Database 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 Database 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 プロジェクトを作成する場合は、 DatabaseVariableLiteralValue プロパティを更新して、Fabric 環境の SQL データベースで使用されているデータベース名と一致するように master する必要があります。

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