为什么 dacpac 无法更新 azure sql server 上的视图?

问题描述

我们有一个 sql 部署包,又名 dacpac,其中 sql 视图的定义已更改。

部署过程可能无法alter 现有视图是否有任何原因?部署管道的 sql deploy 步骤像往常一样运行没有错误,所以那里没有任何线索。

它只是在我们的 azure 管道部署中无法正常工作,它可以在本地数据库上运行。尽管我们已经使用 dacpac 一年多了,但这是我们第一次遇到这个问题。

如果有人知道 dacpacs 如何决定发出哪些改变语句会很有用。


抱歉,这有点含糊,但我们正在抓紧稻草。如果可以,我们会放弃糟糕的 dacpac 系统,但这需要更长的时间。欢迎提供明显的答案,例如“它是否指向正确的数据库”,因为任何疯狂的猜测都可以让我们达到目标。

解决方法

理想情况下,视图应作为 DACPAC 发布的一部分进行更改。如果没有发生,可能是因为视图被列为排除对象。

/p: ExcludeObjectType=(STRING) Views
/p: ExcludeObjectTypes=(STRING) Views;Triggers

Sql Package Publish options

,

继续从同一个版本创建新版本,直到其中一个版本正确部署。

这不应该是答案,因为 dacpac 没有改变,但它最终起作用了。

我只能猜测这是因为 dacpac 通过检查数据库来确定在部署时要进行哪些更改,因此从根本上说是不确定的。正是您不希望用于更改生产数据库架构的系统。