ASP无法连接到SQL Server数据库

时间:2012-11-27 19:08:00

标签: sql-server-2008 asp-classic

我正在尝试使用经典的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中的Security / Logins并添加了用户和密码。我选择了有问题的数据库作为默认数据库。我认为这可能会成功,但事实并非如此。然后,我进入TheDatabase,然后进入安全。我在那里添加了一个新用户,引用了我已在服务器安全性中添加的新用户。在Owned Schemas下,我单击了db_owner,在Role Members下我检查了db_accessadmin和db_owner。这些都没有给ASP应用程序访问数据库。对于有问题的登录,sid值在sys.database_principalssys.server_principals中匹配。我可以使用此登录信息登录SSMS。

应用程序需要对数据库执行选择,如下所示:

oConn.Execute('select * from someTable')

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

谢谢, 杰

1 个答案:

答案 0 :(得分:0)

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

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

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