首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2017年SSRS中的RLS

2017年SSRS中的RLS
EN

Stack Overflow用户
提问于 2020-10-25 14:25:02
回答 2查看 119关注 0票数 0

我有一个SSRS报告,其中包含列CreatedBy,我需要使用此列来启用行级安全性。要求如下。

代码语言:javascript
复制
Manager CreatedBY 
A       user1
A       user2
B       user3
B       user4
B       user5

因此,当经理A登录时,他应该看到由user1和user2创建的所有记录,管理器B也可以看到创建的所有记录( user3、user4和user5 )。

下面的查询是否足以达到同样的目的,还是需要进行任何调整?

代码语言:javascript
复制
select * from table
where createdby IN '@UserID'

@UserID -我将在SSRS中创建这个参数。

谢谢你的支持。

你好,维雷什

EN

回答 2

Stack Overflow用户

发布于 2020-10-25 14:26:11

使用=

代码语言:javascript
复制
select *
from table
where createdby = @UserID;

如果将值作为参数传入,则不应该在值周围使用单引号。

票数 0
EN

Stack Overflow用户

发布于 2020-10-25 16:09:23

这取决于@UserID参数将包含什么。它是经理的ID还是用户ID的列表?

如果它包含ManagerID (例如,A),那么您可以只做

代码语言:javascript
复制
SELECT * FROM table
WHERE Manager = @UserID

如果@UserID是从报表传入的值列表(多值报表参数),则可以执行以下操作

代码语言:javascript
复制
SELECT * FROM table
WHERE CreatedBY IN (@UserID)

如果使用第二个方法,请注意,只有当dataset查询只是SQL语句或脚本时才能工作,如果直接在dataset查询中调用存储的proc,则它将无法工作(不需要额外的工作)。SSRS将获取这些值的列表并注入它们,因此如果您传入一个User1User2列表,那么传递给Server的最终查询实际上是

代码语言:javascript
复制
SELECT * FROM table
WHERE CreatedBY IN('User1', 'User2')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64524781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档