Ado.Net ExecuteReader с пользователем SQL Server только для чтения

В Application_Start моего веб-сайта я выполняю хранимую процедуру для чтения некоторых данных из одной базы данных SQL Server 2008.

Это единственный вызов этой базы данных.

Я бы создал конкретного пользователя SQL Server с разрешением только для чтения, чтобы выполнить этот sp.

Я создал нового пользователя SQL Server с ролью db_datareader, но когда я выполняю sp, у меня появляется ошибка в этой строке:

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

Ошибка: EXECUTE permission denied on object ...

Как я могу это исправить?

Спасибо


person opaera    schedule 08.11.2010    source источник
comment
Я понимаю, что вы создали нового пользователя, дали ему роль db_datareader и предоставили ему разрешение на выполнение SP. Вы не думали о том, чтобы дать ему право подключаться к вашей БД? Как ни странно это звучит, разрешения на подключение необходимы пользователю для подключения и выполнения любых действий с базой данных.   -  person Will Marcouiller    schedule 08.11.2010
comment
Я этого не делал, но похоже, что он работает, потому что он открывает соединение, а затем выполняет ExecuteReader. Я пытаюсь предоставить пользователю доступ, но это не работает. См. Комментарий к ответу. Спасибо.   -  person opaera    schedule 08.11.2010


Ответы (1)


Вы предоставили пользователю, которого вы создали, доступ к хранимой процедуре?

GRANT EXECUTE ON sp_your_proc TO your_user;
person Erik    schedule 08.11.2010
comment
Спасибо за ответ. Я попробовал сейчас, но получаю сообщение об ошибке. Невозможно добавить, отклонить .. авторизацию для sa, dbo, .... Извините, но я получаю сообщение об ошибке на итальянском языке. Созданный мной пользователь находится в схеме dbo и имеет только роль db_datareader. - person opaera; 08.11.2010
comment
Есть ли у пользователя доступ к схеме dbo? Как вы создали пользователя? Если вы разместили свое сообщение об ошибке, возможно, я смогу что-нибудь из него прочесть. Кроме того, если у вас есть доступ к SQL Server Management Studio, вы можете проверить свойства входа в базу данных в разделе Безопасность / Имена входа. - person Erik; 09.11.2010