【发布时间】:2018-05-11 12:04:45
【问题描述】:
我想为 Reporting Services 中的报表创建行级别权限。我想为特定用户提供对数据的特定访问权限 - 项目。项目经理只能读取其项目的数据。
我希望使用 SS Reporting Services 用户来限制它。我只有一个用户——“reportviewer”,他可以访问 sql 并且不想在 sql 数据库中创建更多用户。
但我有问题,我不知道如何使用 SS Reporting Services 用户(登录类似于 SERVERNAME\UserName)。 我知道我必须有一个像下面这样的访问权限表:
用户登录项目
服务器名称\Matthias Project12
服务器名称\Matthias Project13
服务器名称\Tommy Project14
我不想在我的 SQL 视图中有对用户有限制的代码。类似的东西
Where
(a.NrProjektu in (Select NrProjektu From tbn.SSRSRaportyDostepView Where LoginUser=USER_NAME() ) OR
IS_ROLEMEMBER('db_owner') = 1 OR
IS_SRVROLEMEMBER('sysadmin') = 1
)
但是当我检查 USER_NAME() 时,它就像“dbo”。据我了解,这个“USER_NAME()”指的是 sql 用户。
我希望有一些可以在 Reporting Services 报告中使用的连接,例如“Where UserName=@ReportUser”。我不知道如何在 SQL 中实现。
【问题讨论】:
-
您能否删除帖子中的故事问题/背景部分并将您的实际问题合并为一个直接/简洁的问题?这是一种大量的阅读/分析/解释,以要求有人在业余时间免费帮助您。如果您知道官方文档的链接以支持您的假设所依据的任何陈述,请将这些链接嵌入为超链接。等等。让那些试图免费帮助你的人更容易阅读/消化。
-
例如,我认为这篇文章的大部分内容没有意义。我几乎认为您可以在调用 USER_NAME() 的地方直接粘贴一些 SQL,并显示它输出“dbo”,然后询问“WTF?”带有指向某些文档的链接,表明它应该是其他东西。
-
嗨,贝恩,谢谢您的意见。我把我的描述加长了,因为它开始获得负分。一开始它很短。我认为这个案例更复杂,人们不知道我的意思(我想实现当前报表用户的 ReportServer 登录,实际上在 SQL 视图中呈现特定报表。)我想避免我知道的解决方案,即实现行在报告中使用用户参数的级别权限。但毕竟我让自己确认感谢@niktrs 这个解决方案还不错。毕竟我按照他的建议做了。我很感激。
-
我的建议仍然有效。您的帖子很难快速理解。如果您认为上下文对读者有帮助(我同意,有时确实如此),您仍然可以在帖子底部添加背景,但您的帖子的核心应该更直接,而不是漫无边际。无论如何,我很高兴你得到了答案,但正如你所看到的,你的问题不会被你身后的任何人重复使用。
-
另外,我想指出您的帖子应该包含您已经真正想到或尝试过的内容,以及为什么您认为这不能回答您的问题。这样做可能会让你获得更多的支持、更多的理解和更直接的保证,即你的解决方案实际上是最好的;或者看到您尝试过,它可能已经改变了@niktrs 的答案。在任何方面,它都会在其他人回答您之前大大提高您问题的可重用性。
标签: sql-server reporting-services