SQL Server 2012经典asp连接字符串

时间:2012-06-10 21:25:17

标签: sql-server asp-classic connection-string

我有一个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;"

此操作失败,并显示以下消息:

  

“用于SQL Server的Microsoft OLE DB提供程序错误'80004005'   无法打开登录请求的数据库“BRD”。登录失败。“

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

我在对象资源管理器中查看了MASTERBRD的安全设置,但未发现差异。我也查看了文件夹的IIS_IUSRS,但也没有区别 - 不确定是否有必要。

2 个答案:

答案 0 :(得分:4)

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身份验证,则您需要为将要提交其凭据的用户执行上述操作。在任何一种情况下,您都应该能够继续使用现在的连接字符串。

答案 1 :(得分:0)

尝试以下连接字符串:

strConnection = "Provider=SQLNCLI10;Server=server_name;Database=" & BD_REMOTE_INITIAL_CATALOG & ";Uid=" & BD_REMOTE_USER_ID & "; Pwd=*****;"
相关问题