5

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

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

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

我在互联网上读到这可能取决于赋予用户的权利缺失;其他网站指出缺少 Temp 文件夹(我无法想象这是正确的)......还有其他几个“解决方案”:

为服务器上的每个人开放权限(如某人所说)对我来说不是一个选择。此外,为每个客户赋予明确的权利是非常痛苦的(有几个客户需要这些权利)。

您知道更简单的解决方案、类似的方法或替代方法吗?

4

9 回答 9

2

That error is nearly always caused by a bad connection string when an ADODB.connection object has its .open() method called.

For example, take the following code:

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 

Note how the connection string includes a driver identifier, in this example that is SQL Server.

Somewhere in your application you'll have an adodb.connection.open() method being called with a connection string, you need to find it, determine the driver being used and install it on your server.

Another thing to keep in mind, some data source drivers are 32bit and if your running your website in a 64bit application pool in IIS you'll need to allow 32bit objects - see this related question on that: Uploading picture after migration from IIS 6.0 to IIS 7.5

于 2013-01-11T16:32:31.447 回答
2

在使用经典 asp 和IBM DB2 ODBC Driver. 我确实在我的本地配置了两个网站IIS 7.5,Connection.Open 在默认网站上运行良好,而在第二个网站上却不行.

对我有用的是启用(设置为 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.

这个小配置可能会对遇到相同问题的人有所帮助。

于 2016-07-26T05:53:18.743 回答
1

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

于 2013-01-11T22:32:45.983 回答
1

现在可以肯定的是,您已经解决了问题,但是出于知识目的,这里是可行的:

除了@webaware 所说的,请在您的新服务器机器上按照以下步骤操作:

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

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

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

您的连接现在应该成功了。

于 2017-05-24T12:04:08.280 回答
1

在将控制面板 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"
于 2018-04-19T18:03:20.233 回答
1

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

于 2019-04-22T04:18:50.660 回答
0

这与权限无关。您可能正在定义明确引用特定版本的 mysql ODBC 驱动程序的数据库连接。

您将不得不更新您的连接字符串。

于 2020-10-27T02:06:58.860 回答
0

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

于 2017-04-13T14:46:14.887 回答
0

找不到驱动是因为这些驱动没有在系统中配置或注册,我在localhost中运行asp页面网站时也出现这样的错误。同一页面在主机服务器中运行顺利。要注册,请转到 Microsoft ODBC 管理员 -> SYSTEM DSN 选项卡 -> 单击“配置”按钮添加您的驱动程序。希望这可以帮助。

于 2017-01-25T05:19:27.643 回答