我有一个经典的ASP应用程序,它已经在两天前被移动到Windows服务器2012R2然后它在应用程序的某些部分显示连接错误。
用于SQL Server的Microsoft OLE DB提供程序错误' 80040e4d'用户'登录失败。
登录和一些列表功能工作正常,但是当我访问一个结算页面时,它显示上述错误,我们在结算页面中也使用相同的数据库连接。
以下是使用的连接字符串
Dim datasource,cnnCompanyDbase
Set cnnCompanyDbase=Server.CreateObject("ADODB.Connection")
cnnCompanyDbase.Open "Provider=SQLOLEDB;Initial Catalog=CompanyDatabase;Data Source=192.168.0.20;User Id=sa; Password=satest;"
以前,应用程序在Windows Server 2003上运行正常。
修改 详细介绍了代码之后,我发现使用DB命令对象打开记录集时会略有不同。
以下是两个场景
工作条件
qryStaff="SELECT * FROM [Staff]"
Set rstStaff=Server.CreateObject("ADODB.Recordset")
rstStaff.CursorType = adOpenStatic
rstStaff.Open qryStaff,cnnCompanyDbase
错误状况
qryJobClients = "SELECT Client FROM Jobs WHERE Jobs.[Job-billing]=3"
Set rstJobClients=Server.CreateObject("ADODB.Recordset")
rstJobClients.CursorType = adOpenStatic
rstJobClients.Open qryJobClients,getDBConnect()
在上面的例子中,方法getDBConnect()返回cnnCompanyDbase。我打印了两个并获得了确切的值,只有一个是来自方法,另一个是直接给出DB命令。