我已经在 DEV 数据库中配置了使用存储过程的 SQL Server 2005 中的查询通知的权限。
问题是在我的本地计算机上运行网站时它可以与我的用户帐户一起使用,而当代码移动到 DEV 网络服务器时它不起作用。
DBA 验证我的用户在 DEV 数据库中具有“sa”权限,但从 DEV Web 服务器运行站点的服务帐户没有这些权限,并且无法在 QA 或 PROD 中分配此权限。他还临时给用户设置了“sa”权限,查询通知就起作用了。
数据库返回的错误消息是:
在目标队列中排队消息时发生异常。错误:15404,状态:19。无法获取有关 Windows NT 组/用户“DOMAIN\WebServiceAccount”的信息,错误代码 0x5。
我尝试过的一些事情:
运行
xp_logininfo 'DOMAIN\WebServiceAccount'
返回相同的错误:无法获得有关 Windows NT 组/用户消息的信息
运行
xp_logininfo 'DOMAIN\MyUserAccount'
为我的用户返回相同的错误消息:无法获得有关 Windows NT 组/用户的信息
到目前为止,我发现的可能解决方案是:
- 将运行 SQL Server 服务的帐户更改为具有管理员权限的帐户。但是哪些管理员权限?
- 在 ADFS 服务帐户上授予“Authenticated Users”、“Read Permissions”,或将 tokenGroupsGlobalAndUniversal 分配给用户,并且可能还将它们添加到“Pre-Windows 2000 Compatible Access”组中。这对单个用户有用,还是需要对一个组有用?这安全吗?
- 要获得更高级别的读取访问权限,请同时添加“Windows 授权访问组”。这是准确的吗?
- 向用户授予 DOMAIN ADMIN 权限。这是在 Active Directory 中配置的吗?
不幸的是,由于对开发人员的限制,我无法在我们拥有的 Active Directory 中测试所有这些,所以我想问一下是否有人知道我们必须授予在 Active Directory 中运行 SQL Server 服务的用户的确切权限,是否能够查询其他用户的账户?
非常感谢您!