Как правило, источники данных в SSRS будут настроены на использование фиксированной учетной записи, либо учетной записи Windows, либо аутентификации SQL. Этой учетной записи следует предоставить минимальные права доступа к базе данных: db_datareader является общим.
Затем безопасность отчета контролируется с помощью диспетчера отчетов, как описано выше. это устраняет необходимость в изменении безопасности самой базы данных с изменениями в разрешениях пользователя.
Но подход, который вы описали выше, также должен работать. Ошибка, которую вы видите, когда пользователь имеет доступ к db_datareader, удивительна, если ваш запрос является стандартным запросом SQL, выбираемым из таблиц. Если вы используете хранимые процедуры, вам также необходимо предоставить доступ к ним. Используйте тестовую учетную запись пользователя, для которой установлено значение db_datareader; проверьте, можете ли вы подключиться и выполнить свой запрос через SQL Server Management Studio.
В зависимости от ваших требований безопасности, я бы использовал выделенную учетную запись для доступа к базе данных из отчетов, скажем «ReportReader». Разработайте и протестируйте свои отчеты, обращающиеся к базам данных от имени этого пользователя, и убедитесь, что пользователь имеет минимальный доступ, только для чтения и / или ограничен только таблицами или процедурами, которые ему необходимо выполнить.
Учетные данные, используемые для доступа к базе данных, задаются в свойствах источника данных. Это одна из причин, по которой часто используются общие источники данных, а отчеты связаны с общими источниками данных:
На снимке экрана показана используемая учетная запись с проверкой подлинности на сервере SQL. Это также может быть фиксированная учетная запись Active Directory; в этом случае установите флажок «Использовать как учетные данные Windows, когда ...».