我将Ola Hallengren的优秀维护解决方案脚本整合到DBA工具数据库项目中。这是使用SSDT 2015与SQL Server 2012的目标平台维护的。该项目包括对内置系统数据库master和amp;的引用。 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' s [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数据库。
所以,我想我的问题是:
答案 0 :(得分:0)
虽然我没有解决原始问题(master.dacpac中缺少系统DMV),但我确实得到了我最初提出的两个问题的答案。
是的,这是SSDT附带的master.dacpac的一般问题。不,似乎没有任何方法可以获得更新的master.dacpac,而无需使用之前详述的解决方法自行破解它。
我现在在UserVoice上提出了一个项目,请求在SSDT中更新系统数据库DACPAC的方法。 如果有机会,请考虑投票。感谢。