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

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


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

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

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


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

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


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