Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Уважаемые! Есть проблема. Согласно документации Microsoft, если на VIEW дать разрешения на INSERT, UPDATE и DELETE, то на саму таблицу на которой построен VIEW разрешения можно не давать. Данное утверждение правильно, если делать это через Query Analyzer или через ODBC каким-нибудь клиентом. Но это не срабатывает, если это делать из MS Access (.ADP) или, хотя бы, из SQL Server Enterprise Mansger. При этом возникает ошибка, где говорится, что не даны права на саму таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 09:15 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Вообще-то в документации говорят, что юзер должен иметь права и на базовые таблицы представления. А вот при использовании sp_ вовсе и не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 15:18 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Все просто. Дополнительно права на таблицу потребуются, если владельцы у таблицы и представления (процедуры) разные. Если владелец один и тот же, то на таблицу права давать не нужно, и действует вышеуказанное правило из документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 06:37 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Все это верно, но при использовании динамического SQL и дальнейшего его вызова, типа exec('sql выражение') все равно требется права на таблицу. Допустим я как dbo создал таблицу Т1, затем создал VW1 на основе Т1. Даю все права на VW1 и никаких прав на Т1. Затем я делаю комманду типа exec('update VW1 set поле1=1') и получаю сообщение, что нет прав на SELECT на Т1. Это происходит только при подключении через OLE DB. При подключении через ODBC такие вещи проходят и работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 07:37 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
exec ВСЕГДА выполняется с правами пользователя, его запустившего, а не владельца процедуры. "When a stored procedure is run that executes a string, permissions are checked in the context of the user who executes the procedure, not in the context of the user who created the procedure . However, if a user owns two stored procedures in which the first procedure calls the second, then EXECUTE permission checking is not performed for the second stored procedure." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 07:42 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
>>exec ВСЕГДА выполняется с правами пользователя, его запустившего, а не владельца процедуры. Нет!!!! Есть исключение - это динамический SQL, ну еще есть команды и системные процедуры, которые могут исполнять только разные администраторы, например SQL-команда SETUSER. Если не верите, то сами попробуйте. Создайте таблицу, заполните ее некоторыми данными, затем создайте процедуру где будет команда exec('select * from таблица') и получите результат!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 07:50 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
SQL2000 SP1, MDAC 2.6 SP1, ODBC Если пользователь НЕ ИМЕЕТ прав на таблицу dbo.table1 и пытается выполнить разрешенную процедуру, созданную dbo, в которой есть exec('select * from table1'), то У МЕНЯ выдается сообщение SELECT permission denied on object 'table1' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 08:30 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
И кстати, для того чтобы выполнять команду SETUSER нужно быть членом sysadmin или db_owner. А это сродни богу, т.е. IMHO такой пользователь может обращаться к объектам базы как хочет(напрямую или через динамический запрос) - все равно он имеет на них права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 08:47 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
По моему мнению, проблема заключается в следующем: Визуальные классы, используемые в EM и Access для отображения данных обращаются к указанному VIEW или процедуре. При попытке изменить данные выполняется запрос на изменение, но в основной таблице(!), на которой построен VIEW. Это можно хорошо увидеть Profiler-ом. И в случае просмотра, и в случае изменения, действуют те права, которые установлены на эти объекты, но объекты-то разные. Если же в QA явно написать UPDATE ViewX SET F1='1', то наличия прав на изменение в таблице не требуется, так-как SELECT и UPDATE применяется к одному объекту - VIEW, и только права на VIEW имеют значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 08:48 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Так что, нет ни у кого дельного совета? Можно долго рассуждать про права, пользователей, но, как говориться, воз и ныне там. Проблема-то возникла по следующей причине. Есть некая таблица на которой построен вид, который ограничивает набор записей. Есть форма у которой источником данных служит этот вид. Пользователь должен изменять данные в форме, вносить новые и т.д., но только в рамках данного вида. Вообще-то тривиальная задача, но при этом получается, что нужно давать разрешение на базовую таблицу, что является пробелом и очень серьезным пробелом в защите данных. Я пока данную проблему решаю по своему, но этот способ тоже имеет недостатки. Заключается он в том, чтобы сделать группу в которую входят пользователи и назначить группе права на SELECT на вид. Затем сделать Application Role, которая входит в стандартную роль тем самым AR дается права на select на вид. Дополнительно AR дается все права на базовую таблицу. Затем можно залогонится под AR используя sp_setapprole. Все!!! Самой таблицы в Access не видно, а виден только вид и с ним проходят операции delete,insert и update. Но данный метод имеет недостатки. ЕСТЬ ЛИ У КОГО АЛЬТЕРНАТИВА???? Только, пожалуйста, не нужно предлагать перейти на другой язык и т.п. Есть много програмных наработок на Access и переходить на другую платформу равносильно пожару. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:56 |
|
||
|
Microsoft SQL Server
|
|||
|---|---|---|---|
|
#18+
Попробуй создать этот VIEW с опцией 'WITH VIEW_METADATA'. В этом случае шибко умные ADO-клиенты не будут апдейтить исходные таблицы, а будут пытаться адресовать запросы на обновление непосредственно вьюхе (если смогут, т.е. если вьюха - "живая"). Не забудь, правда, что для достижения транзитивных прав необходимо, чтобы у вьюхи и таблиц были одинаковые владельцы. Иначе все равно придется давать права на таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1824820]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 339ms |

| 0 / 0 |
