我已经在 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 服务的用户授予什么确切的权限,以便它能够查询其他用户的帐户?
提前非常感谢!
我们的系统人员做了以下步骤,这些步骤有效:
- 在 Active Directory 中,搜索用户 DOMAIN\WebServiceAccount
- 在"安全"选项卡中,添加运行具有读取权限的 SQL Server 服务的用户