如何从 Dacpac for Azure Pipeline CI/CD 中自动排除仅开发表?

Posted

技术标签:

【中文标题】如何从 Dacpac for Azure Pipeline CI/CD 中自动排除仅开发表?【英文标题】:How to to exclude automatically Dev only tables from Dacpac for Azure Pipeline CI/CD? 【发布时间】:2021-12-12 19:47:49 【问题描述】:

我有使用 Dacpacs 的 Azure 数据库的 Azure Devops。 我可以轻松地将架构从 Dev 部署到 Test 和 Prod。

但是我有一个问题。开发数据库有几个我不想部署到测试和生产的仅限开发表。

使用 Visual Studio 手动排除某些表会导致人为错误,并且某些不需要的表已部署到 prod。

是否有解决方案可以确保仅从 Dacpac 中自动排除仅限 Dev 的表?

如果表名以“Temp*”开头是否可以自动过滤?

【问题讨论】:

为什么不把它们完全从项目中移除呢?默认设置是它们不会被丢弃。您也可以在单个脚本属性中从构建中排除 - “不要构建”,但我认为您最好将它们删除。 【参考方案1】:

不,您不能要求它只包含某些对象类型。是的,您可以要求它排除某些对象类型 (/p:ExcludeObjectTypes),允许您过滤到您想要的内容,同时消除其他任何内容。使用 DacFx API 的编程范式,您可以完成更有针对性/方便的事情,但它需要编程代码。

您可以使用 sqlPackage.exe 来限制修改,通过使用 /p:ExcludeObjectTypes 参数来指示您不想部署的种类。

以以下为例:/p:ExcludeObjectTypes="StoredProcedures;ScalarValuedFunctions;TableValuedFunctions"

以下是可能的 ExcludeObjectTypes 参数列表:https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.dac.objecttype?view=sql-dacfx-150

【讨论】:

以上是关于如何从 Dacpac for Azure Pipeline CI/CD 中自动排除仅开发表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Azure DevOps 的 dacpac 文件帮助更改多个数据库(CD /CI 流程)

通过 PowerShell 从本地 SQL Server 2016 将 dacpac 发布到 Azure SQL 托管实例失败“无法发布到 SQL Server 2014”

azure 中的 Dacpac 部署将值称为无效的列名

当我们在 Visual Studio 2019 中创建 dacpac 文件时,Azure 数据仓库物化视图出现问题

在 DACPAC 部署中使用 SQL 变量来区分权限

如何将 DACPAC 部署到事务复制数据库