MSSQL Report Server 重置所有权限

MSSQL Report Server reset all permissions

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

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

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

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

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

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

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

我还没有测试过这个所以建议非常小心并且一定要先备份数据库。

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

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

抱歉,我来晚了,但我刚找到这个 post,它帮助我解决了问题。

背景

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

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

使用 [ReportServer]

声明@PolicyID varchar(max)

-- 这是根文件夹,注意 PolicyID Number

-- select PolicyID,PolicyRoot,* 来自目录,其中 ParentID 为空且 PolicyRoot=1

Select @PolicyID = 来自 Catalog 的 PolicyID,其中 ParentID 为空

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

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

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

注意:策略根0表示继承自策略id,1表示唯一