Я занимаюсь разработкой сохраненного процесса для отчета SSRS 2008, но я хочу ограничить вывод данных в соответствии с ролью пользователя, запустившего отчет. Как мне это сделать? Я хотел получить имя пользователя Windows и отфильтровать записи, основанные на этом, но пользователи используют учетную запись «sa» для входа на сервер. Так что теперь я думаю, что вместо этого я должен использовать AD логин.
Я также видел, как можно настроить безопасность в SSRS вместо sproc T-SQL, чтобы пользователи имели доступ к соответствующим папкам. Но этот второй подход звучит гораздо более обременительно, поскольку у нас много разных отчетов, и потому что я хочу, чтобы пользователи имели доступ ко всем отчетам, но только к различным частям данных.
Лучше ли реализовывать безопасность с помощью групп и папок SSRS на сервере отчетов или внутри sproc T-SQL?
Я посмотрел эту ссылку для решения "(= User.UserID)", но у меня возникли проблемы с его реализацией. Что я сделал: я создал набор данных в SSRS, выбрав текстовый запрос:
select people_id from people_rv where last_name like 'd%'
Возвращает список people_id
Затем я создал новый параметр и установил его равным указанному выше набору данных для доступных значений. И я сделал это тип данных Text и разрешить значения Null и Blank. Нет значений по умолчанию. Наконец, я установил видимость для таблицы:
=iif(Parameters!staff_id.Value in (select people_id from users),1,0)
Но это приводит к ошибке. Как я могу переформулировать это выражение таблицы?