【发布时间】:2018-04-24 11:00:01
【问题描述】:
我已将 Ola Hallengren 出色的维护解决方案脚本整合到 DBA 工具数据库项目中。这是使用 SSDT 2015 和 SQL Server 2012 目标平台维护的。该项目包括对内置系统数据库 master 和 msdb 的引用。项目构建成功。
Ola 最近updated 他的脚本现在包含对新 SQL Server 2017 DMV 的引用,因此将更新的脚本合并到我的数据库项目中会为新 DMV 生成未解决的引用错误。
SQL71502: Procedure: [dbo].[DatabaseBackup] has an unresolved reference to object [sys].[dm_os_host_info]
SQL71502: Procedure: [dbo].[DatabaseBackup] has an unresolved reference to object [sys].[dm_db_log_stats]
虽然我没有在任何地方安装 SQL Server 2017,但我尝试将目标平台更新到 SQL Server 2017,然后删除并重新创建主数据库引用(即将 master.dacpac 更新到 SQL Server 2017 版本),但这并没有消除构建错误。
引用的dacpac的文件路径是:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac
当我检查 dacpac 时,新 DMV 的 [sys].[dm_os_host_info] 和 [sys].[dm_db_log_stats] 不在那里。
我昨天联系了 Slack,Peter Schott 向我推荐了一篇他写的关于如何更新 master.dacpac (link) 的优秀博文。理论是抓住丢失的DMV并将它们自己添加到master.dacpac。我必须启动一台测试机器并安装 SQL Server 2017 才能做到这一点,但它作为一种解决方法是可行的。
但是,这感觉像是我不应该做的事情。毕竟这些是master.dacpac中缺少的系统DMV,而不是我自己的代码添加到master数据库中。
所以,我想我的问题是:
- 这是我本地 SSDT 安装的问题,还是 SSDT 安装的 dacpac 中缺少系统 DMV 的一般问题?
- 如何在不自行破解的情况下获取更新(和签名)的 master.dacpac?
【问题讨论】:
-
感谢@JeroenMostert,我已经在 MSDN 论坛上提出了这个问题。
标签: sql-server sql-server-data-tools