仅在满足条件时才执行许多脚本,而不会通过GO语句破坏IF

在我的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语句的最佳方法是什么? (部署后,其他项目,...?)

iCMS 回答:仅在满足条件时才执行许多脚本,而不会通过GO语句破坏IF

先进行<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div>的签入,然后将PARSEONLY设置为IF

所有后续批处理都不会执行,直到命中另一个ON语句为止(是的,文档实际上并未提到SET PARSEONLY语句可免于“请勿编译并执行” -SET的大小}

本文链接:https://www.f2er.com/1828900.html

大家都在问