SSRS-在允许执行报告之前检查UserID

时间:2018-12-27 23:35:43

标签: reporting-services

我在数据集中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报告的不好/不安全的方法?

如果不好,建议什么方法限制谁可以运行报告?

1 个答案:

答案 0 :(得分:0)

您可以在报告中创建一个user dataset,然后在报告中通过where name=@CurrentUser进行过滤(将@CurrentUser的默认值设置为User!UserID)。当前用户在user dataset中时,报告将显示,如果不在其中,则报告将显示为空白。

有关详细信息,您可以参考this post