SQL Server 2012的经典ASP连接字符串(SQL Server 2012 classic

2019-09-18 00:15发布

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

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

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

这种失败,出现以下消息:

“微软的OLE DB提供程序SQL Server错误‘80004005’无法打开数据库‘BRD’由登录请求。登录失败。”

当我改变数据库MASTER ,而不是BRD的ASP页面不报错了。 我只要打开它,然后关闭它测试连接字符串,但它似乎工作。

我看过的安全设置MASTERBRD在对象资源管理器,但一直没有注意到有什么差别。 我也看了IIS_IUSRS的文件夹,但没有任何区别-不知道这是必要的反正。

Answer 1:

SQL服务器在服务器级别认证登录。 然后,它会尝试打开你要求连接到数据库。 在这一点上,你需要一个数据库级别的用户映射到服务器级别的登录,或使用本身具有足够的权限来使用数据库服务器级别的登录。

一个简单的(但不是安全)的方式来证明这一点使用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 = “提供者= SQLNCLI;数据源= XPSI7 \ SQLEXPRESS;初始目录= BRD;用户ID = FOO;密码=巴;”

您还可以映射任何登录您正在使用的数据库用户简单地做:

USE BRD;
GO
CREATE USER [YourDomain\IIS_IUSRwhatever] 
  FROM LOGIN [YourDomain\IIS_IUSRwhatever];
GO

这将授予他们对数据库的访问,但是这将是由你来决定哪些权限授予。 这是假设您允许到Web服务器的匿名访问; 如果IIS是具有挑战性的,并接受Windows身份验证,你需要做以上对将提交他们的凭据中的用户(一个或多个)。 在这两种情况下,你应该能够继续使用你现在所拥有的连接字符串。



Answer 2:

试试下面的连接字符串:

strConnection = "Provider=SQLNCLI10;Server=server_name;Database=" & BD_REMOTE_INITIAL_CATALOG & ";Uid=" & BD_REMOTE_USER_ID & "; Pwd=*****;"


文章来源: SQL Server 2012 classic asp connection string