2013-06-04 7 views
5

C'è un modo per elencare (utilizzando un rapporto SSRS o una query tramite codice SQL), la sicurezza Username o Group assegnata alle cartelle radice, sottocartelle o rapporti?SQL Server Reporting Services 2008 R2 - Protezione cartella e report

Mi è stato chiesto di identificare come audit, che i gruppi AD hanno accesso a tutte le cartelle radice e sottocartelle all'interno di tale cartella principale, o anche fino al livello di singolo report - di chi ha accesso!

Come posso soddisfare questa richiesta?

risposta

11

È possibile interrogare il database ReportServer per queste informazioni, ad es.

SELECT 
    CASE [Catalog].[Type] 
     WHEN 1 THEN 'Folder' 
     WHEN 2 THEN 'Report' 
     WHEN 3 THEN 'Resource' 
     WHEN 4 THEN 'Linked Report' 
     WHEN 5 THEN 'Data Source' 
     WHEN 6 THEN 'Report Model' 
     WHEN 8 THEN 'Shared Dataset' 
     WHEN 9 THEN 'Report Part'  
    END AS CatalogType, 
    [Catalog].[Type] 
    --, [Catalog].ItemID 
    ,[Catalog].Name 
    , Roles.RoleName 
    , Users.UserName 
FROM PolicyUserRole 
INNER JOIN Roles ON PolicyUserRole.RoleID = Roles.RoleID 
INNER JOIN Policies ON PolicyUserRole.PolicyID = Policies.PolicyID 
INNER JOIN Users ON PolicyUserRole.UserID = Users.UserID 
INNER JOIN [Catalog] ON PolicyUserRole.PolicyID = [Catalog].PolicyID 
ORDER BY 
    1 
    , [Catalog].ItemID 
    , [Catalog].Name 
    , Roles.RoleName 
    , Users.UserName 
+0

Wow, è grandioso grazie! : D Molto utile! – Learner74

+1

Non sono sicuro al 100% quale sia il tipo di catalogo 3 - penso che possa essere utilizzato per qualsiasi altra risorsa non elencata, ad es. file caricati. C'è poca documentazione su questo. Si noti inoltre che l'interrogazione del database di ReportServer direttamente non è supportata da Microsoft e lo schema e/o il significato di questi valori potrebbero cambiare nelle versioni successive. – Nathan

+0

Fantastico - grazie @Nathan! – hurleystylee