Sql server T-SQL脚本转到找不到标签

Sql server T-SQL脚本转到找不到标签,sql-server,tsql,Sql Server,Tsql,这是我的T-SQL脚本摘录-实际的脚本非常庞大 IF NOT EXISTS (SELECT * FROM tblDBVersion WHERE tblDBVersion.Version = '1.10.0') BEGIN PRINT 'Database isnt at 1.10.0. Upgrading.' GOTO DBUpgrade1100 END GOTO eof DBUpgrade1100: -- TSQL Upgrade

这是我的T-SQL脚本摘录-实际的脚本非常庞大

IF NOT EXISTS (SELECT * FROM tblDBVersion 
               WHERE tblDBVersion.Version = '1.10.0') 
BEGIN
    PRINT 'Database isnt at 1.10.0.  Upgrading.' 
    GOTO DBUpgrade1100
END

GOTO eof

DBUpgrade1100:
    -- TSQL Upgrade Script goes here --

eof:
    PRINT 'done'
运行此命令会产生以下错误:

连接到10.96.68.30作为sa

Msg 133,第15级,状态1,第77行 GOTO语句引用标签“eof”,但该标签尚未声明。 批处理执行期间遇到错误。 退出。 从10.96.68.30上断开连接,如sa

在-T-SQL升级脚本-区域中是否有什么东西会使eof:标签无法找到,或者我只是搞乱了其他东西


谢谢大家

事实证明,在使用GO的脚本中不能使用GOTO。这就是我所做的

如果存在,请从dbo.tblDBVersion中选择*,其中版本='1.10.1'抛出50000,“停止脚本!”,一,


如果SELECT语句返回任何行且未继续,脚本将停止。我没有得到我的条件脚本,但对我来说,这已经足够接近了,它可以与包含GO语句的脚本一起工作。

只是一个想法-但我怀疑您的TSQL升级脚本中的某个地方出现了一个额外的结尾或其他终止脚本的内容。看看它是否编译了脚本中评论的所有内容。我认为它退出的原因是因为在脚本组件中有GO语句,GO语句终止了我研究中的批处理:尝试重构它一点GOTO无论如何都很恶心是的,绝对是的。GO是批处理的结束,您不能转到其他批处理中的标签。此外,如果您以sa的身份运行,请停止。它位于我的开发服务器上,我正在开发tsql脚本以提供给dba。我以SA的身份运行它,因为它是本地开发实例。