无法使用登录名和密码访问sql数据库,C#应用程序

无法使用登录名和密码访问sql数据库,C#应用程序,c#,sql-server,entity-framework,windows-services,database-connection,C#,Sql Server,Entity Framework,Windows Services,Database Connection,我正在用C#编写Windows服务,其中我无法连接到数据库。 这是我最近提出的问题: SqlException:无法打开登录请求的数据库“path\db.mdf”。登录失败。用户“NT AUTHORITY\SYSTEM”登录失败 到目前为止我所做的: 1) 在服务器属性中设置标志“使用Sql server和Windows进行身份验证” 2) 已为sql server创建登录名。已使用该登录将用户添加到数据库。 3) 已将所有可用角色添加到此登录 第1部分: 如果我使用Sql server 201

我正在用C#编写Windows服务,其中我无法连接到数据库。 这是我最近提出的问题: SqlException:无法打开登录请求的数据库“path\db.mdf”。登录失败。用户“NT AUTHORITY\SYSTEM”登录失败

到目前为止我所做的:

1) 在服务器属性中设置标志“使用Sql server和Windows进行身份验证” 2) 已为sql server创建登录名。已使用该登录将用户添加到数据库。 3) 已将所有可用角色添加到此登录

第1部分: 如果我使用
Sql server 2012
身份验证连接到服务器,然后尝试连接某个文件夹中的数据库,我会得到:

CREATE FILE encountered operating system error 5(Access is denied.) 
while attempting to open or create the physical file 'path\db.mdf'. 
(Microsoft SQL Server, error: 5123)
但如果数据库位于此文件夹中,我可以附加该数据库:

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA
这是在SSMS中

第二部分: 尝试从Visual Studio 2012连接数据库时,我会得到什么:

The attempt to attach to the database failed with the following information:  
Login failed for user test_user
如果我在代码中使用此连接字符串:

<add name="ConnectionName"
         connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
     provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;
     attachdbfilename=&quot;path\db.mdf&quot;;
     connect timeout=30;
     User Id=test_user;Password=1;
     MultipleActiveResultSets=True;
     App=EntityFramework'"
         providerName="System.Data.EntityClient" />
我确信我正确地输入了登录名。无论数据库是否在MSSQL\DATA文件夹中,我都会收到此错误

访问我的计算机上的某些文件夹的权限有问题,但我不知道为什么,我已授予该用户所有权限

另外,在计算机重新启动一次后,windows服务正确启动并能够连接到数据库,但一段时间后,它失去了此功能。我不知道为什么


请帮帮我,我在过去的4天里一直在努力解决这个问题。谢谢

如果您正在编写应用程序,则必须决定如何处理安全性

SQL Server中有两种安全解决方案

1-AD安全性-SQL Server是否将通过AD处理它?请确保连接字符串使用受信任的安全性。确保将员工广告帐户添加为登录/用户,并将默认数据库设置为应用程序数据库,而不是主数据库。请参阅我关于制作数据库的文章

2-标准安全性-如果应用程序要处理它,则需要使用标准安全性。创建应用程序帐户(登录/用户)

接下来,创建一个具有不同安全级别的内部用户表。您将希望使用应用程序角色来实施不同的安全级别

总的来说,您可能希望研究使用模式来分离和保护数据库对象


看起来你有一些阅读和家庭作业要做…

我之前已经回答了这个问题:我已经给NT SERVICE\MSSQLSERVER帐户授予了db_reader和db_writer权限,现在我在SSMS中没有收到“错误5(访问被拒绝)”,但我仍然无法从Visual Studio 2012(以及我的应用程序)连接到db。我更新了问题,见“第2部分”。谢谢
EntityException: The underlying provider failed on open. 

Inner excetion: SqlException: Login failed for user test_user.