【问题标题】:MSSQL Report Server reset all permissionsMSSQL 报表服务器重置所有权限
【发布时间】:2016-06-07 12:15:37
【问题描述】:

我目前正在运行带有 MSSQL 服务器和 Reporting Services 的 Windows Server 2008-R2。

目前有成百上千的文件夹和报告,但是用户都调整了他们的安全设置。

我的问题是:我是否可以将所有文件夹和报告的所有权限重置为与 /Home 文件夹具有相同的用户权限,而不必一一打开它们? 还是重置所有权限,在 /Home 文件夹上创建新权限,让其他文件夹和报表继承它们?

【问题讨论】:

    标签: sql-server reporting-services reportserver


    【解决方案1】:

    您可以使用 API 或直接更改 SSRS 数据。 API 已获批准且更安全。本文包含一些可以帮助您入门的链接。

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d9f1b807-0200-47c9-9ec6-dd5316db13cf/reset-all-security-policies?forum=sqlreportingservices

    【讨论】:

    • 感谢您的建议,这看起来很有希望,但它并没有为我提供快速简便的解决方案。不过,我将使用 API 围绕此构建一些工具。感谢您的建议!
    【解决方案2】:

    对不起,我迟到了,但我刚刚发现这篇文章帮助我解决了问题。

    背景

    我正在将 SSRS (2016) 应用程序和数据库从一个域林移动到另一个域林。更新 PolicyRoot 是在正确的轨道上,但您还必须将 PolicyID 更新为您想要模仿的父文件夹(或另一个文件夹的安全性)。在我的情况下,无法从 Domain2 中的站点看到所有 Domain1\ 帐户,因此我尝试使用另一个域和/或组更新 PolicyUsers 和 Users 表无济于事。因此,在阅读了这篇文章并进行了一些测试之后,我能够创建一个脚本,将所有子文件夹和对象重置为父文件夹的。您只需要能够在 SSRS 网站内的父根文件夹上设置权限即可。

    ------------- 启动脚本

    使用[报表服务器]

    声明@PolicyID varchar(max)

    -- 这是根文件夹,注意 PolicyID 编号

    -- 从 ParentID 为 null 且 PolicyRoot=1 的目录中选择 PolicyID、PolicyRoot、*

    从 ParentID 为 null 的目录中选择 @PolicyID = PolicyID

    -- 下面一行将重置所有子文件夹的所有安全权限

    更新目录集 PolicyID=@PolicyID, PolicyRoot = 0 其中 ParentID 不为空

    ----------结束脚本

    注意:策略根为 0 表示从策略 id 继承,1 表示它是唯一的

    【讨论】:

      【解决方案3】:

      您可以通过编辑 ReportServer 数据库中的 [Catalog] 表来批量执行此操作。

      我认为如果您将 [PolicyRoot] 字段设置为 0,文件夹对象将从 Home 继承权限。

      从这个查询开始,看看表的内容:

      SELECT 
          *
      FROM 
          [ReportServer].[dbo].[Catalog]
      WHERE
          [PolicyRoot] <> 0
          AND [Path] LIKE '/%' --get child folders
          AND [Type] = 1 -- just folders
      

      我尚未对此进行测试,因此建议格外小心,一定要先备份数据库。

      【讨论】:

      • 我在备份后尝试了查询,但是在报告服务中查看权限时似乎没有更新权限。
      • 我的 SELECT 查询或您编写的新 UPDATE 语句?
      • 我的意思是我写的更新声明当然是含糊的评论。 USE [ReportServer] GO UPDATE [dbo].[Catalog] SET [PolicyRoot] = 0 WHERE ItemID IN ( "list of ID's" ) GO
      • 数据库中必须有其他东西控制它。我建议在上面的另一个答案中使用 API 方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2011-04-22
      • 2011-10-21
      • 1970-01-01
      • 2017-09-10
      • 2013-08-27
      相关资源
      最近更新 更多