简要背景:我正在创建一个 Web 应用程序,需要它从 SCOM 2012 数据库(SQL Server 2012)中提取数据,该数据库仅设置为 Windows 身份验证,在可预见的将来不会更改,因为公司不愿意做这个。
问题:我在这个问题上进行了广泛的研究,但是我无法找到解决方案。我需要创建与以特定 Windows 用户身份运行的数据库的连接以拉回数据。为了明确这一点,我不想冒充最终用户使用网络应用程序。我有我想使用的帐户的凭据,但是如果可能的话,我需要一些帮助来执行此操作!
简要背景:我正在创建一个 Web 应用程序,需要它从 SCOM 2012 数据库(SQL Server 2012)中提取数据,该数据库仅设置为 Windows 身份验证,在可预见的将来不会更改,因为公司不愿意做这个。
问题:我在这个问题上进行了广泛的研究,但是我无法找到解决方案。我需要创建与以特定 Windows 用户身份运行的数据库的连接以拉回数据。为了明确这一点,我不想冒充最终用户使用网络应用程序。我有我想使用的帐户的凭据,但是如果可能的话,我需要一些帮助来执行此操作!
必须在对数据库具有登录访问权限的 windows 用户的上下文中建立连接。你不能通过连接字符串来做到这一点。
您可以通过将应用程序池标识设置为此特定用户来执行此操作(这是相当标准的做法)。或者,您可以有一个模拟用户调用数据库的方法,尽管这涉及更多一点。请参阅如何在 .NET 中进行模拟?举些例子。
如果公司在域内,并且运行 iis 的用户在 SQL Server 上具有权限,那么您所要做的就是使用 windows 身份验证,仅此而已。
查看: http: //msdn.microsoft.com/en-us/library/2xzyzb0f (v=vs.100).aspx
您可以在 Web 应用程序和数据库之间设置 Web 服务,并在有权访问数据库的帐户下运行 Web 服务,方法是将
<system.web>
<identity impersonate="true" userName="domain\login" password="pwd" />
...
</system.web>
进入网络服务的web.config
.
然后您的网络应用程序可以调用网络服务来获取/保存数据。
我知道这很有效,因为我正在使用执行此操作的应用程序。也许您可以将其impersonate
放入您的网络应用程序的配置文件并直接访问数据库,但我对此没有任何经验。