先连接好SQL(SQL在另一机上),然后断开网络或者重新启动SQL数据库,这个时候BeginTranss失败,返回0x8004d013(意思大概是不能在事务之上再开始另外一个事物)。原因估计是因为,之前开始了一个事物,还没有来得及CommitTrans就已经连接中断了。问题是:怎么样知道是因为连接中断产生的错误?连接中断怎么判断?
        什么时机进行重新连接比较好?
(实际上这个时候pConnection->State还是adStateOpen状态,所以即使网络恢复后,程序也不会重连接。 导致返回错误。)另外,我现在使用的是多个模块调用一个数据库访问模块。这个数据库访问模块使用ADO来访问数据库。

解决方案 »

  1.   

    可以通过查询某张表,再通SQLCA.SQLCODE的返回值去判断。
      

  2.   


    sqlConnection conn=new sqlConnection();
    ......if(true==conn.State)
    {
      //lianjie 
    }
    else
    {
      //wei lianjie
    }
      

  3.   


    T-SQL没有办法直接获取网络的状态。
      

  4.   

    try
    {
    pCmd->Execute.....;
    }
    catch(_com_error& e) 
    {
    cout << "错误信息:" << e.ErrorMessage() <<endl;
    cout << "错误源:" << e.Source() <<endl;
    cout << "错误描述:" << e.Description()  <<endl; }