在IIS中使用Windows身份验证连接SQL 2008 R2的连接字符串

3
我将使用MVC4在IIS7上制作第一个网站。
目前我的连接字符串如下:
<add name="VaultEntities"  
    connectionString="metadata=res://*/Models.VaultDB.csdl|res://*/Models.VaultDB.ssdl|res://*/Models.VaultDB.msl;provider=System.Data.SqlClient;
         provider connection string=&quot;
         data source=sqlserver\instance;
         initial catalog=vault;
         integrated security=True;
         multipleactiveresultsets=True;
         App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />

连接是通过模型优先方法向Visual Studio 2011添加数据库时自动生成的。在我的开发机上,查询完美运行。但是在IIS服务器上却无法工作。
我猜测这是因为我在开发机上的用户帐户可以访问SQL服务器,但当IIS尝试访问SQL服务器时,其用户帐户被拒绝。
在完美的世界中,我会在SQL服务器上添加一个用户并使用。
User Id=myUsername;Password=myPassword;

很遗憾,在我的连接字符串中,我没有那个选项。

不详细说明,DBA们难以合作。

那么有没有办法在连接字符串中使用我的AD账户来登录SQL服务器呢?或者我能让IIS识别自己是我吗?


2
是的,您可以更改运行网站的应用程序池标识为您在IIS中的帐户。 - Fung
2个回答

6
有没有办法在连接字符串中使用我的AD帐户来登录SQL服务器...或者我能让IIS识别自己是我吗?
你可以让应用程序池使用任何你想要的AD用户。
不过我不建议使用自己的用户名。在过去12个月中,你锁定了多少次自己的用户名?当你离开时会发生什么?
创建/使用一个服务AD帐户,将其映射到应用程序池,并让DBA使用受信任的连接为该用户提供DB访问权限。抱歉,你需要与DBA交谈! :-)

1
通过选择应用程序池并在右侧“操作”面板上单击“高级设置”解决。一旦在那里,我将“标识”编辑为与我的AD帐户相同。已经运行了30分钟左右,效果非常好;) - JensB
很高兴你已经让它工作了!希望你以后能够改进它。也希望你能找到一些更好的数据库管理员! :-) - Joe Ratzer
完美的答案!像魔法一样奏效。谢谢。 - Dhrumil

3

好的,有两个选项。 1. 将应用程序池标识更改为具有AD访问数据库权限的标识,这也可以通过在网站的web.config文件中使用模拟部分来完成(请查看此链接)。 2. 将sql账户添加到您的连接字符串中。我可以看到您正在使用EF连接字符串,它与标准的sql连接字符串略有不同。但仍然具有具有sql凭据的相同部分,只需将integrated security = true替换为used id =...;password=...即可。就是这样。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接