在我的SSDT项目(Visual Studio数据库项目)中,只有满足条件的情况下,我必须执行很多脚本。
条件是服务器名(@@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,8) + ' linked postdeploy finished'
GO
我当时正在考虑将所有这些部署后脚本移至解决方案中的单独项目中,但是我不确定这是否可以解决问题,即使并且当我找到一种仅在以下条件下执行脚本时给定条件。
所需的解决方案:(tl; dr)
实现给定条件并执行脚本且不破坏IF
语句的最佳方法是什么? (部署后,其他项目,...?)