SQL 2008 R2 - как предоставить хранимой процедуре доступ на чтение таблицы - PullRequest
1 голос
/ 05 октября 2011

Я хочу предоставить хранимой процедуре доступ на чтение к таблице в SQL Server 2008 R2

Затем я предоставлю пользователю доступ только к хранимой процедуре, но не к самой таблице.* Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Предоставить EXEC доступ к одной хранимой процедуре и никаких разрешений для таблицы.

Grant EXECUTE On [SpName] To [Principal]

Не существует такого понятия, как разрешения на чтение таблицы для хранимой процедуры.Разрешения хранимой процедуры отделены от других объектов.Если у пользователя есть разрешение на запуск хранимой процедуры, он может запустить ее независимо от того, что она делает, даже если у него нет разрешения на базовые объекты.

1 голос
/ 05 октября 2011

В следующей статье очень подробно рассматриваются несколько различных способов предоставления разрешений с использованием хранимых процедур. Это определенно стоит прочитать.

http://www.sommarskog.se/grantperm.html

В большинстве случаев цепочка владения решает проблемы с разрешениями. Пока хранимая процедура и базовая таблица имеют одного и того же владельца, пользователю нужно только разрешение на EXECUTE хранимую процедуру.

В комментарии к другому ответу вы упоминаете, что хранимая процедура находится в другой базе данных из таблицы. Вы можете посмотреть на подпись модуля как на метод, разрешающий доступ только через хранимую процедуру. Другой альтернативой, если это возможно, является создание хранимой процедуры в той же базе данных, что и таблица, а затем предоставление доступа пользователям в другой базе данных. Таким образом, цепочка владения вступит в силу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...