try
{
    CString sSQL = "restore database test from disk = 'd:\\test.dat'";
    m_pConn->Execute((_bstr_t)sSQL, NULL, adCmdText);
}
catch(_com_error e)
{
    MsgBox(e.Description(), MB_ICONHAND);// 捕捉异常
     return -2;
}比如源文件不存在,或当前库正在使用无法恢复,这些错误都捕捉不到,但如果sql语句有语法错误,则可以捕捉到。有什么办法能把所有的错误都捕捉到。谢谢!

解决方案 »

  1.   


    做成 SQL Server 的存储过程,可以判断备份是否成功;
    然后在客户端程序中判断 存储过程 的返回值。
      

  2.   

    to zaodt:
    存储过程是个好办法,但我不想再改程序了。在客户端程序里就不能捕捉到SQLServer的所有错误信息吗?
      

  3.   

    总结一下: 
    数据库连接、SQL语法错误、或某个操作的库、表不存在,这些都能捕捉到 
    但恢复数据库时,若D:\test.dat不存在,或当前库在使用无法恢复,这些都捕捉不到望高人指点。
      

  4.   

    catch(_com_error e)
    {
        MsgBox(e.Description(), MB_ICONHAND);// 捕捉异常
        return -2;
    }
    catch(...)
    {
       
    }
      

  5.   

    to cofanz 
    试过,还是捉不到根本没跳到这里
    catch(...) 
    {  
    }