我正在将现有的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,但是提取的模型中几乎没有对象定义。
有什么建议吗?
答案 0 :(得分:0)
有人应该向Microsoft的团队提出这个建议-我知道他们在这里监视,以便有人可以提供帮助?
在此期间,看起来天青支持fn_get_audit_file
,但仍然根据文档。
我创建了几个dacpac,欢迎您使用,其中有旧的Azure版本:
https://the.agilesql.club/assets/dacpacs/azure/master.dacpac
和v12版本:
https://the.agilesql.club/assets/dacpacs/azurev12/master.dacpac
我所做的是从我的机器中获取现有的azure主dacpac(相对于2017年),并从非azure版本中添加了sys.fn_get_audit_sql
元素。
为此,我使用7zip解压缩model.xml,然后编辑xml文件,并将model.xml文件复制回dacpac。
这确实会导致模型的校验和错误,所以我有一个小应用程序,它使用正确的校验和来重写origin.xml,如果有人愿意,我会将其放在github上,但这是的版本这个:
https://github.com/GoEddie/Dacpac-References/tree/master/src/GOEddie.Dacpac.References
当我拥有master.dacpac时,我将它们复制回了VS 2017:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ AzureV12 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ AzureV12 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ AzureV12
(取决于版本)
这使我可以在azure / azurev12项目中使用fn_get_audit_sql:
希望有帮助!
编辑