使用Windows身份验证连接到SQL Server

时间:2013-06-27 01:49:10

标签: c# asp.net sql web-applications

简要背景: 我正在创建一个Web应用程序,需要从SCOM 2012 DB(SQL Server 2012)中提取数据,此数据库仅设置为Windows身份验证,在可预见的将来不会更改,因为公司不愿意这样做。 / p>

问题: 我已经在这个问题上进行了广泛的研究,但我无法找到解决方案。 我需要创建一个连接到作为特定Windows用户运行的数据库以回退到数据。为了清楚起见,我不想使用网络应用模拟最终用户。我有我想要用于此帐户的凭据,但如果可能的话,我需要一些帮助!

3 个答案:

答案 0 :(得分:4)

必须在具有数据库登录访问权限的Windows用户的上下文中建立连接。你无法通过连接字符串来完成它。

您可以通过将应用程序池标识设置为此特定用户来执行此操作(这是相当标准的做法)。或者您可以使用一种方法来模拟用户对数据库的调用,尽管这需要更多一些。有关示例,请参阅How do you do Impersonation in .NET?

答案 1 :(得分:1)

如果公司在域内,并且运行iis的用户在SQL Server上具有权限,那么您所要做的就是使用Windows身份验证,就是这样。

退房: http://msdn.microsoft.com/en-us/library/2xzyzb0f(v=vs.100).aspx

答案 2 :(得分:1)

您可以在网络应用和数据库之间设置网络服务,并通过添加

来访问有权访问数据库的帐户下的网络服务
<system.web>
    <identity impersonate="true" userName="domain\login" password="pwd" />
    ...
</system.web>

进入网络服务的web.config

然后,您的网络应用可以调用网络服务来获取/保存数据。

我知道这很有效,因为我正在使用这样做的应用程序。也许您可以将impersonate放入Web应用程序的配置文件中并直接访问数据库,但我没有任何相关经验。