我正在尝试在我的本地计算机上设置一个用 ASP Classic 编写的旧站点。我正在使用 SQL Server 2008 和 IIS 7.5 版。
当我尝试打开与数据库的连接时遇到错误。
我使用了这篇文章中的建议
使用 .udl 文件来创建和测试我的连接字符串,以便我知道连接字符串有效。我正在使用 Windows 身份验证,并且我确定运行此站点的应用程序池可以访问数据库,因为我为多个站点使用同一个池并且它们都可以正常连接。
打开连接时,我试图运行存储过程,如果我只是写出存储过程字符串并直接在我的数据库中运行它,它会按预期工作。
这是代码:
Const adUseClient = 3
Const adCmdStoredProc = 4
Const adOpenStatic = 3
Const adLockBatchOptimistic = 4
dim connectstring,sql
connectstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=my-database;Data Source=(local)\SQLEXPRESS"
sql = "MyProc '" & param1 & "','" & param2 & "'"
set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
' this is where it is failing
rs.Open sql, connectstring, 3
问题之一是我得到的错误似乎是由 IIS 生成的,它只是说:
处理 URL 时服务器发生错误。请联系系统管理员。
如果您是系统管理员,请单击此处了解有关此错误的更多信息。
当我单击“单击此处”链接时,它会将我带到有关在 IIS 7 上运行 ASP Classic 站点的常规页面,但我找不到任何与我的错误相关的内容。我似乎无法找到从哪里获取有关该错误的信息。作为最后的手段,我检查了事件查看器-> Windows 应用程序日志,但没有条目记录我的错误。
我已经用谷歌搜索并尝试了连接字符串的多种排列,但无济于事。如果有人对如何解决这个问题有任何建议,或者甚至知道在哪里寻找解决方案,我将不胜感激。非常感谢!
**编辑: **
好的,我更改了 IIS 设置以在浏览器中显示错误,现在我收到一条更有用的错误消息,它是:
用于 SQL Server 错误“80004005”的 Microsoft OLE DB 提供程序
无法打开登录请求的数据库“rw-gp”。登录失败。
现在,当我用 Google 搜索时,我发现这通常是权限问题。如您所见,我正在使用 Windows 身份验证,并且在有权连接到数据库的应用程序池下运行该站点。我在本地设置了多个在此应用程序池中运行的 ASP.NET 站点,它们可以使用集成安全性进行连接。我不确定出了什么问题,有人有什么建议吗?