附近有语法错误“OFF”

问题描述:

我找不到任何有关,所以请,我知道附近有语法错误“OFF”

我使用SQL Server 2012的

我使用Visual Studio创建一个脚本2012点的数据进行比较,所以我可以更新一个数据库到另一个。

脚本(43k +行)在运行时说,查询已完成且出现错误(如果发生错误,则设置为回滚),但不显示任何消息。

然后我说一个try/catch,如下图所示:

begin try 
{script} 
end try 
begin catch 
    --returns the complete original error message as a result set 
    SELECT 
     ERROR_NUMBER() AS ErrorNumber, 
     ERROR_SEVERITY() AS ErrorSeverity, 
     ERROR_STATE() AS ErrorState, 
     ERROR_PROCEDURE() AS ErrorProcedure, 
     ERROR_LINE() AS ErrorLine, 
     ERROR_MESSAGE() AS ErrorMessage 

    --will return the complete original error message as an error message 
    DECLARE @ErrorMessage nvarchar(400), @ErrorNumber int, 
      @ErrorSeverity int, @ErrorState int, @ErrorLine int 

    SELECT @ErrorMessage = N'Error %d, Line %d, Message: '+ERROR_MESSAGE(),@ErrorNumber = ERROR_NUMBER(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(),@ErrorLine = ERROR_LINE() 
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState,  @ErrorNumber,@ErrorLine) 
end catch 

它说

附近有语法错误 'OFF' 的第13行

下面

是行号和剧本..

SET NUMERIC_ROUNDABORT OFF (Line 13) 
GO (Line 14.. etc) 
SET XACT_ABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON 
GO 

变化的线路13,以使GO才是硬道理(所以结合13 ADN 14)给出了错误

消息102,级别15,状态1,行13
附近有语法错误 'GO'。

Msg 102,Level 15,State 1,Line 14
'ON'附近的语法不正确。

这让我想到一些奇怪的问题,但我似乎无法弄清楚。

我已经多次使用脚本创建工具,并且过去没有问题。

谢谢您的时间。

编辑:下面的代码

SET NUMERIC_ROUNDABORT OFF GO 
SET XACT_ABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON 
GO 

给第1行

错误此问题已得到修复:它是固定的被我沮丧,打在开始进入关键的5倍,使所有的线路向下移动5.现在它可以工作。我不明白。如果有人可以解释,我会给你一个互联网Cookie或什么.. idk ...

GO is not a Transact-SQL statement - 这是一个SQL管理工作室和其他实用程序的说明,在这一点上,他们应该打破你的脚本分成两个独立的批次。这基本上就好像你第一次运行一个文件到GO,然后在声明之后开始另一个文件。

这意味着您的第一批语法不正确,因为它的BEGIN TRY没有匹配的END TRY。你需要摆脱GO,或者,如果不可能,请将每一批包装到它自己的try/catch中。

+0

我会这样做的,但仍然存在没有尝试/抓住跑步的问题 - 没有提供任何错误 - 您是否也有这个想法? 编辑:移动开始尝试在这些行下面仍然给出相同的错误。 – badamtisss

+0

@badamtisss这些生成的脚本往往有很多'GO's。你有没有确定你的try块中没有'GO'? – kamilk

+0

是的,我再次检查。 – badamtisss