【发布时间】: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