1

我试图让一个经典的 ASP 应用程序连接到本地 SQL Server 2008 数据库。该应用程序和数据库是由其他人构建的。我只是想让它们在我的机器(Windows 7)上安装和运行。

当 ASP 应用程序尝试连接到数据库时,我收到以下错误:

Could not connect to database:
Error Number: -2147467259
Error Message: [ConnectionOpen (Connect()).] does not exist or access denied.

我在 Windows 事件查看器中看不到任何消息。我正在查看:事件查看器-> Windows 日志-> 应用程序。

这是使用简单还原的全新数据库安装。SQL Server 安装使用默认实例。SQL Server 和 Windows 身份验证都允许。我保留了现有的连接字符串(在 ASP 代码中)并尝试将其添加到我的 SQL Server 安装中。这是连接字符串:

strConn = "PROVIDER=SQLOLEDB;SERVER=localhost;UID=TheUser;PWD=ThePassword;DATABASE=TheDatabase;"

为了将该用户添加到 SQL Server,我转到 SSMS 中的安全/登录并添加了用户和密码。我选择了有问题的数据库作为默认数据库。我认为这可能会奏效,但事实并非如此。然后,我进入 TheDatabase,然后进入 Security。我在那里添加了一个新用户,引用了我已经在服务器安全中添加的新用户。在 Owned Schemas 下,我单击了 db_owner 并在 Role Members 下检查了 db_accessadmin 和 db_owner。这些都没有给 ASP 应用程序访问数据库的权限。sid 值与sys.database_principals相关sys.server_principals登录名匹配。我可以使用此登录名登录 SSMS。

应用程序需要像这样对数据库执行选择:

oConn.Execute('select * from someTable')

我不是 DBA,我在这里有点抓住稻草。我如何连接这个东西?

谢谢,杰

4

1 回答 1

0

我突然想到 SQL Server 或 IIS 中的网站可能以具有错误权限的用户身份运行。根据我阅读的内容,SQL Server 作为本地系统运行是可以的,所以我不理会它。

在 IIS 中,我的网站使用“应用程序用户(通过身份验证)”。这是在基本设置->连接为(“编辑站点”对话框)中设置的。当我单击“测试设置...”时,授权旁边显示“无法验证对路径(c:\mywebsitepath)的访问”。我增加了对该目录的访问权限,但这没有帮助。在“连接为”对话框中,我将“路径凭据”更改为使用“特定用户”而不是“应用程序用户(传递身份验证)”。我将其设置为使用我登录机器的用户。之后,当我单击“测试设置...”按钮时,“授权”旁边会显示“路径可访问(c:\mywebsitepath)”。之后,ASP 网站就可以正常连接到 SQL Server。

由于连接字符串使用的是特定的 SQL Server 用户名和密码,我不确定为什么这会解决问题,但似乎确实如此。

于 2012-11-28T17:02:28.347 回答