![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как организовать работу с БД через хранимые процедуры? [D2005, XP]
девушка © (2008-12-22 16:08:00)Добрый день!
БД MS SQL 2005, Delphi 2005, ADO.
Собственно говоря, на самомо деле вопрос стоит: как лучше организовать разграничение прав пользователей на уровне базы и на уровне приложения.
На данный момент идея следующая: пользователи могут выбирать и редактировать НД только с помощью ХП.
В БД создаем роль my_role и ХП my_proc вида:
select * from my_table
В приложении: вызываем ХП из TADODataSet, вешаем dbcontrols - пользователь может все видеть.
Если пользователю назначаем право execute на my_proc - то выборка проходит, если нет - то, естественно, нет.
Еси пользователь редактирует НД через dbcontrols и имеет права на таблицы данного НД - то исправление записи происходит успешно.
Задача в том, чтобы НЕ ДАВАТЬ пользователю права на ТАБЛИЦЫ. а давать их только на ХП. MS SQL для меня внове, не подскажете как это сделать и в том ли направлении я иду?
девушка (2008-12-23 09:22:00) [1]ответ нашла http://xayam.kilkennycat.ru/view.php?folder=16&file=1-1121844784
это уже фишка ms sql
> MOA © (20.07.05 13:17) [9]
> Без текста сложно догадаться о конкретной причине. Однако
> попробуйте (или посмотрите в BOL)
> CREATE VIEW name WITH VIEW_METADATA ...
> Посмотрите, при апдейтах может пригодится и
> WITH CHECK OPTION
> Удачи!
девушка (2008-12-23 08:19:00) [2]Зорошо, допустим забили пока на ХП.
Для таблицы CUSTOMER создаю вьюшку V_CM_CUSTOMER, где назначаю нужные мне условия. Даю пользователю права на чтение/редактирование вьюшки V_CM_CUSTOMER, на саму таблицу CUSTOMER прав не даю.
На клиента гружу НД запросом вида:
select * from V_CM_CUSTOMER
Редактируею через dbcontrols.
В итоге на сервер получаю запрос
update CUSTOMER set ...
Почему не возвращает запрос :update V_CM_CUSTOMER set ...который мне нужен?
Ega23 (2008-12-22 16:35:00) [3]
> и нафига такие танцы?
Ну иногда смысл имеет.
Правильный$Вася (2008-12-22 16:31:00) [4]
> пользователи могут выбирать и редактировать НД только с помощью ХП
> ХП my_proc вида: select * from my_table
и нафига такие танцы?
Ega23 (2008-12-22 16:29:00) [5]
> А по-плохому можно???
Можно. Читай про Grand и Revoke
девушка (2008-12-22 16:18:00) [6]
> По-хорошему - да.
А по-плохому можно???
Ega23 (2008-12-22 16:17:00) [7]
> так пользователю придется дать права на таблицы?
По-хорошему - да.
девушка (2008-12-22 16:15:00) [8]
> сама спросила, сама ответила.
ничего не поняла... так пользователю придется дать права на таблицы?
всмысле я не знаю, как и можно ли назначит права на ХП, чтобы сделать ей только на чтение или чтение/запись...
Медвежонок Пятачок (2008-12-22 16:11:00) [9]Еси пользователь редактирует НД через dbcontrols и имеет права на таблицы данного НД - то исправление записи происходит успешно.
Задача в том, чтобы НЕ ДАВАТЬ пользователю права на ТАБЛИЦЫ
сама спросила, сама ответила.