Ставлю экспиремент. Дано:
MS-SQL 2000 + БД + одна таблица + два поля в ней
(
id — int
trytext — char(10)
)
+ хранимая процедура возращающая все данные этой таблицы
+ пользователь, которуму ПЕРЕКРЫТЫ ВСЕ ПРАВА кроме запуска этой хранимой процедуры.
Клиент: Delphi 7 + ADOStoredProc запускающая хранимую процедуру на сервере от имени пользователя у которого только на это права и есть.
А вот теперь вопрос: почему у меня получается не только редактировать записи вернувшиеся мне процедурой, но и вставлять новые записи, хотя прав у меня на это нет? Просмотрел всё что делается на сервере Profiler-ом, делает от имени пользователя всякие insert-ы и update-ы. Что я не учёл?
В принципе, процедура выполняется с правами юзера её создавшего, т.е. если sa создал процедуру в которой производится удаление данных из некой таблички Т_1, а юзер имеет права на запуск процедуры, но не имеет права на удаление записей из данной таблицы, то удаление будет произведено.
... << RSDN@Home 1.1.0 stable >>
Здравствуйте, DaHa, Вы писали:
DH>Здравствуйте, Forint, Вы писали:
F>>В принципе, процедура выполняется с правами юзера её создавшего, т.е. если sa создал процедуру в которой производится удаление данных из некой таблички Т_1, а юзер имеет права на запуск процедуры, но не имеет права на удаление записей из данной таблицы, то удаление будет произведено.
DH>Надо для процедуры четко определить права на таблицу, там delete, insert, update, или в MS SQL 2000 подобного нет?
Права могут относится только к пользователям или группам. Т.е. можно ограничить права пользователя создавшего процедуру.
... << RSDN@Home 1.1.0 stable >>