SSRS - 用户表

时间:2015-08-12 15:09:54

标签: reporting-services ssrs-2008

我已经做了一些挖掘,但是我无法找到有关在ReportServer数据库中创建的Users表的具体信息?

首先,我想检查用户进入此表的入口点是什么?在我们的表中看起来几乎所有我们的域登录都存在于此表中......这引出了我的下一个问题......这些实际上是否与域帐户相关联(我认为不是)。我只是想确保如果域帐户被禁用,那么任何订阅'拥有'该用户在下次运行尝试时不会失败。

非常感谢在这个相对黑暗的区域提供任何帮助。

此致 克里斯

2 个答案:

答案 0 :(得分:3)

在回答之前,请允许我提醒您SSRS数据库未正式记录,因此以下答案仅基于产品的经验,因此它们可能是错误的/不完整的。

  

用户进入此表的入口点是什么?

  • GetUserIDBySid存储过程调用的GetUserIDByNameGetUserID存储过程。
  • GetPrincipalID存储过程,由UpdatePolicyPrincipal存储过程调用。

名称可能令人困惑,因为实际上这些SP不仅获得用户ID。
如果用户不在数据库中,则插入

现在还应该提出一个额外的问题:

  

这些SP何时执行?

显而易见的答案是"当SSRS需要获取用户ID" 例如,这可以是:

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

如果用户是可以访问报告但从未完成任何需要获取其用户ID的操作的组的成员,则他不应出现在 Users 表中。

  

这些是否真正链接到域帐户

不,如果您从AD中删除该帐户,它将保留在Users表中 如果您因任何原因需要链接它们,可以使用的信息是:

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

奖金问题/答案:

  

Users表包含哪些信息?

  • UserID:生成的GUID(NEWID()
  • Sid:安全ID,如果您需要从用户登录中找到安全ID,可以使用SUSER_SID功能
  • UserTypeUserType
  • AuthTypeLoginType
  • UserName:NT用户/组登录

答案 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