现在写了一个使用ADO访问数据库的模块,当把该模块放在服务程序里面的时候会出错,错误为:
code = 80004005
code meaning = 未指定的错误
Source = Microsoft OLE DB Provider for ODBC Drivers
Decription = Microsoft [ODBC 驱动管理器] 未发现数据源名称并且未指定默认驱动程序单独测试该模块却没有问题,说明连接字符串应该没问题。连接字符串为:
 g_strDBConnect.Format("Provider=SQLOleDB;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s",
                  g_chrDBSrvIP,//数据库服务器所在的IP
                  g_chrDBName,//访问的数据库的名字
                  g_chrDBUserName,//访问数据库的用户名
                  g_chrDBUserPwd//访问数据库的用户密码
                  );
其中的参数通过读取配置文件获取,也没有问题。该服务程序放在服务器上,前一段时间可以运行,但是现在却总是报上面的错误,是什么原因呢?

解决方案 »

  1.   

    这说明你那连接字符串有问题,
    可以建个文本,后缀名UDL,配置,拷贝字符串,
    或,直接用此文本,连接对象->ConnectionString="File Name=文本名.UDL";
                    连接对象->ConnectionTimeOut=20;
                           ->Open("","","",adConnectUnspecified);
      

  2.   

    那能不能把Source   =   Microsoft   OLE   DB   Provider   for   ODBC   Drivers 
    改成 Source   =   Microsoft   OLE   DB   Provider   for  SQL SERVER
    呢?
    这个字符串放在服务代理程序里面的时候总是出现上面的错误。但是作为单独的模块程序来用的时候却没有问题。
      

  3.   

    该服务程序放在服务器上,前一段时间可以运行,但是现在却总是报上面的错误,是什么原因呢?
    //连接的是本地SQL Server数据库?模块是否在服务器上通过测试?
      

  4.   

    数据库是服务器上的。我在本地调用查询数据库的函数时,没有问题。为什么把该模块程序嵌入到服务器上的服务代理程序里面的时候就报上面的错呢?
    只要客户端给服务代理程序发查询数据库请求,就出错了。
    Microsoft     OLE    DB     Provider  for  SQL   SERVER 和 Microsoft OLE   DB   Provider  for  ODBC Drivers 有什么区别呢?
      

  5.   

    未发现数据源名称并且未指定默认驱动程序
    ====================================说明连接有问题
    参考:
    http://www.knowsky.com/4168.html
      

  6.   

    现在我生成了一个UDL文件,选择Microsoft OLE DB for ODBC drivers,数据源名称为192.168.1.4,用户名为sa,密码为:123
    此时测试连接。出现测试连接失败,信息为:测试连接失败,因为初始化提供程序时发生错误。[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且
    未指定默认驱动程序。但是当我选择Microsoft OLE DB for SQL SERVER的时候,其他设置相同,测试连接成功。
    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Database;Data Source=192.168.1.4这是什么问题呢?
      

  7.   

    到底是ado还是odbc啊
    我没搞明白@_@
      

  8.   

    我程序里用的是ADO,但是却老是提示我没有ODBC的什么东西,郁闷死了。
      

  9.   

    我数据库用的是SQL SERVER 2005,显然是OLE的,为什么会提示关于ODBC的东西呢?
      

  10.   

    Microsoft OLE DB Provider for SQL SERVER   和   Microsoft OLE DB Provider for ODBC Drivers   有什么区别呢? 
    //For SQL Server:  ADO中SQL Server的驱动, ADO直接连接
    //For ODBC: ADo中ODBC的驱动,ADO通过ODBC连接SQL Server