在SQLCMD模式下使用“:on error exit”时如何显示错误信息?

时间:2014-11-19 19:58:16

标签: sql-server tsql sql-server-2012 ssms sqlcmd

我在SQL Server 2012中查询了T-SQL语句,并启用了SQLCMD模式,在SSMS中以交互方式运行。有一个:on error exit声明。当我运行查询时,查询窗口显示“查询已完成但有错误”但未显示错误消息。

如何显示错误消息?

2 个答案:

答案 0 :(得分:0)

参考MSDN(RaiseError)来实现您的目标:

严重级别 11-19 将导致执行跳转到CATCH块。

BEGIN TRY

    RAISERROR ('Error raised in TRY block.', -- Message text.
               16, -- Severity.
               1 -- State.
               );
END TRY
BEGIN CATCH

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

    -- Use RAISERROR inside the CATCH block to return error
    -- information about the original error that caused
    -- execution to jump to the CATCH block.
    RAISERROR (@ErrorMessage, -- Message text.
               @ErrorSeverity, -- Severity.
               @ErrorState -- State.
               );
END CATCH;

注意:使用20到25之间的严重性级别被视为致命错误,将导致客户端连接突然终止。

答案 1 :(得分:0)

这是语法错误,而不是运行时错误。我不确定SQLCMD模式是否在SSMS中没有显示任何错误,如vanilla sQL。