2011-07-06 33 views
13

Làm cách nào để xác định một cách lập trình thông tin đăng nhập/người dùng có quyền truy cập vào các báo cáo SSRS cụ thể?SSRS - Xác định quyền báo cáo thông qua các bảng cơ sở dữ liệu ReportServer?

Tôi muốn tạo một datamart để điền các báo cáo cho người quản lý muốn xem ai có quyền truy cập vào các báo cáo cụ thể. Chúng tôi hiện đang gán quyền cho các nhóm Active Directory mà sau đó được sử dụng bởi SQL Server và SSRS để xác định quyền. Tôi muốn biết nếu có một bảng trong siêu dữ liệu của SSRS theo dõi cách phân quyền được gán cho báo cáo.

Trả lời

22

Đây là một kịch bản mà không hầu hết những gì bạn muốn, bạn có thể tinh chỉnh nó cho nhu cầu của bạn:

select C.UserName, D.RoleName, D.Description, E.Path, E.Name 
from dbo.PolicyUserRole A 
    inner join dbo.Policies B on A.PolicyID = B.PolicyID 
    inner join dbo.Users C on A.UserID = C.UserID 
    inner join dbo.Roles D on A.RoleID = D.RoleID 
    inner join dbo.Catalog E on A.PolicyID = E.PolicyID 
order by C.UserName 

bạn có thể chạy các script trên SSRS SQL ReportServer

+0

Cảm ơn, tôi đã tìm kiếm một cái gì đó như thế này. –

+1

dbo.Policies (B) là không cần thiết trong truy vấn này –

+0

Lý tưởng cho việc tìm kiếm các báo cáo có vai trò lỗi thời – JsonStatham

0

Các kịch bản trên sẽ làm việc nhưng hãy nhớ rằng nó cũng sẽ hiển thị người dùng đã bị xóa - tức là người dùng không còn trong Active Directory đôi khi có thể gây nhầm lẫn.

Ngoài ra, Microsoft không chính thức hỗ trợ bất kỳ truy vấn nào đối với cơ sở dữ liệu ReportServer của họ.

+0

Phương thức GetPolicies() có thể được sử dụng để truy xuất các quyền chính xác. Xem bài đăng này http://www.bi-rootdata.com/2015/03/list-ssrs-items-permissions-using.html – Aftab

Các vấn đề liên quan