附近有语法错误“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中。
我会这样做的,但仍然存在没有尝试/抓住跑步的问题 - 没有提供任何错误 - 您是否也有这个想法? 编辑:移动开始尝试在这些行下面仍然给出相同的错误。 – badamtisss
@badamtisss这些生成的脚本往往有很多'GO's。你有没有确定你的try块中没有'GO'? – kamilk
是的,我再次检查。 – badamtisss