gpt4 book ai didi

sql-server - SQL Server 2012 经典asp连接字符串

转载 作者:行者123 更新时间:2023-12-04 18:19:30 24 4
gpt4 key购买 nike

我有一个名为 BRD 的新数据库的 SQL Server 2012 Express 安装我创造的。我还在 tempDemo 中创建了一个测试表( getStList )和一个测试存储过程( BRD )数据库。当我在查询窗口中运行存储过程时,它可以工作,所以我相信表和存储过程是合法的。 SQL Server 设置为“SQL Server 和 Windows 身份验证模式”。

然后我尝试创建一个经典 ASP 页面,然后使用以下连接字符串连接到 SQL Server:

objConn.ConnectionString="Provider=SQLOLEDB;Server=XPSI7\SQLEXPRESS;Database=BRD;Integrated Security=SSPI;"

这失败并显示以下消息:

"Microsoft OLE DB Provider for SQL Server error '80004005' Cannot open database "BRD" requested by the login. The login failed."



当我将数据库更改为 MASTER而不是 BRD ASP 页面不会出错。我只是通过打开它然后关闭它来测试连接字符串,但它似乎工作。

我查看了 MASTER 的安全设置和 BRD在对象资源管理器中,但未能注意到差异。我也看过 IIS_IUSRS对于文件夹,但也没有区别 - 不确定这是否有必要。

最佳答案

SQL Server 在服务器级别验证您的登录。然后它会尝试打开您要求连接的数据库。此时,您需要将数据库级用户映射到服务器级登录,或者使用本身具有足够权限来使用数据库的服务器级登录。

使用 SQL Server 身份验证演示这一点的简单(但不安全)方法:

USE master;
GO
CREATE LOGIN foo
WITH PASSWORD = 'bar', CHECK_POLICY = OFF;
GO
USE BRD;
GO
CREATE USER foo FROM LOGIN foo;
GO
EXEC sp_addrolemember N'db_owner', N'foo';
GO

现在在您的 ASP 连接字符串中,使用:

objConn.ConnectionString = "Provider=SQLNCLI;Data Source=XPSI7\SQLEXPRESS;Initial Catalog=BRD;User ID=foo;Password=bar;"



您还可以将您正在使用的任何登录名映射到数据库用户,只需执行以下操作:
USE BRD;
GO
CREATE USER [YourDomain\IIS_IUSRwhatever]
FROM LOGIN [YourDomain\IIS_IUSRwhatever];
GO

这将授予他们访问数据库的权限,但由您决定授予哪些权限。这假设您允许匿名访问 Web 服务器;如果 IIS 具有挑战性并接受 Windows 身份验证,则您需要为将提交其凭据的用户执行上述操作。无论哪种情况,您都应该能够继续使用您现在拥有的连接字符串。

关于sql-server - SQL Server 2012 经典asp连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com