Как запретить одновременный достум к нескольким базам сервера ?

Krempel
Дата: 29.01.2013 17:11:24
На сервере несколько баз данных, существует юзер с правами ко всем базам.
У юзера есть возможность писать и запускать скрипты для обновления данных.

Есть ли возможность запретить юзеру в скриптах:
1. обращаться одновременно к нескольким базам (например, синтаксисом <база>.dbo.<таблица>)
2. в пределах одного скрипта перемещаться от базы к базе (например командой use)
Гавриленко Сергей Алексеевич
Дата: 29.01.2013 17:11:51
Нет. Только отобрав права.
Glory
Дата: 29.01.2013 17:12:42
Krempel
1. обращаться одновременно к нескольким базам (например, синтаксисом <база>.dbo.<таблица>)
2. в пределах одного скрипта перемещаться от базы к базе (например командой use)

Отрубить руки. Чтобы он не мог писать код.
Krempel
Дата: 29.01.2013 17:14:52
Гавриленко Сергей Алексеевич
Нет. Только отобрав права.


Может можно как-то контролировать количество коннектов к базам ?
(в смысле не разрешать больше одного)
pkarklin
Дата: 29.01.2013 17:16:36
Krempel,

И как это ограничит использование <база>.dbo.<таблица> из одного коннекта к одной бд?!
Glory
Дата: 29.01.2013 17:16:54
Krempel
Может можно как-то контролировать количество коннектов к базам ?

Logon Trigger
Гавриленко Сергей Алексеевич
Дата: 29.01.2013 17:18:10
А откуда вообще такое пространное желание?
Krempel
Дата: 29.01.2013 18:04:47
Гавриленко Сергей Алексеевич
А откуда вообще такое пространное желание?

Попытаюсь обрисовать расклад...

Через самопальный интерфейс разрешил юзеру играться с данными, исключительно в трансакциях.
Юзеры эти в данном случае люди без особых технических знаний, но сами уверены в обратном и им очень хочется повыделываться с данными напрямую (наверное им на выходных попалась брошюрка типа "SQL - это просто" вот их и попёрло)...
Когда юзер_1 считает, что он наваял конечный скрипт, то он отмечает его как готовый и следующий юзер_2 запускает его с коммитом при успешном завершении.
юзер_1 в данномм случае это мажет быть манагер среднего звена, а юзер_2 это или его начальник, или уборщица или кто угодно, кто считает себя достаточно продвинутым в SQL и изявил желание поучаствовать в этой цепочке "многоуровневого контроля".
Как-бы там нибыло - пожелание клиента закон!

В итоге на сервере несколько баз с одинаковой структурой, но с разной заполненностью данными.
ДБ1 - тестовая с минимальными данными
(с полными данными некоторые таблицы имеют до 30 млн. записей и чтобы не утомлять юзера ожиданием отработки запросов)
ДБ2 - тестовая с полными данными на избранные таблицы, но с минимальными на остальные таблицы.
.....
....
ДБх - тестовая с полными данными.
Продуктив - рабочая база, разумеется с полными данными

В начале на каждой базе был свой комплект юзеров, но это закумарило пользователей, т.к. нужно было каждый раз коннектиться по новой.
Разносить по серверам тоже не вариант (долго объяснять особенности конфигурации).

Интерфейс сам перекидывает юзеров с базы на базу в зависимости от степени готовности скрипта и запуска с коммитом, т.е. сколько там этих тестовых баз и к какой они сейчас подключены в конечном итоге вообще не их собачье дело (некоторые искренне уверены, что они все время работают с продуктивной базой).

И всё это работало, до одного момента, пока самые что ни на есть продвинутые юзеры добрались до команд типа use и записей через .dbo. и начали таскать данные из соседних баз.

Вот тут и назрела потребность ограничивать юзеров с одновременным доступам к нескольким базам

Может есть ещё какие-нибудь концептуально другие решения, я не знаю...
Буду рад любому совету.
Гавриленко Сергей Алексеевич
Дата: 29.01.2013 18:07:10
Раз у вас есть самопальный интерфейс, встройте в него парсинг на предмет указанных команд и отпарывайте.
Гость333
Дата: 29.01.2013 18:12:08
Krempel
Может есть ещё какие-нибудь концептуально другие решения

Как ни странно, самое верное решение дано здесь 13845986 :-)))