我正在尝试从我的MVC应用程序中的SQL Server数据库表中检索数据。我有以下连接字符串:
<add name="EmployeeContext" connectionString="Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True"
providerName="System.Data.SqlClient"/>
但是这给了我以下错误:
无法打开数据库&#34; SampleHR&#34;登录请求。登录失败。 用户&#39; IIS APPPOOL \ DefaultAppPool&#39;登录失败。
在我的ActionResult代码中的这一行:
Employee empPersonal = epcontext.Employees.Single(emp => emp.EmployeeID == eid);
我尝试了以下两个连接字符串:
<!-- <add name="Employee_PersonalContext" connectionString ="server=MANASI-HP\MSSQLSERVER; database=SampleHR; integrated security=SSPI;"
providerName="System.Data.SqlClient"/> -->
<!-- <add name="Employee_PersonalContext" connectionString ="server=MANASI-HP\MSSQLSERVER; database=SampleHR; username=dbo; password=;"
providerName="System.Data.SqlClient"/> -->
但是这两个给了我错误:&#34;基础提供商未能打开。&#34;
我有SQL Server 2012,带有Windows身份验证。我运行查询&#34;选择CURRENT_USER&#34;并获得用户名&#34; dbo&#34;。我没有设置任何密码,我正在使用Windows身份验证。我也在IIS服务器上运行该应用程序。
可能是什么问题?如果我必须在这里添加任何代码,请告诉我。
编辑:我转到项目属性并将服务器更改为SQL Server而不是IIS,它可以使用此连接字符串:
<add name="EmployeeContext" connectionString="Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True;User ID=IIS APPPOOL\DefaultAppPool;Password="
providerName="System.Data.SqlClient"/>
但不是这个:
<add name="MvcDemoConnectionString" connectionString="Server=MANASI-HP;Database=SampleHR;Integrated Security=true"
providerName="System.Data.SqlClient"/>
我很困惑.. :(
编辑2(11月11日):在我开始使用.NET中的MVC应用程序之前,我没有对IIS管理器进行任何更改。只需按照教程中的说明操作即可。我找到了关于IIS的这个页面。
在开始在IIS上构建应用程序之前,是否需要执行上述任何操作?
2015年12月5日: 我按照这两页的说明操作: ASP.NET Web Deployment 和 Deploy Database with IIS
仍然无法正常工作。
答案 0 :(得分:0)
如果您在IIS中运行应用程序并且您的连接字符串使用集成安全性,则它将使用的用户是应用程序池正在运行的任何内容。您可以更改应用程序池正在运行的用户,也可以为要在连接字符串中使用的Windows身份验证用户提供用户名和密码(类似Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True;User ID=username;Password=password
答案 1 :(得分:0)
看起来您已在IIS中托管应用程序并允许匿名访问,并且您的连接字符串接受经过Windows身份验证的用户。
每当您有这种类型的设置时,我建议在服务帐户而不是AppPoolIdentity下运行IIS应用程序池,并确保您的SQL Server允许服务帐户用户。
要进行测试,请转到应用程序池 - &gt;提前设置 - &gt;并改变身份和#39;与您的网络/ Windows凭证。如果您的帐户有权访问sql server,您的问题将会解决一段时间。
注意:我不建议继续在个人帐户下运行您的应用程序。因为一旦更改了密码,就必须再次更改应用程序池标识。
答案 2 :(得分:0)
如果您没有更改,则每个应用池都拥有自己的身份。在您的情况下,只需使用SQL Management Studio将新用户添加到名为IIS APPPOOL \ MyAppPool的数据库SampleHR中。您可以在&#34;安全/用户&#34;中找到用户列表。数据库的子节点。
答案 3 :(得分:0)
我只需要在SSMS中授予用户权限。我刚刚回到ISS中的默认设置,在SSMS中授予用户权限,就是这样。 有没有人有其他解决方案?