如何处理多个错误

时间:2011-05-11 15:22:36

标签: sql-server tsql

当我运行

之类的东西时
BACKUP LOG [somedb] 
TO DISK = N'i:\log.bak';

它会抛出2条错误消息:

Msg 3201, Level 16, State 1, Line 2
Cannot open backup device 'i:\log.bak'. Operating system error 3(The system cannot find    the path specified.).
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.

当我尝试使用TRY CATCH处理错误时,返回的错误始终为3013.这对我来说是个问题,因为我想知道备份是否由于空间不足或驱动器不存在而失败等等。

使用@@ ERROR返回相同的错误编号。

有没有办法处理像这样的多个错误消息?

1 个答案:

答案 0 :(得分:4)

您需要检查Errors中的SqlException集合:

catch(SqlException sqlEx)
{
    foreach(SqlError error in sqlEx.Errors)
    {
       int code = error.Number;
       string msg = error.Message;
    }
 }

您应该收到SqlException.Errors

中所有相关详细信息的所有错误