如何部署具有已知(和可接受的)数据丢失的 DACPAC 版本
How to deploy a DACPAC release with known (and accepted) Data Loss
我正在通过 Azure DevOps 中的 DACPAC 版本管理 SQL 服务器数据库。
我的项目目前正在开发中,但我希望在 Prod 上线后继续开发。
默认情况下,如果即将发生数据丢失,我将发布配置设置为 b0rk,尤其是在 Prod 中 - 大多数更改不应该导致它,我的直觉是整体数据丢失更有可能表明一个错误,而不是故意放弃数据。
但自然地,我预计在某些情况下迁移会故意丢弃数据,这是预期的并且没问题。
我想以一种我可以实现的方式设置 DevOps,以一种可控且稳健的方式。
实现此目标的最佳方法是什么?
我的理想是基本上说“是的,部署这个版本......是的,我知道它会导致数据丢失,没关系。”
我有一个想法,我会 post 作为答案。但我正在寻找其他想法,或任何“标准”或“官方”方法。 (或者只是 更好 想法 :D )
DevOps 允许您将参数传递给 SqlPackage.exe
,其中一个参数控制 DACPAC 如何响应潜在的数据丢失:
/p:BlockOnPossibleDataLoss=false
由于 DevOps 发布管道本身是可参数化的,通过发布“变量”,并且可以在特定发布中编辑变量而不影响默认设置。
因此可以简单地参数化传递给 SqlPackage.exe
的值,从而创建一个允许或不允许基于该变量的 DataLoss 的版本,以及何时需要发布 是否需要数据丢失,创建一个版本并相应地设置变量。
编辑:工作正常
我正在通过 Azure DevOps 中的 DACPAC 版本管理 SQL 服务器数据库。 我的项目目前正在开发中,但我希望在 Prod 上线后继续开发。
默认情况下,如果即将发生数据丢失,我将发布配置设置为 b0rk,尤其是在 Prod 中 - 大多数更改不应该导致它,我的直觉是整体数据丢失更有可能表明一个错误,而不是故意放弃数据。
但自然地,我预计在某些情况下迁移会故意丢弃数据,这是预期的并且没问题。
我想以一种我可以实现的方式设置 DevOps,以一种可控且稳健的方式。 实现此目标的最佳方法是什么?
我的理想是基本上说“是的,部署这个版本......是的,我知道它会导致数据丢失,没关系。”
我有一个想法,我会 post 作为答案。但我正在寻找其他想法,或任何“标准”或“官方”方法。 (或者只是 更好 想法 :D )
DevOps 允许您将参数传递给 SqlPackage.exe
,其中一个参数控制 DACPAC 如何响应潜在的数据丢失:
/p:BlockOnPossibleDataLoss=false
由于 DevOps 发布管道本身是可参数化的,通过发布“变量”,并且可以在特定发布中编辑变量而不影响默认设置。
因此可以简单地参数化传递给 SqlPackage.exe
的值,从而创建一个允许或不允许基于该变量的 DataLoss 的版本,以及何时需要发布 是否需要数据丢失,创建一个版本并相应地设置变量。
编辑:工作正常