请您解释一下GO声明的行为。 我给了两个T-SQl语句
truncate table CustomerDetails
GO
truncate table CustomerDetails_Log
GO
CustomerDetails表不存在,即使我截断表,它也会转到下一个语句,但是在SQL服务器的Message部分显示" CustomerDetails表没有存在"然后继续截断CustomerDetails_Log。 如果我在SQL作业中放置相同的SQL语句集,则它在第一级失败,并且不会继续执行下一个语句。 任何人都可以请你解释一下这种行为,为什么GO在作业和TSQL中表现不同。
由于 P.S:我确实理解我没有正确理解GO的概念,任何好的链接也会非常有用。
答案 0 :(得分:1)
要在SQL作业中执行此操作,您可以将每个步骤包装在TRY / CATCH块中。这样可以让您处理/记录任何问题。
BEGIN TRY
TRUNCATE TABLE CustomerDetails
END TRY
BEGIN CATCH
-- Log error
END CATCH
GO
BEGIN TRY
TRUNCATE TABLE CustomerDetails_Log
END TRY
BEGIN CATCH
-- Log error
END CATCH
GO