我需要在SQL Server Reporting Services报告中确定用户所属的安全组.对报告的访问将由两个组中的一个成员驱动:'report_name_summary'和'report_name_detail'.一旦用户执行报告,我们希望能够在"report_name_detail"组中使用其成员资格(或缺少成员资格)来确定是否应允许"向下钻取".
我不知道开箱即用的任何方式来访问当前用户的AD安全组成员身份,但我愿意接受能够从报告中访问此信息的任何建议.
您可以将自定义代码添加到报表中. 这个链接有一些例子.
理论上,您应该能够编写这样的代码,然后使用返回值来显示/隐藏您想要的内容.但是,您可能会遇到此方法的权限问题.
Public Function ShouldReportBeHidden() As Boolean Dim Principal As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()) If (Principal.IsInRole("MyADGroup")) Then Return False Else Return True End If End Function
或者,您可以将详细报告添加为摘要报告的子报告.然后,您可以使用SSRS中内置的安全功能来限制对子报表的访问.