【发布时间】:2019-03-04 12:01:18
【问题描述】:
我正在努力将现有的 Azure V12 数据库引入 SSDT 项目,以便我们可以开始使用源代码控制和 CI 管道。
我正在努力解决的问题是在某些代码中引用了“sys.fn_get_audit_file”,它给出了“未解决的引用”错误。我不希望在构建项目时忽略任何错误,因此一直在尝试正确解决此问题。将数据库引用添加到 master 并不能解决问题,而且 SSDT 附带的 master.dacpac 文件似乎没有该 sys 函数的定义(在 model.xml 中)。我检查了 VS 文件夹中所有可用的 master.dacpac 文件版本,甚至尝试了 VS 2019 预览版,看看是否会附带更新版本的 master.dacpac。
在网上四处搜索,我意识到其他人在 master.dacpac 中缺少对象时遇到了类似的问题,建议的解决方案是编辑 model.xml,重新打包并更正校验和。我宁愿不走这条路,所以我尝试使用 SqlPackage 从 Azure 中的主数据库中提取 DACPAC,但提取的模型中几乎没有对象定义。
有什么建议吗?
【问题讨论】:
-
查看此解决方法是否适合您:1) 删除主引用(如果需要),2) 将目标平台更改为 SQL Server vNext,3) 添加系统数据库主引用 4) 将目标平台更改回Azure SQL 数据库 V12。
-
这实际上几乎解决了问题,因为 vNext 版本似乎确实在其 model.xml 中有新对象,但导致项目中对“sys”的每个引用都给出错误,即使解决方案无论新错误如何编译。主参考上有一个警告标志,并且在本地构建期间会忽略与其相关的错误。但是在 Azure DevOps (VSTS) 中完成时构建仍然失败。我不是 100% 这是相关的,但即使文件在那里,它也会失败并出现“无法加载 master.dacpac”错误。
-
即使 Azure DevOps 有效,(忽略的)错误列表对开发人员来说也是一个挑战,因为他们都需要知道忽略与主相关的错误,并找出哪些错误在它们发生时真正重要'正在工作。
标签: azure-sql-database sql-server-data-tools sqlpackage