2013-04-05 37 views
0

我有一个ASP.NET Web应用程序和在同一台服务器上运行的Windows服务。他们都需要连接到同一个数据库,使用下面的代码:如何允许来自ASP.NET Web应用程序和Windows服务的SQL Server数据库连接?

using (SqlConnection cn = new SqlConnection(strDBConnect)) 
{ 
    cn.Open(); 

    //And so on... 
} 

但它给我这个例外,当我试图从服务连接:

“无法打开用户默认数据库。登录失败。\ r \ n登录失败,用户'NT AUTHORITY \ SYSTEM' 。“

我使用两个连接字符串,但它可能是实际的部署服务器上的不同:

数据源= \ SQLEXPRESS;集成 安全性= SSPI; AttachDBFilename =” C:\用户\用户\数据库\ App_Data文件\ Database1.mdf';用户 实例=真;连接超时= 15

所以我假设我需要一些共享参数添加到连接字符串。所以我的问题是,如何确保多个进程可以连接到SQL Server数据库?

+0

连接字符串没有任何问题。问题在于登录凭证。 – melancia 2013-04-05 09:09:36

+0

我想知道为什么数据源=。\ SQLEXPRESS;和AttachDBFilename ='C:\ Users \ User \ Databases \ App_Data \ Database1.mdf'在一起? – 2013-04-05 09:10:25

回答

0

创建特定用户。

使用该用户的应用程序池

使用该用户的身份的服务的身份。

将此用户添加到具有必要权限的sql服务器。

+0

谢谢。但是,“服务的身份”是什么? – c00000fd 2013-04-05 18:30:21

+0

好的,答案是在SQL Server中创建一个用户帐户并将其用于登录。即使是使用SQL Server Management Studio的SQL Server Express也是如此。 (它需要与SQL Server 2012 Express安装程序分开安装。)唯一要记住的是允许服务器的SQL Server身份验证。这可以在SQL Server Management Studio中完成。没有其他任何事情需要与服务本身一起完成,也不需要像上面提出的那样使用App Pool标识。 – c00000fd 2013-04-07 01:02:18

相关问题