【问题标题】:Include only SP,Views,Table & Functions while deploying dacpac using sqlPackage.exe使用 sqlPackage.exe 部署 dacpac 时仅包括 SP、视图、表和函数
【发布时间】:2019-07-17 10:05:30
【问题描述】:

我们正在努力实现 SQL 项目部署的自动化。当我使用 Visual Studio 进行架构比较时,我有一个“应用程序范围”选项,我只选择比较 SP、表、视图和函数。

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

【问题讨论】:

  • 是和不是。不,您不能要求它仅包含特定的对象类型。是的,您可以要求它排除特定的对象类型 (/p:ExcludeObjectTypes),因此您可以通过排除您不想要的所有内容来过滤您想要的内容。您可以使用通过 DacFx API 公开的编程模型来做更有针对性/方便的事情,但这需要编写代码。
  • @JeroenMostert - 感谢您的意见。它有帮助。我正在寻找一些属性,它可以选择包含我想要比较的内容,但它是相反的。感谢您的帮助!

标签: sql sql-server sql-server-data-tools ssdt-bi


【解决方案1】:

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

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

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

使用您在短期内所做的任何事情,目标是随着时间的推移将所有内容都包含在您的项目中。

【讨论】:

  • 它对我不起作用!我正在通过添加此属性进行测试,但我不应该得到任何更改。它无法正常工作。我仍然在部署脚本“/p:ExcludeObjectTypes="Views, ServerRoles, ServerTriggers"
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我有多个用于 SAAS 解决方案的数据库。每个租户都有自己的数据库。我已将迁移项目配置为使用 DevOps 管道迁移多个数据库。我使用了DacDeployOptions 并将变量设置为ExcludeObjectTypes(如下图所示)。它对我来说很好,并且忽略了表格的变化。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多