Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать работу с БД через хранимые процедуры? [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 и имеет права на таблицы данного НД - то исправление записи происходит успешно.
Задача в том, чтобы НЕ ДАВАТЬ пользователю права на ТАБЛИЦЫ

сама спросила, сама ответила.


Наверх

Титульная страница Поиск, карта сайта Написать письмо