我有一个SSRS报告,其中包含列CreatedBy,我需要使用此列来启用行级安全性。要求如下。
Manager CreatedBY
A user1
A user2
B user3
B user4
B user5因此,当经理A登录时,他应该看到由user1和user2创建的所有记录,管理器B也可以看到创建的所有记录( user3、user4和user5 )。
下面的查询是否足以达到同样的目的,还是需要进行任何调整?
select * from table
where createdby IN '@UserID'@UserID -我将在SSRS中创建这个参数。
谢谢你的支持。
你好,维雷什
发布于 2020-10-25 14:26:11
使用=
select *
from table
where createdby = @UserID;如果将值作为参数传入,则不应该在值周围使用单引号。
发布于 2020-10-25 16:09:23
这取决于@UserID参数将包含什么。它是经理的ID还是用户ID的列表?
如果它包含ManagerID (例如,A),那么您可以只做
SELECT * FROM table
WHERE Manager = @UserID如果@UserID是从报表传入的值列表(多值报表参数),则可以执行以下操作
SELECT * FROM table
WHERE CreatedBY IN (@UserID)如果使用第二个方法,请注意,只有当dataset查询只是SQL语句或脚本时才能工作,如果直接在dataset查询中调用存储的proc,则它将无法工作(不需要额外的工作)。SSRS将获取这些值的列表并注入它们,因此如果您传入一个User1和User2列表,那么传递给Server的最终查询实际上是
SELECT * FROM table
WHERE CreatedBY IN('User1', 'User2')https://stackoverflow.com/questions/64524781
复制相似问题