gpt4 book ai didi

azure-devops - 数据库项目部署 - 没有提供文件供引用 master.dacpac

转载 作者:行者123 更新时间:2023-12-04 00:57:51 25 4
gpt4 key购买 nike

我是第一次设置数据库项目,我正在尝试使用 Azure DevOps 进行构建/部署。我正在使用 Azure (windows-2019) 中托管的 MSBuild 任务进行构建。我正在使用在 SQL 服务器上运行的命令行任务从工作目录执行 SQLPackage.exeC:\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.

我认为对 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>

如果 dacpac 被解压,那么它在 model.xml 文件中的样子如下:
<CustomData Category="Reference" Type="SqlSchema">
<Metadata Name="FileName" Value="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS\MASTER.DACPAC" />
<Metadata Name="LogicalName" Value="master.dacpac" />
<Metadata Name="ExternalParts" Value="[master]" />
<Metadata Name="SuppressMissingDependenciesErrors" Value="False" />
</CustomData>
<CustomData Category="Reference" Type="SqlSchema">
<Metadata Name="FileName" Value="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS\MSDB.DACPAC" />
<Metadata Name="LogicalName" Value="msdb.dacpac" />
<Metadata Name="ExternalParts" Value="[msdb]" />
<Metadata Name="SuppressMissingDependenciesErrors" Value="False" />
</CustomData>

所以我想知道这应该如何工作,因为托管在 Azure 中的 Azure MSBuild 任务(和 Visual Studio 构建任务)将从 Visual Studio Enterprise 文件夹中引用 master 和 msdb dacpacs,但在 SqlPackage 所在的 SQL Server 上。运行 exe 以进行部署,这些文件位于 BuildTools 文件夹而不是 Enterprise 文件夹中。 (而且我真的不认为我应该在我的 SQL 服务器上安装 VS 企业版才能让它工作?)

在 Azure 中: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\\**ENTERPRISE**\\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS
在 SQL Server 上: C:\Program Files (x86)\Microsoft Visual Studio\2019\\**BuildTools**\\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SQLSchemas
构建服务器上这些文件的路径必须与 sql 服务器上的完全匹配,这似乎很奇怪。我认为找到这些 dacpac 引用会更神奇,因为据我所知,您不应该手动将它们添加到您的项目中并将它们拖到任何地方。

最佳答案

Database projects deployment - No file was supplied for reference master.dacpac



这是一个典型的 SSDT 问题。生成服务器上这些文件的路径不是问题的主要原因。

请查收 No file was supplied for reference ABC.dacpac; deployment might failError: The reference to external elements from the source named 'master.dacpac' could not be resolved .

尝试复制 master.dacpac到您的 xx.dacpac 所在的同一文件夹存在。 (你可以通过在 cmd 中使用 copy/xcopy 命令来做到这一点)并确保你的 CMD 任务的工作目录在同一文件夹中。希望能帮助到你 :)

关于azure-devops - 数据库项目部署 - 没有提供文件供引用 master.dacpac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com