小编Jen*_*hea的帖子

数据库项目部署 - 没有提供文件供参考 master.dacpac

我是第一次设置数据库项目,我正在尝试使用 Azure DevOps 进行构建/部署。我正在使用 Azure (windows-2019) 中托管的 MSBuild 任务进行构建。我正在使用在 SQL 服务器上运行的命令行任务从 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140.

在使用 SqlPackage.exe 部署期间,我收到 master 和 msdb 数据库的错误:

No file was supplied for reference master.dacpac; deployment might fail. When C:\Jen_DacpacTest\Artifact\whatever.dacpac was created, the original referenced file was located C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS\MASTER.DACPAC.
Run Code Online (Sandbox Code Playgroud)

我认为对 master 和 msdb 的引用是在构建和部署时解决的(因为它是路径的变量),但似乎并非如此。它似乎在构建期间弄清楚 $(DacPacRootPath) 是什么,并对生成到 dacpac 中的 model.xml 文件中的引用进行“硬编码”。proj 文件中的引用如下所示:

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>
    <ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\msdb.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\msdb.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
    </ArtifactReference>
Run Code Online (Sandbox Code Playgroud)

如果 dacpac 被解压,那么它在 model.xml 文件中的样子如下:

<CustomData Category="Reference" …
Run Code Online (Sandbox Code Playgroud)

database-project sql-server-data-tools azure-devops

3
推荐指数
1
解决办法
1189
查看次数