在sql job中调用时,GO语句的行为有所不同

时间:2015-03-24 15:09:42

标签: sql sql-server

请您解释一下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的概念,任何好的链接也会非常有用。

1 个答案:

答案 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