Помогите с распределением доступа
c MSSQL SERVER 2000
Если не трудно подскажите что-нибудь.
У меня есть таблица Personal, в которой
хранятся данные о персонале различных передприятий.
Основные поля в ней это табельный номер работника
и код предприятия в котором он работает.
У меня возникла следующая задача.
Отдел кадров предприятий должны добавлять изменять
и удалять работников в этой таблице.
ПРИ ЭТОТ ОНИ НЕ ДОЛЖНЫ ИМЕТЬ ВОЗМОЖНОСТЬ
УВИДЕТЬ, ИЗМЕНИТЬ ИЛИ УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ
ЧУЖОГО ПРЕДПРИЯТИЯ.
Кто-то мне порекомендовали использовать
представление (view), который бы
отфильтровывал "чужие" записи и
выдавал только "свои". И запретить
удаление, добавление и изменение у таблицы
и разрешить эти действия у предсталвения.
Тогда всю работу с таблицей нужно делать
через это представление.
Я это все проделал и получил следующие результаты.
При использовании query analizer мне удается получить
данные, их изменить и добавить.
Но как только я пытаюсь сделать это в Enterprise Manager
(войти под неким пользователем, который имеет права на
изменение, добавления и удаления через представление), то при попытки
добавить или изменит запись получаю сообщения, что
не имею надлежащих прав для изменения таблицы.
Правильно, я и не имею их. Но я обращаюсь же через представление,
а на представление у меня вся права открыты)
Аналогичный результат я получаю, когда открываю
представление в какой-либо "сетки" (VB) в прикладной программе. Не удается
ни удалить, ни добавить, ни изменить.
Т.е. при непосредственном выдаче команды INSERT INTO phpbb2_View values..
все срабатывает, а при Адошных .AddNew.....Update - ОШИБКА.
Может быть подскажете что-нибудь по этому поводу. Либо
дадите совет: как мне решить задачу разделения доступа
другим путем.
Заранее благодарен за ответы.
С Уважением,
Ожерельев Максим.
Сама идеология разграничения прав доступа с помощью представлений Вам была предложена правильно. Для того одни и существуют (если не считать, что часто их применяют чтобы скрыть сложные запросы, особенно объединяющие две и более таблиц).
Права на таблицу Вас смущать не должны - пользователи работают не с таблицами и даже не с видами, а с приложением, которое их вызывает. А если даже и влезут, то когда база хорошо нормализована, почти ничего в таблице не поймут - для всех кроме разработчика программы (и даже для системного администратора) это китайская грамматика с головоломными запросами.