我正在为SSRS 2008报告开发存储过程,但我想根据运行报告的用户的角色来限制数据输出。我该怎么做呢?我想要做的是检索Windows用户名并基于此过滤记录,但用户使用“sa”帐户登录到服务器。所以现在我想我应该使用AD登录。如何在T-SQL中实现基于角色的安全性?
我也看到了如何在SSRS中设置安全性,而不是T-SQL sproc,以便用户可以访问相应的文件夹。但是,第二种方法听起来更麻烦,因为我们有许多不同的报告,并且我希望用户可以访问所有报告,但只能访问数据的不同部分。
通过报告服务器上的SSRS组和文件夹实现安全性,还是通过T-SQL sproc实现安全性更好?
我查看了“(= User.UserID)”解决方案的链接,但是在实现时遇到了问题。我做了什么:我创建了SSRS的数据集选择的文本查询:
select people_id from people_rv where last_name like 'd%'
这返回的people_id的
一个名单,然后,我创建了一个新的参数,将其设置为可用上述数据集值。我使它成为文本数据类型并允许空值和空值。没有默认值。最后,我设置可见的表矩阵:
=iif(Parameters!staff_id.Value in (select people_id from users),1,0)
但是,这会产生错误。我怎样才能重新表达这个tablix表达?
作为参考:在NO条件应SA密码是分布式的或由应用程序使用。这是由于一个原因:由数据库管理员访问。即使这样,我会劝说不要以任何理由使用它。 SA是一个众所周知的用户名,是基于字典攻击的常见目标。在应用程序中进一步使用它表示相关应用程序对数据库服务器本身具有绝对的全面控制权:这是不好的。 – NotMe 2012-02-06 21:07:54