我已经做了一些挖掘,但是我无法找到有关在ReportServer数据库中创建的Users表的具体信息?
首先,我想检查用户进入此表的入口点是什么?在我们的表中看起来几乎所有我们的域登录都存在于此表中......这引出了我的下一个问题......这些实际上是否与域帐户相关联(我认为不是)。我只是想确保如果域帐户被禁用,那么任何订阅'拥有'该用户在下次运行尝试时不会失败。
非常感谢在这个相对黑暗的区域提供任何帮助。
此致 克里斯
答案 0 :(得分:3)
在回答之前,请允许我提醒您SSRS数据库未正式记录,因此以下答案仅基于我产品的经验,因此它们可能是错误的/不完整的。
用户进入此表的入口点是什么?
GetUserIDBySid
存储过程调用的GetUserIDByName
和GetUserID
存储过程。GetPrincipalID
存储过程,由UpdatePolicyPrincipal
存储过程调用。名称可能令人困惑,因为实际上这些SP不仅获得用户ID。
如果用户不在数据库中,则插入。
现在还应该提出一个额外的问题:
这些SP何时执行?
显而易见的答案是"当SSRS需要获取用户ID" 例如,这可以是:
如果用户是可以访问报告但从未完成任何需要获取其用户ID的操作的组的成员,则他不应出现在 Users 表中。
这些是否真正链接到域帐户
不,如果您从AD中删除该帐户,它将保留在Users
表中
如果您因任何原因需要链接它们,可以使用的信息是:
UserName
Sid
奖金问题/答案:
Users
表包含哪些信息?
答案 1 :(得分:1)
以下是文章的摘录:
用户:此表包含有关报表服务器用户的访问详细信息的详细信息,包括运行报表的用户和发布报表的用户。
SSRS保留自己的与其安全性相关的用户和组表,因此即使已从Active Directory系统中删除了用户帐户,也可以在ReportServer数据库中引用它
以下查询将向您显示每个用户有权访问的报告:
SELECT u.UserName, r.RoleName, c.Path, c.Name
FROM dbo.Users as u
INNER JOIN dbo.PolicyUserRole as pr ON u.UserID=pr.UserID
INNER JOIN dbo.Roles as r on pr.RoleID = r.RoleID
INNER JOIN dbo.Catalog as c on pr.PolicyID = c.PolicyID
ORDER BY u.UserName