【发布时间】:2012-06-10 21:25:17
【问题描述】:
我有一个 SQL Server 2012 Express 安装,其中包含我创建的名为 BRD 的新数据库。我还在BRD 数据库中创建了一个测试表(tempDemo)和一个测试存储过程(getStList)。当我在查询窗口中运行存储过程时,它可以工作,所以我相信表和存储过程是合法的。 SQL Server 设置为“SQL Server 和 Windows 身份验证模式”。
然后我尝试创建一个经典 ASP 页面,然后使用以下连接字符串连接到 SQL Server:
objConn.ConnectionString="Provider=SQLOLEDB;Server=XPSI7\SQLEXPRESS;Database=BRD;Integrated Security=SSPI;"
此操作失败并显示以下消息:
“用于 SQL Server 的 Microsoft OLE DB 提供程序错误 '80004005' 无法打开登录请求的数据库“BRD”。登录失败。”
当我将数据库更改为MASTER 而不是BRD 时,ASP 页面不会出错。我只是通过打开它然后关闭它来测试连接字符串,但它似乎可以工作。
我在对象资源管理器中查看了MASTER 和BRD 的安全设置,但没有注意到其中的区别。我还查看了文件夹的 IIS_IUSRS,但也没有区别 - 不确定这是否有必要。
【问题讨论】:
-
您尝试使用的用户 -- 它是否列在 BRD 数据库的“安全”选项卡下?显然这是一个有效的登录名,但似乎与 BRD 数据库没有关联...只要列表链接到一个有效的登录名,这就是数据库权限问题。
-
感谢您以惊人的速度回复 OMG Ponies。这个问题很好,但是我对此有点困惑。 “用户”究竟是什么?在连接字符串中,我没有指定一个(我不认为)。为了尝试回答您的问题,我在每个用户下都有一个访客,但是 BRD 访客有一个红色的向下箭头。
标签: sql-server asp-classic connection-string