如何从 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”