Пользователь служб отчетов в качестве ключа доступа пользователя - разрешение на уровне строк SSRS - PullRequest
0 голосов
/ 11 мая 2018

Я хочу создать разрешение на уровне строк для отчета в службах Reporting Services.Я хотел бы дать конкретным пользователям определенный доступ к данным - проектам.Менеджер проектов может читать данные только для своих проектов.

Я хочу ограничить это использование пользователей SS Reporting Services.У меня есть только один пользователь - «Reportviewer», который имеет доступ к SQL и не хочет создавать больше пользователей в базе данных SQL.

Но у меня проблема, я не знаю, как я могу использовать SS Reporting ServicesПользователи (такие логины, как SERVERNAME \ UserName).Я знаю, что у меня должна быть таблица прав доступа, подобная приведенной ниже:

ПРОЕКТ USERLOGIN

SERVERNAME \ Matthias Project12

SERVERNAME \ Matthias Project13

SERVERNAME \ 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, например, "Где UserName = @ ReportUser".Я не знаю, как реализовать в SQL.

1 Ответ

0 голосов
/ 11 мая 2018

Создать параметр, например. usr и сделай его внутренним.

Установить выражение параметра = User!UserID

В вашем наборе данных объедините таблицу данных проекта с фильтрацией таблицы разрешений пользователей, используя параметр пользователя, как показано ниже

SELECT p.*
FROM ProjectData AS p
INNER JOIN UserPermissions AS u ON p.project = u.project 
WHERE u.username = @usr
...