使用 sqlPackage.exe 部署 dacpac 时仅包括 SP、视图、Table 和函数

Include only SP,Views,Table & Functions while deploying dacpac using sqlPackage.exe

我们正在努力实现 SQL 项目部署的自动化。当我使用 Visual studio 进行架构比较时,我有一个选项 "application scoped",其中我 select 仅用于比较 SP、Table、视图和功能。

现在我们正朝着 CI/CD 迈进,并想检查是否有任何方法可以限制 sqlPackage.exe 仅比较列出的对象类型并仅将更改部署到这些对象。

是的,有两个选项,首先排除您不需要的所有内容 /p:ExcludeObjectTypes - 除了您感兴趣的内容之外的所有内容的 csv 列表:

https://docs.microsoft.com/en-us/sql/tools/sqlpackage?view=sql-server-2017

或者您可以不将它们放入您的项目中,并使用“不要丢弃不在源 dacpac 中的对象”。

在短期内使用您所做的一切,目标是随着时间的推移改变为项目中的所有内容。

您可以使用 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

请不要说';'用作分隔符,如果您使用 ',' 它将不起作用(并且不会导致错误)。

我有一个 SAAS 解决方案的多个数据库。每个租户都有自己的数据库。我已将迁移项目配置为使用 DevOps 管道迁移多个数据库。我使用了 DacDeployOptions and set the variable for ExcludeObjectTypes(如下图所示)。它对我来说很好用,忽略了 table 的变化。