问题描述
我们有一个 sql 部署包,又名 dacpac
,其中 sql 视图的定义已更改。
部署过程可能无法alter
现有视图是否有任何原因?部署管道的 sql deploy 步骤像往常一样运行没有错误,所以那里没有任何线索。
它只是在我们的 azure 管道部署中无法正常工作,它可以在本地数据库上运行。尽管我们已经使用 dacpac 一年多了,但这是我们第一次遇到这个问题。
如果有人知道 dacpacs 如何决定发出哪些改变语句会很有用。
抱歉,这有点含糊,但我们正在抓紧稻草。如果可以,我们会放弃糟糕的 dacpac 系统,但这需要更长的时间。欢迎提供明显的答案,例如“它是否指向正确的数据库”,因为任何疯狂的猜测都可以让我们达到目标。
解决方法
理想情况下,视图应作为 DACPAC 发布的一部分进行更改。如果没有发生,可能是因为视图被列为排除对象。
/p: ExcludeObjectType=(STRING) Views
/p: ExcludeObjectTypes=(STRING) Views;Triggers
,
继续从同一个版本创建新版本,直到其中一个版本正确部署。
这不应该是答案,因为 dacpac 没有改变,但它最终起作用了。
我只能猜测这是因为 dacpac 通过检查数据库来确定在部署时要进行哪些更改,因此从根本上说是不确定的。正是您不希望用于更改生产数据库架构的系统。