用于ODBC驱动程序的OLE DB提供程序错误“80004005”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于ODBC驱动程序的OLE DB提供程序错误“80004005”相关的知识,希望对你有一定的参考价值。

我必须将一些客户站点从一个非常旧的IIS服务器移动到一个较新的IIS服务器,并且一些站点在以正确的方式工作时会遇到麻烦。他们中的大多数人都抱怨称失败了:

Microsoft OLE DB Provider for ODBC Drivers错误'80004005'

[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序。

我在互联网上看到,这可能取决于给用户的失踪权利;其他网站声称Temp文件夹丢失(我无法想象这是正确的)......还有其他几个“解决方案”。

打开服务器上的任何人的权利(如有人所说)不是我的选择。向每个客户提供明确的权利也是非常痛苦的(有几个客户需要这些权利)。

您是否知道更简单的解决方案,或类似方式或替代方案?

答案

ADODB.connection对象调用其.open()方法时,该错误几乎总是由错误的连接字符串引起。

例如,请使用以下代码:

Dim SqlUsername : SqlUsername = "YOURSQLUSERNAME"
Dim SqlPassword : SqlPassword = "YOURSQLPASSWORD"
Dim ConnectionString : ConnectionString = "DRIVER={SQL Server};SERVER=YOURSERVERNAME;DATABASE=YOURDATABASENAME;UID=" & SqlUsername & ";PWD=" & SqlPassword 
Dim db
Set db = Server.CreateObject("ADODB.Connection")
db.Open ConnectionString , SqlUsername , SqlPassword 

请注意连接字符串如何包含驱动程序标识符,在此示例中是SQL Server。

在您的应用程序的某个地方,您将使用连接字符串调用adodb.connection.open()方法,您需要找到它,确定正在使用的驱动程序并将其安装在您的服务器上。

另外要记住的是,一些数据源驱动程序是32位,如果您在IIS中的64位应用程序池中运行您的网站,则需要允许32位对象 - 请参阅以下相关问题:Uploading picture after migration from IIS 6.0 to IIS 7.5

另一答案

在使用经典的asp和IBM DB2 ODBC Driver时,我遇到了类似的问题。我确实在我的本地IIS 7.5配置了两个网站,Connection.Open在默认网站上工作正常,而在第二个网站没有,根据我的知识进行了几次配置更改后,根据stackoverflow的sugesions没有帮助我案件。

对我有用的是启用(设置为True)32bit应用程序高级设置ASP.NET V4.0经典应用程序池。

Application Pools-->ASP.NET V4.0 Classic-->
           Advanced Settings--> under General Options double click Enable 32-bit Applications to set to True.

这种小配置可以帮助那些有同样问题的人。

另一答案

您的旧服务器定义了一些ODBC DSN(数据源名称),这就是您的应用程序连接到数据库的方式。您需要在新服务器上定义这些。查看服务器的控制面板。

另一答案

现在肯定你已经解决了你的问题但是为了知识目的,这里有什么可以工作:

除了@webaware之外,请按照新服务器计算机上的以下步骤操作:

  1. 转到“控制面板”
  2. 管理工具
  3. 数据源(ODBC)
  4. 单击“系统DSN”选项卡
  5. 单击“添加”按钮
  6. 查找并选择Oracle in Client驱动程序。
  7. 现在输入数据源名称,描述,TNS服务名称和用户ID

注意:向数据库管理员询问正确的TNS服务名称和用户ID。您还需要用户ID来测试连接。

  1. 单击“测试连接”按钮
  2. 输入您的TNS服务名称作为服务名称,用户ID作为用户名和用户ID的密码
  3. 单击“确定”按钮

您的连接现在应该成功。

另一答案

更新控制面板Plesk 12.5到Plesk Onyx 17.5.3并看到更新的ODBC驱动程序到5.3后,我遇到了同样的问题。

要解决此问题,我在连接字符串中将(5.1)更改为(5.3 Unicode Driver)。

改变这个:

Conn.Open "DRIVER={mysql ODBC 5.1 };SERVER=localhost; DATABASE=psa; UID=admin;PASSWORD=mypassword;Port=8306; OPTION=3"

至 :

Conn.Open "DRIVER={MySQL ODBC **5.3 Unicode Driver**};SERVER=localhost; DATABASE=psa; UID=admin;PASSWORD=mypassword;Port=8306; OPTION=3"
另一答案

请务必将连接代码放在页面顶部与底部。这解决了我的错误问题。

另一答案

未找到驱动程序,因为系统中未配置或注册这些驱动程序,当我在localhost中运行asp页面网站时,我也遇到了这样的错误。同一页面在主机服务器上运行顺畅。要注册,请转到Microsoft ODBC Administrator - > SYSTEM DSN选项卡 - >单击“配置”按钮添加驱动程序。希望这可以帮助。

另一答案

对我来说,这只是一个失踪的“;”在连接字符串中的数据库名称后

以上是关于用于ODBC驱动程序的OLE DB提供程序错误“80004005”的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC

转载OLE DB, ADO, ODBC关系与区别

OLE DB 错误:OLE DB 或 ODBC 错误:用户 'JOE-PC\SQLAnalysis' 登录失败

OLE DB 错误:OLE DB 或 ODBC 错误:关键字“JOIN”附近的语法不正确。; 42000

SSAS:OLE DB 错误: OLE DB 或 ODBC 错误 : Login failed for user 'NT ServiceMSSQLServerOLAPService'(

OLE DB 或 ODBC 错误:用户 'NT AUTHORITY\NETWORK SERVICE 登录失败