SQL Server 查询通知 - 如果无法向运行网站的用户授予数据库 SA 角色,则需要 Active Directory 中的权限?



我已经在 DEV 数据库中配置了将 SQL Server 2005 中的查询通知与存储过程一起使用的权限。

问题是,从本地计算机运行网站时,它适用于我的用户帐户,并且当代码移动到 DEV Web 服务器时,它不起作用。

DBA 验证了我的用户在 DEV 数据库中具有"sa"权限,但从 DEV Web 服务器运行站点的服务帐户没有这些权限,并且无法在 QA 或 PROD 中分配此权限。他还临时为用户设置了"sa"权限,查询通知有效。

数据库返回的错误消息是:

将目标队列中的消息排队时发生异常。错误: 15404,状态: 19。无法获取有关 Windows NT 组/用户"域\Web服务帐户"的信息,错误代码0x5。

我尝试过的一些事情:

  • 运行xp_logininfo 'DOMAINWebServiceAccount'返回相同的错误:

    无法获取有关 Windows NT 组/用户消息的信息

  • 运行xp_logininfo 'DOMAINMyUserAccount'为我的用户返回相同的错误消息:

    无法获取有关 Windows NT 组/用户的信息

到目前为止,我找到的可能的解决方案是:

  • 将运行 SQL Server 服务的帐户更改为具有管理员权限的帐户。但是哪些管理员权限呢?
  • 授予 ADFS 服务帐户上的"经过身份验证的用户"、"读取权限",或向用户分配 tokenGroupsGlobalAndUniversal,并可能还将他们添加到"Windows 2000 之前的兼容访问"组中。这适用于单个用户,还是需要对组?这安全吗?
  • 对于更高级别的读取访问权限,请同时添加"Windows 授权访问组"。这准确吗?
  • 向用户授予域管理员权限。这是在活动目录中配置的吗?

不幸的是,由于开发人员的限制,我无法在我们拥有的 Active Directory 中测试所有这些,所以我想问一下是否有人知道我们必须向在 Active Directory 中运行 SQL Server 服务的用户授予什么确切的权限,以便它能够查询其他用户的帐户?

提前非常感谢!

我们的系统人员做了以下步骤,这些步骤有效:

  1. 在 Active Directory 中,搜索用户 DOMAIN\WebServiceAccount
  2. 在"安全"选项卡中,添加运行具有读取权限的 SQL Server 服务的用户

最新更新