SSRS - 用户 Table

SSRS - Users Table

我进行了一些挖掘,但无法找到有关在 ReportServer 数据库中创建的用户 table 的具体信息?

首先我想检查一下用户进入这个 table 的切入点是什么?在我们的 table 中,看起来我们所有的域登录名都存在于这个 table 中......这让我想到了下一个问题......这些是否真的链接到域帐户(我想不是).我只想确保如果域帐户被禁用,该用户的任何订阅 'Owned' 都不会在下一次 运行 尝试时失败。

非常感谢对这个相对较暗的区域的任何帮助。

问候 克里斯

这是一篇文章的节选:

用户:此 table 包含有关报表服务器用户访问详细信息的详细信息,包括 运行 报表用户和发布报表的用户。

SSRS 保留其自己的 table 与其安全相关联的用户和组,因此即使用户帐户已从您的 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 

回答之前先提醒一下,SSRS数据库没有官方文档,所以下面的回答只是基于产品的经验,所以可能有误/不完整。

what was the point of entry for users going into this table?

  • GetUserIDBySidGetUserIDByName 存储过程,由 GetUserID 存储过程调用。
  • GetPrincipalID 存储过程,由 UpdatePolicyPrincipal 存储过程调用。

名称可能会让人混淆,因为实际上这些 SP 不仅 获取 用户 ID。
如果用户不存在于数据库中,他们插入它。

现在应该提出另一个问题:

When are these SPs executed?

显而易见的答案是 "when SSRS needs to get the User ID"。
这可以是,例如,当:

  • 为该特定用户创建策略
  • 用户执行报告
  • 用户安排订阅

如果用户属于有权访问报告的组并且从未执行任何需要获取其用户 ID 的操作,则他不应出现在 Users 中table。

Are these actually linked to the domain accounts at all

不,如果您从 AD 中删除帐户,它将保留在 Users table。
如果出于任何原因需要 link 它们,您可以使用的信息是:

  • 用户登录:UserName
  • 安全 ID:Sid

奖金question/answer:

What information does the Users table contains?

  • UserID: 生成的 GUID (NEWID())
  • Sid:Security ID,如果需要从用户登录中查找Security ID,可以使用SUSER_SID函数
  • UserType: UserType
  • AuthType: LoginType
  • UserName: NT用户/组登录