Azure Pipeline DB 构建随机失败并出现 EsentVersionStoreOutOfMemoryException:版本存储内存不足

Azure Pipeline DB Build Fails Randomly with EsentVersionStoreOutOfMemoryException: Version store out of memory

我们为我们的 SSDT DACPAC 项目构建了 Azure DevOps Pipeline,在持续集成上设置为 运行。它已经 运行ning 几年了,我们定期和随机地看到以下构建失败的错误:

Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryException: Version store out of memory (cleanup already attempted)
   at Microsoft.Isam.Esent.Interop.Api.Check(Int32 err)
   at Microsoft.Isam.Esent.Interop.Api.JetUpdate(JET_SESID sesid, JET_TABLEID tableid, Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   at Microsoft.Isam.Esent.Interop.Update.Save(Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   ...

到目前为止,我们的解决方法是将新版本重新加入队列。 99% 的时间会解决问题。直到今天。现在,我连续 3 次对新的 CI 构建进行排队,每次都因相同的异常而失败。该项目在本地构建,因此管道构建过程存在一些问题。

我们是否可以在 MSBuild 管道构建过程中进行一些修复以消除此错误?

使用“/p:Storage=File”会占用更少的内存

/p:CmdLineInMemoryStorage=true 添加到管道构建任务的 MSBuild 参数为我解决了这个问题。到目前为止。

我发现发现了许多类似错误和修复的参考资料,但 none 确实必须专门针对 SSDT 构建 Azure DevOps 管道。

参见: