首页 > 解决方案 > SQL Server TRY/CATCH 中的内部消息

问题描述

我想在运行时处理我的程序中的错误

BACKUP DATABASE [MyDb] TO DISK = 'c:\Test.bak' WITH COMPRESSION;

命令。

如果我在没有 的情况下运行此命令TRY/CATCH,我会收到两个错误:

消息 3201,级别 16,状态 1,第 24 行
无法打开备份设备“c:\Test.bak”。操作系统错误 5(拒绝访问。)。

消息 3013,级别 16,状态 1,第 24 行
备份数据库异常终止。

但是当我TRY/CATCH在这里显示的语句中使用时,我只得到这个错误的第二部分:

BEGIN CATCH
        select ERROR_MESSAGE()
END CATCH

返回的错误只是:

BACKUP DATABASE 异常终止。

我怎样才能得到两部分错误?

标签: sql-servertry-catch

解决方案


显然我误解了这个问题,所以从头开始。

SELECT   
     ERROR_NUMBER() AS ErrorNumber  
    ,ERROR_SEVERITY() AS ErrorSeverity  
    ,ERROR_STATE() AS ErrorState  
    ,ERROR_LINE () AS ErrorLine  
    ,ERROR_PROCEDURE() AS ErrorProcedure  
    ,ERROR_MESSAGE() AS ErrorMessage;  

推荐阅读