SQL Server 2008 R2: обычно мы создаем нашу таблицу и хранимую процедуру и предоставляем пользователю права на выполнение хранимой процедуры. Нам никогда не нужно предоставлять определенные права таблицам или представлениям, потому что, если они могут выполнять хранимую процедуру, пользователь SQL Server делает вывод, что хранимой процедуре должно быть разрешено выполнять операторы select / insert / update. Работает хорошо, потому что мы имеем дело только с одной схемой, но теперь у нас есть сценарий, в котором таблицы находятся в одной схеме, а хранимая процедура - в другой. Когда пользователь выполняет хранимую процедуру, он получает ошибку:
Сообщение 229, Уровень 14, Состояние 5, Процедура испытаний, процедура, Строка 7
Отказано в разрешении SELECT для объекта «testtable», база данных
'testdatabase', схема 'testschema'.
teststoredprocedure
находится в другой схеме, чем testtable
. Можно ли разрешить хранимой процедуре выбирать из таблиц, не предоставляя пользователю определенных прав на эти таблицы?