MSSQL Report Server重置所有权限

时间:2016-06-07 12:15:37

标签: sql-server reporting-services reportserver

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

目前有数百个文件夹和报告,但用户都调整了安全设置。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

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

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

我没有对此进行过测试,因此建议极端谨慎,并且一定要先备份数据库。

答案 2 :(得分:0)

对不起,我参加聚会很晚,但是我发现这篇帖子可以帮助我解决问题。

背景

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

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

使用[ReportServer]

声明@PolicyID varchar(max)

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

-从目录中选择PolicyID,PolicyRoot,*,其中ParentID为null,PolicyRoot = 1

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

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

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

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

注意:策略根为0表示从策略ID继承,而1为唯一。