Size: a a a

SqlCom.ru - уголок MS SQL

2021 July 05

KV

Kostik Vovk in SqlCom.ru - уголок MS SQL
grant select on dbo.Table1 ([column_name1]) to [user]
источник

A

Andrey in SqlCom.ru - уголок MS SQL
+ создать view на нужные колонки
источник

ОН

Олег Неелов... in SqlCom.ru - уголок MS SQL
День добрый!
Какие есть варианты решения следующей задачи:
Ограничить для пользователей insert в БД с определённого host/IP?
Пользователи в БД DBO, объекты могут создавать и удалять самостоятельно.
С одних ПК им нужно разрешить возможность выполнять insert, с других нужно запретить. При этом возможность выполнять select должна остаться вне зависимости от того с какого ПК выполнено подключение/запрос.
источник

AR

Andrey Rumanec in SqlCom.ru - уголок MS SQL
Передавайте в запрос ip  адрес в качестве параметра
источник

AR

Andrey Rumanec in SqlCom.ru - уголок MS SQL
Или оберните ваши операции в процедуры и туда передавайте ip и проверяйте
источник

A

Andrey in SqlCom.ru - уголок MS SQL
Ну, технически, это можно сделать через instead of insert триггер на таблицу (привет вчерашний тред). В нем проверять IP адрес сессии и вставлять, если он из "белого" списка.
источник

A

Andrey in SqlCom.ru - уголок MS SQL
А вообще, если они dbo, то смысла в запретах нет - отключат триггер, выдадут права , да и базу удалят.
источник

А

Артур in SqlCom.ru - уголок MS SQL
Не понимаю, как вы вообще доверяете пользователям доступ к физическим таблицам?
В моем понимании все процессы взаимодействия пользователя с физической структурой должны производиться через представления, функции и процедуры. Там вы сами можете управлять их действиями и выборками по вашему желанию
источник

ОН

Олег Неелов... in SqlCom.ru - уголок MS SQL
БД для аналитических проектов, заранее не известно какие проекты будут, какие данные будут, какого-то специального приложения и процесса не существует, это всё внутренняя деятельность, пользователям нужно размещать на некоторое время данные, выполнять обработку и т.д. Пользовательское приложение в данном случае это SSMS. Люди вполне грамотные, но не разработчики, нужно сделать некоторые ограничения (на insert) уровнем выше (выше БД, чтобы не обходили ограничения). Подошел бы триггер, но подходящего функционала не нашел.
источник

ОН

Олег Неелов... in SqlCom.ru - уголок MS SQL
Как концепт:
DDL trigger на create table, который создает для таблички trigger на insert и еще один trigger на запрет drop trigger
Но какой-то сложные концепт :-(
источник

А

Артур in SqlCom.ru - уголок MS SQL
Вот коллега вам предложил выход через триггер. «Выполнить вместо вставки», где пишите кого пропускать на вставку, кого нет.
источник

A

Andrey in SqlCom.ru - уголок MS SQL
В постановке задачи все пользователи db_owner-ы.
источник

А

Артур in SqlCom.ru - уголок MS SQL
Не, ну это жесть
источник

A

Alex in SqlCom.ru - уголок MS SQL
Хахаха))
источник

A

Alex in SqlCom.ru - уголок MS SQL
db-owner - как вы ему что-то ограничите-то? Никак, он себе сам любые права выдаст.
источник

A

Alex in SqlCom.ru - уголок MS SQL
Сделайте им разные учетки просто.
Из дома пусть ходят через VPN по другой учетке, у которой нет прав на инсерт
источник

АР

Александр Ройтман... in SqlCom.ru - уголок MS SQL
Почему dbo? Ваши пользователи должны иметь полный контроль над БД? Или достаточно только чтения/записи данных?
источник

А

Артур in SqlCom.ru - уголок MS SQL
Если так, то тут ничего не поможет. Так как каждый может творить что душе угодно.
Есть только вариант написать DDL триггер на запись изменения объектов, где будут все действия всех пользователей. Создать таблицу в мастере и писать туда. Вряд ли кто туда сунется, но в случае чего, вы сможете контролить и тыкать носом кто что делал
источник

ОН

Олег Неелов... in SqlCom.ru - уголок MS SQL
смел предположить, что есть триггер уровня сервера по аналогии с триггером на логон
источник

A

Alex in SqlCom.ru - уголок MS SQL
Вот подумайте над этим предложением - кажется, самое простое и  логичное.
Ничего костылить даже не надо.
источник