我在数据集中SQL顶部的SQL顶部使用此代码获取SSRS报告:
IF OBJECT_ID('tempdb..#ValidUsers') IS NOT NULL DROP TABLE #ValidUsers
CREATE TABLE #ValidUsers
(
ValidUsers Varchar(100),
)
Insert Into #ValidUsers SELECT 'ABC\UserA'
Insert Into #ValidUsers SELECT 'ABC\UserB'
Insert Into #ValidUsers SELECT 'ABC\UserC'
然后,我有这段代码,在运行时将当前的UserID拉到变量@CurrentUser中,并检查@CurrentUser是否在我的#ValidUsers临时表中:
IF EXISTS (SELECT * FROM #ValidUsers WHERE ValidUsers = @CurrentUser)
Begin
... run SQL to retrieve data ...
Else
... don't retrieve the data ...
End
这工作得很好,只有我专门插入#ValidUsers中的用户才能运行报告。
这是可以接受的-还是限制谁可以运行SSRS报告的不好/不安全的方法?
如果不好,建议什么方法限制谁可以运行报告?
答案 0 :(得分:0)
您可以在报告中创建一个user dataset
,然后在报告中通过where name=@CurrentUser
进行过滤(将@CurrentUser的默认值设置为User!UserID)。当前用户在user dataset
中时,报告将显示,如果不在其中,则报告将显示为空白。
有关详细信息,您可以参考this post。