提问人:Tahami Rizwan 提问时间:10/5/2023 最后编辑:Tahami Rizwan 更新时间:10/14/2023 访问量:114
如何从 Azure DevOps 管道中的 DACPAC 部署中排除特定表或列?
How can I exclude specific tables or columns from DACPAC deployment in Azure DevOps pipelines?
问:
我正在使用 Azure DevOps 管道来部署 DACPAC 来更新我的 SQL Server 数据库。但是,我需要排除某些对象,例如 tables/sp's/indexes 在部署期间更新。有没有办法在DACPAC部署中实现这种粒度级别?如果是这样,我应该使用哪些步骤或配置来实现此目的?
答:
0赞
Dmitrij Kultasev
10/6/2023
#1
我不熟悉 DevOps 管道,但我认为该过程与 SSDT 类似。然后,您不能轻易排除正在更新的列,您可以执行以下操作:
- 创建项目:
- 包含除该表之外的所有对象的主项目
- 具有包含所有列的单个表的项目。将主项目引用为“同一项目”
- 具有单个表的项目,没有一些列。将主项目引用为“同一项目”
- 使用部署参与者。它们允许您完全控制整个部署过程。这可能在云中不可用。
0赞
Ivan Starostin
10/14/2023
#2
这并不是 CICD 中部署部分项目的常见方案,但您可以使用部署参与者,它支持按名称相等或掩码过滤对象,例如*namepart*
筛选器应作为 sqlpackage CLI 参数传递:
...
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
但是,如果您每次都需要排除不同的对象,那么您应该重新考虑您的方法并修复为什么总是有一些对象处于合法差异状态的原因。
评论
SqlPackage.exe
SqlPackage.exe
SqlPackage.exe
SqlPackage.exe