Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки? / 18 сообщений из 18, страница 1 из 1
03.02.2020, 16:26
    #39921896
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Для построение одной из систем не хватает следующего функционала. У пользователя должен быть набор прав на чтение данных в БД, кроме одной служебной хранимки - которая меняет данные. Может существует такая возможность какие то обходные пути? Ну или другой вариант когда сессия X читает данные но при этом могла бы их читать с учетом незакомиченных данных в транзакции сессии Y? Ну своего рода мапинг такой.Сейчас вариант есть менять на лету права но с точки зрения производительности и администрирования не подходит.
...
Рейтинг: 0 / 0
03.02.2020, 16:45
    #39921914
sti
sti
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Не очень понятно, что понимается под "правами на чтение хранимки", но в любом случае любые права можно настроить пообъектно, будь то просмотр хранимки или данных, которая она генерирует. Для простоты администрирования бывает удобно вынести такой объект в отдельную схему и настраивать права на схему.
...
Рейтинг: 0 / 0
03.02.2020, 18:47
    #39921985
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу,
?
Код: sql
1.
DENY EXECUTE ON [процедура] TO [пользователь]
...
Рейтинг: 0 / 0
03.02.2020, 22:17
    #39922064
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Запретить выполнять хранимую процедуру более чем одному коннекту (в любой момент времени), насколько я понимаю, нельзя. Нет, можно , конечно, но так делать не стоит (переводом базы в single mode ).
...
Рейтинг: 0 / 0
03.02.2020, 22:31
    #39922067
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу,

В общем, в результате обсуждения выяснилось, что вопрос непонятен, что нужно-то? :-)
МуМу
У пользователя должен быть набор прав на чтение данных в БД, кроме одной служебной хранимки - которая меняет данные.
Можно откусить у него права, или можно проверять пользователя в самой процедуре.
...
Рейтинг: 0 / 0
04.02.2020, 03:26
    #39922098
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
А если двое под одним логином?
...
Рейтинг: 0 / 0
04.02.2020, 12:15
    #39922205
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
SIMPLicity_
Запретить выполнять хранимую процедуру более чем одному коннекту (в любой момент времени), насколько я понимаю, нельзя. Нет, можно , конечно, но так делать не стоит (переводом базы в single mode ).


Можно, почему нет. Используйте блокировку уровня приложения - sp_getapplock
...
Рейтинг: 0 / 0
04.02.2020, 12:30
    #39922215
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Объясню по другому. Есть БД в которой есть куча таблиц и хранимок. Хранимки некоторые меняют данные некоторые нет. Некоторая система понимает какие хранимки на изменение какие на чтение. Которые на чтение должны выполнятся на локальном сервере, а на изменение на другом. Что бы исключить ошибку идентификации(чтение - изменение) выдаются права только на чтение. То есть, если процедура ошибочно будет идентифицированна на чтение а произойдет изменение данных то возникнет ошибка. При все при этом возникает необходимость изменять данные из этой же сессии в этой базе но через "спец" канал - через специально выделенную хранимку.
Пока пришло такое решение в голову - меняем все таблицы на соответствующие вьюхи, а таблицы переименовываем на какое нибудь гарантированно уникальное значение например ТаблицаНовая =Таблица + 35645830. Ну а затем даем права на чтение вьюх и на использование спецхранимки на изменение. Правда проверить нужно, возможно при таком раскладе остальные хранимки смогут менять данные.
...
Рейтинг: 0 / 0
04.02.2020, 12:36
    #39922223
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Еще забыл отметить что вьюхи должны быть доступны на чтение но при изменении должна происходить ошибка. (есть мысли еще через триггер ошибку генерить с проверкой канала изменений, в этом случае тогда вообще с правами заморачиваться не нужно)
...
Рейтинг: 0 / 0
04.02.2020, 12:40
    #39922226
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу,

Вроде и по русски, но все равно не понял, Вы решаете эту задачу в рамках одного логина или у вас их может быть несколько?
...
Рейтинг: 0 / 0
04.02.2020, 12:42
    #39922228
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу,

Читать про роль db_denydatawriter
...
Рейтинг: 0 / 0
04.02.2020, 12:46
    #39922234
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу
Еще забыл отметить что вьюхи должны быть доступны на чтение но при изменении должна происходить ошибка . (есть мысли еще через триггер ошибку генерить с проверкой канала изменений, в этом случае тогда вообще с правами заморачиваться не нужно)


Здесь всё круто, как говорил Антон Павлович
...
Рейтинг: 0 / 0
04.02.2020, 12:49
    #39922237
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Убегал в больницу, торопился извините за мой французский;) Вьюхи должны быть не обновляемые, такой термин будет думаю всем понятен.
...
Рейтинг: 0 / 0
04.02.2020, 13:04
    #39922250
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу,

1. Создать схему с владельцем, отличным от владельца схемы в которой живут процедуры и переместить туда все таблицы.
2. Для каждой перемещенной таблицы создать в исходной схеме синоним.
3. Добавить кого нужно в db_denydatawriter
4. Профит
...
Рейтинг: 0 / 0
04.02.2020, 14:45
    #39922312
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
To invm. Да пожалуй так красивее получится( в моем варианте надо парсить запросы и заменять названия таблиц, вьюхи то необновляемые). Спасибо, попробую.
...
Рейтинг: 0 / 0
05.02.2020, 02:18
    #39922565
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Gbpltw! Это всё круто, но надо помнить, что коннект, присоединившийся под логином из группы sysadmin, сможет писать и в то и в другое. Похоже что так...
PS А клиентская часть" готова получать ошибку записи и корректно её отрабатывать?
...
Рейтинг: 0 / 0
05.02.2020, 05:51
    #39922578
Gerros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
МуМу
Для построения одной из систем не хватает ... функционала.
Некоторая система понимает какие хранимки на изменение какие на чтение. Которые на чтение должны выполнятся на локальном сервере, а на изменение на другом.
Раз уж Вы сами строите систему, может, просто сделать в приложении две строки подключения - одна для сервера "для чтения", другая для сервера "для записи"? Чтобы приложение само направляло свои запросы куда надо.
Если "чтение" - это отчёты, можно зеркалирование сделать с зеркалами для чтения.
...
Рейтинг: 0 / 0
05.02.2020, 15:14
    #39922927
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки?
Планируется создание универсальной системы прокси( для целей создания кластера) в которой нет возможности менять вызов запросов(можно минимально менять их на лету) и разделять их. Важно разделять чтение и запись и соответсвенно выполнять на различных нодах(это в общих чертах).
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли для прав на чтение в БД сделать исключение на изменение данных одной хранимки? / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]