Azure DevOps Azure SQL DacpacTask SQL72018 无法导入权限

Azure DevOps Azure SQL DacpacTask SQL72018 Permission Could Not Be Imported

我们在 Azure DevOps 中有一个发布管道,它通过 Azure SQL Dacpac 任务将数据库项目部署到我们的 Azure SQL 数据库。一切正常,但昨天管道突然开始出现以下错误:

##[error]*** An error occurred during deployment plan generation. Deployment cannot continue.
##[error]Error SQL72018: Permission could not be imported but one or more of these objects exist in your source.

据我所知,数据库端或管道中没有任何变化。我们还排除了它可能是特定 dacpac 文件的问题,因为以前成功的版本现在失败并出现相同的错误。

我广泛搜索了 SQL72018 错误,但没有真正找到任何导致错误的答案,所以我想知道是否有一些 Azure DevOps 任务更新或我们可以做的事情不见了?

不确定是什么导致它像那样突然爆发。

如果我们将 p:/ignorePermissions=true 参数添加到任务中,它确实有效,但在此之前我们从未需要它。

更新:

想更新这个,因为我能够通过将 /Diagnostics:True 参数添加到管道任务来收集更多信息,以便从 SQLPackage 中打印出诊断信息。

当我添加它时,我也看到了这个错误:

Microsoft.Data.Tools.Diagnostics.Tracer 错误:1:2022-04-05T08:38:37:对数据库进行逆向工程时检测到错误。严重性:'Warning' 前缀:'' 错误代码:'0' Message:The 权限 'VDP ' 未被识别且未导入。如果此问题仍然存在,请联系客户支持。

所以看起来问题的原因似乎是某些“VDP”权限,但我们不知道该权限的用途或来源,因为它不在数据库项目中。

您似乎在目标数据库中拥有 spurious/orphan 权限 - 如本 post How could our database be causing SqlPackage to fail? (SQL72018).

中所述

我们终于弄清楚了。事实证明,在管道开始失败的前一天,一个新的权限被添加到数据库中。导致问题的数据库权限是 VIEW DATABASE PERFORMANCE STATE。那是 SQLPackage.exe 抱怨的 VDP 权限。

不确定为什么该特定权限会导致错误,因为我们在数据库项目之外管理我们的所有数据库权限,因此不确定为什么其他权限不会在此之前导致问题。

由于我们在数据库项目之外管理权限,因此解决方案是将 p:/ignorePermissions=true SQLPackage 参数永久添加到管道中。在我们提交工单后,Microsoft 代表确认这是合适的解决方案。