我正在将应用程序从 IIS 6 迁移到 IIS 7.5,并且遇到了最奇怪的问题:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/Complaints/Login.asp, line 175
这是第 175 行附近的代码:
myConn = getDatabaseConnection()
set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Users WHERE lower(Login) = lower('" & uId & "') and Active = 1"
rs.Open strSQL, myConn, 3, 3
这里没有什么特别的...
这是数据库方法:
function getDatabaseConnection()
Dim strConnection
strConnection = "Driver={SQL Server};Server=server.domain.com;Database=cc;uid=acc;pwd=xxx;"
Set GetDatabaseConnection = Server.CreateObject("ADODB.Connection")
GetDatabaseConnection.CommandTimeout = 60
GetDatabaseConnection.ConnectionTimeout = 60
GetDatabaseConnection.CursorLocation = 3
GetDatabaseConnection.Open strConnection
end function
这似乎适用于在同一应用程序池(.NET 1.1)中运行的类似经典 asp 应用程序
我尝试过:复制粘贴其他应用程序的代码,使用连接字符串代替 db 方法(当然抛出 500),更改应用程序池,谷歌,作为另一个踢它在 IIS 6 服务器上运行良好。
我查看了用于 ODBC 驱动程序错误“80004005”的 OLE DB 提供程序,并且我的连接字符串似乎正确,并且我的 ASP.NET 1.1 应用程序池只能在 32 位模式下运行。在以前的服务器上设置的 DSN 不相关任何一个。
我的应用程序在域 A 上的 IIS 5 和域 A 上的 IIS 6 上工作,但是这个 7.5 服务器在域 B 上。因此我使用的是 FQDN。不过,我还没有进行任何其他特定于域的更改。系统采用上述方法对用户进行认证。
编辑:也试过
strConnection = "dsn=my32bitdsn;uid=xxx;pwd=xxx;"
我继承了这段代码,并且非常喜欢经典的 ASP,有人可以帮忙吗?
更新代码:
Dim strConnection, oConn
'get status
set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Users WHERE lower(Login) = lower('" & uId & "') and Active = 1"
'rs.Open strSQL, myConn, 3, 3
strConnection = "Driver={SQL Server};Server=server.domain.com;Database=cc;uid=acc;pwd=xxx;"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.CommandTimeout = 60
oConn.ConnectionTimeout = 60
oConn.CursorLocation = 3
oConn.Open strConnection
Set rs = oConn.Execute(strSQL)