【发布时间】:2019-05-25 21:29:41
【问题描述】:
我在我的数据集中的 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 报告的一种不好/不安全的方式?
如果不好,推荐的限制谁可以运行报告的方法是什么?
【问题讨论】:
-
只有您可以确定它是否坏 - 它是否满足您的要求?我唯一的问题是为什么不使用内置的安全设置?
-
同意,Reporting Services 具有内置的安全性,可以确定谁能够查看/运行报表/文件夹。使用 SQL 作为辅助检查没有害处,但我不明白这一点。
-
它确实完成了我的要求 ["这工作得很好......"]。您能否给我一个指针,指出我应该搜索有关内置安全设置的内容?我没有使用过这些,也不知道在哪里/如何设置它们。
-
@Talay 你试过文档吗? docs.microsoft.com/en-us/sql/reporting-services/security/…