在我的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
-声明(后期部署、附加项目……)
1条答案
按热度按时间kuhbmx9i1#
有你的
IF
检查一小批,然后设置PARSEONLY
至ON
.后续的每一批都不会执行,直到它碰到另一批
SET PARSEONLY
声明(是的,文档实际上没有提到这一点SET
语句不受“不编译和执行”的限制PARSEONLY
)