sql—仅在满足条件时执行许多脚本,而不中断if through go语句

yk9xbfzb  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(380)

在我的ssdt项目(visualstudio数据库项目)中,我有很多脚本,只有在满足条件时才能执行。
条件是servername( @@servername != 'LiveServer' ).
脚本将执行各种操作,如创建表/存储过程/作业、从其他地方获取数据等。
因为有许多事情将被执行,有很多 GO -脚本中的语句。
问题是:
因为有很多 GO -声明,我如何让条件发挥作用?当你这样做的时候,我想 GO 里面的陈述 PostDeployMasterScripts 将打破 IF -声明?

IF (@@SERVERNAME != 'LiveServer')
print CONVERT(varchar, sysdatetime(), 8) + ' executing linked scripts'
:r .\PostDeployMasterScripts\Linked\CreateTemporaryTables.sql
:r .\PostDeployMasterScripts\Linked\CreateProcedures.sql
:r .\PostDeployMasterScripts\Linked\FetchInitialData.sql
:r .\PostDeployMasterScripts\Linked\CreateJobs.sql
print CONVERT(varchar, sysdatetime(), 8) + ' linked postdeploy finished'
GO

我在考虑将所有这些postdeploy脚本移到解决方案中的一个单独的项目中,但我不确定这是否能解决问题,即使我找到了一种只在给定条件下执行脚本的方法。
所需解决方案:(tl;博士)
实现给定条件并执行脚本而不破坏脚本的最佳方法是什么 IF -声明(后期部署、附加项目……)

kuhbmx9i

kuhbmx9i1#

有你的 IF 检查一小批,然后设置 PARSEONLYON .
后续的每一批都不会执行,直到它碰到另一批 SET PARSEONLY 声明(是的,文档实际上没有提到这一点 SET 语句不受“不编译和执行”的限制 PARSEONLY )

相关问题