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

Joh*_*ner 5 iis oledb odbc asp-classic

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

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

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

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

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

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

Hea*_*ore 2

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 
Run Code Online (Sandbox Code Playgroud)

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

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

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