【问题标题】:SQL Data tools - Run post-deployment script with conditionalsSQL 数据工具 - 使用条件运行部署后脚本
【发布时间】:2017-08-18 10:53:27
【问题描述】:

我正在使用 Database Projecto 使用“数据包”部署数据库

我已经设置了一个参数“客户端”,因此我将根据客户端运行一组不同的脚本。

我尝试了不同的选项,但没有任何效果。

我已经查看了Conditional logic in PostDeployment.sql script using SQLCMD,但没有运气

if '$(client)' = 'a' 
:r .\GeneralParams\s01.sql 
:r .\Clients\a\a01.sql 

GO

if '$(client)' = 'b'
:r .\GeneralParams\r01.sql
:r .\Clients\b\b01.sql

在每个外部脚本中都有超过 1 个 GO 当您看到要执行的输出文件时,它会将所有外部文件编译为一个。

有谁知道克服这个问题的方法,一个漂亮的解决方法

我试过这个选项:

if '$(client)' = 'a' 
:r .\GeneralParams\s01.sql 
if '$(client)' = 'a' 
:r .\Clients\a\a01.sql 

GO

if '$(client)' = 'b'
:r .\GeneralParams\r01.sql
if '$(client)' = 'b'
:r .\Clients\b\b01.sql

但是 r01 有超过 1 个 GO 并退出 if 子句

【问题讨论】:

  • 如果外部文件只有 1 个 GO,脚本可以工作,但我有多个,脚本执行一些命令忽略 IF 子句
  • 对我有用但没有我想要的优雅的方法是将 if 子句放在每个外部脚本上

标签: sql-server continuous-integration sql-server-data-tools


【解决方案1】:

我设法实现这一点的方式是在每个外部文件中执行单独的 if 子句。这不是一个漂亮的,但它工作。我创建了一个输出子句来注册对数据库所做的所有 crud 更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2017-04-07
    • 2016-05-19
    • 2023-03-09
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多