我用odbc连接s1q2000数据库,应用程序采用adoconnection 连接数据库成功。
然后应用程序采用多线程向数据库发送sql语句查询,每个线程发送大量的多条sql语句查询
但是偶尔会出现一些错误
 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
 [Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server 不存在或访问被拒绝
把这些错误关闭后,发送sql语句的各条线程还能正常运行这是什么原因造成的呢 是不是发送查询语句的时候太忙,odbc来不及响应 才会出现这样的问题呢??

解决方案 »

  1.   

    我的整个应用程序 都使用的同一个连接  m_pConnection.CreateInstance(__uuidof(Connection))多个线程都使用这个连接发送sql查询
    不知道我这里的connection 和你所说的连接数是不是一个概念
      

  2.   

    1. 今天下午调试一个系统,用的是JDBC-ODBC驱动。 
       在我本机Tomcat做测试,发现使用startup.bat启动Tomcat服务后,访问Web服务一切正常。   但使用Monitor Tomcat 启动Tomcat作为服务例程,则访问Web服务报错:     [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序。
    2. 但ODBC数据源配置时测试也正常。   我晕。
    3. 跟踪排查一下,发现是在 DriverManager.getConnection()的时候报错的。   可能还是ODBC的问题。   但不知道是咋回事了。
    4. 上网查了N久,一语道破“要用系统DSN”。   关于这点还真没有想到。
    5. 一直使用“用户DSN”建立“用户数据源”的。   DSN:Date Source Name,数据源名称。
    6. 在“ODBC数据源管理器”中,设置用于连接数据库的DSN有三种: 用户DSN、系统DSN和文件DSN。   因为Monitor Tomcat启动的Tomcat服务是作为系统级NT服务例程运行的,这样就无法访问“用户DSN”建立的“用户数据源”。
    7. 果然,建立了“系统数据源”就OK了。
    来源:http://hi.baidu.com/honglg365/blog/item/cf8c3e179862630b4b90a73f.html
      

  3.   

    [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
     [Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server 不存在或访问被拒绝>>>
    这个错误是出现在哪里的?
    connection.open()
    还是执行SQL时候?
      

  4.   

    是在执行sql语句的时候 因为是在多线程中写了个循环
    while(条件) 
    {
      执行sql;
      
    }
    大部分sql语句执行都是正确的 偶尔一两条会出现上述的问题
      

  5.   

    你禁用掉Shared memory协议,开启TCP/IP协议试试。