nofaceapple 2018-04-13 01:10 采纳率: 0%
浏览 4778
已结题

偶尔出现[DBNETLIB]ConnectionRead(recv())一般性网络错误

各位大神 帮忙看一下
最近做了个项目 VB+SQLSERVER2005
2台一模一样电脑连接本机数据库,全天开
一台没问题
另外一台一天到二天会报个错出现[DBNETLIB]ConnectionRead(recv())一般性网络错误
困扰了我很久
检查了配置,防火墙也关了
因为这个错误,一天到2天才会出现一次,所以不好判断,另外台电脑就没出过问题
配置、代码2台都一样的

  • 写回答

1条回答 默认 最新

  • qq_36213650 2018-04-13 07:21
    关注

    先使用PING命令检查ADO连接的数据库IP地址,看看是否有网络丢包,在网络正常的情况下,有一种原因会造成上述错误,那就是数据库创建连接之前,_ConnectionPtr指针没有创建唯一实例,以及数据连接没有设置为长连接。解决此问题的代码如下:

    1.

    m_pConnection.CreateInstance(__uuidof(Connection));
    m_pConnection->ConnectionTimeout= 0;
    m_pConnection->Open((_bstr_t)m_strConnect,_T(""),_T(""),adModeUnknown);

    当然,connectionTimeout,也可根据网络环境设置连接时间,如不设置,默认时间为30s。设置为0,为不限时间一直连接,但这样有可能会导致程序死锁,如果网络环境差,可以设置为100或者更多。

    接上述问题,如果_ConnectionPtr指针实例在当前线程中每次数据库操作时创建,也会导致一般性网络错误,所有在一个线程中,唯一实例(_ConnectionPtr、_RecordsetPtr、_CommandPtr)被创建一次后,就可以进行当前线程中所有数据库操作,除非唯一实例被Release,才需要重新创建唯一实例。

    2.

    打开端口1433,MSSQL默认是TCP:1433;

    防火墙将TCP:1433端口,添加入站规则;

    SQL Server Browser 服务需要启动,才能正常.

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制