Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 disconnect user  [new]
sdepals
Member

Откуда:
Сообщений: 122
Подскажите можно-ли как-нибудь программно отключить пользователя от SQL Server?
Просто выкинуть, а не логин отключать или spid килять.
1 окт 11, 22:02    [11368872]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
Glory
Member

Откуда:
Сообщений: 104751
sdepals
или spid килять

А это разве не "программно отключить пользователя " ?
1 окт 11, 22:28    [11368901]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
sdepals,

Раз spid килять не подходит. Можно создать роль базы данных у которой нет прав никуда, и перемещать туда скриптом логин пользователя.
1 окт 11, 22:31    [11368907]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
sdepals
Member

Откуда:
Сообщений: 122
ну вообще хочу именно дисконнект, хочу прочитать в sp_who2 programname='Среда Microsoft SQL Server Management Studio' и выкинуть пользователя(чтобы ему требовалось повторно приконектиться=) ).

Написал прогу которая каждую милисекунду киляет все spid у которых ip<>'192.168.*' и зашел в бд с инета, абсолютно ничего не заметил, все запросы шикарно выполняются, показывают мне результат, даже те таблички которые открываются больше 10секунд, а прога убивает все сессии 10 раз в секунду, причем не глючит запрос работает процессы исчезают.
1 окт 11, 22:47    [11368929]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
sdepals
Member

Откуда:
Сообщений: 122
trew,
Интерессный момент, под одним пользователем сидит целый отдел, подключаются через клиентское приложение, но соответственно могут и через других клиентов, и соответственно не хочется чтобы они так делали ))) в поиске не видел чтоб эту проблему решили, поэтому придумываю свои грабли )) т.е. нужно разорвать соединение когда пользователь лезет куда ни надо, или откуда ненадо )), но учитывая что под этим логином в этот же момент могут работать добропорядочные сотрудники )
1 окт 11, 22:55    [11368934]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
sdepals,

На уровне приложения и решай вопрос, раз пользователи подключаются к базе через один логин.
1 окт 11, 23:12    [11368958]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
sdepals
Member

Откуда:
Сообщений: 122
да на уровне приложения все нормально, я ж говорю про ситуации когда пользователь подключается не через приложение, кстати про килл spid немного обманул, поставил в делфи таймер на 0.001 секунды(меньше нельзя =)), когда выполняются большие запросы запрос рубится и выдает ошибку, но любые маленькие запросы чувствуют себя вполне комфортно ...
1 окт 11, 23:55    [11369044]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
Мда, сначала накидаем себе граблей, а потом ходим, стараясь на них не наступать. Наверное затем, чтобы жизнь скучной не казалась.

Делаете триггер на логон, в котором проверяете Application Name и даете отлуп, ежели оно вас не устраивает.
2 окт 11, 09:53    [11369430]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
NoWriteLaw
Guest
sdepals
ну вообще хочу именно дисконнект, хочу ... выкинуть пользователя(чтобы ему требовалось повторно приконектиться=) ).

За такое поведение принято морду бить.
3 окт 11, 09:07    [11371680]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm
Делаете триггер на логон, в котором проверяете Application Name и даете отлуп, ежели оно вас не устраивает.

Даже присоединяясь из студии, можно указать любое значение Application Name. Так что проверка очень сомнительная.
3 окт 11, 09:35    [11371792]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy
invm
Делаете триггер на логон, в котором проверяете Application Name и даете отлуп, ежели оно вас не устраивает.

Даже присоединяясь из студии, можно указать любое значение Application Name. Так что проверка очень сомнительная.

Конечно сомнительная. Что в джобе, киляющем соединения, что в триггере. Имхо, триггер в качестве костыля проще.

А ТСу, если возможна модификация приложения, смотреть в сторону бесправного пользователя + роль приложения.
3 окт 11, 09:54    [11371877]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm,

ТС надо смотреть в сторону создания индивидуальных пользователей (можно виндовых) и раздачи им только необходимых прав.
3 окт 11, 10:07    [11371930]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy,

Это не решит проблему доступа к БД только через приложение.
3 окт 11, 11:18    [11372385]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
нетривиальное решение: вести свои сессии, при открытии в приложении отправлять шифрованный кусок текста,
на стороне сервера расшифровывать в encrypted процедуре ( что passphrase никто не спалил ) и если всё норм
ставить галочку у сессии что сессия валидная, иначе в этом ключе все брить. ))
3 окт 11, 11:21    [11372418]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm
iljy,

Это не решит проблему доступа к БД только через приложение.


В этом отпадет необходимость, потому что пользователь все равно сможет сделать только то, что ему разрешено.
3 окт 11, 11:44    [11372620]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy
invm
iljy,

Это не решит проблему доступа к БД только через приложение.


В этом отпадет необходимость, потому что пользователь все равно сможет сделать только то, что ему разрешено.

Это только при условии, что БД спроектирована нормально. Если же БЛ частично реализована на стороне клиента, то пустив пользователя в БД мимо приложения, можно поиметь проблемы.
3 окт 11, 12:00    [11372754]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
komrad
Member

Откуда:
Сообщений: 5735
sdepals
ну вообще хочу именно дисконнект, хочу прочитать в sp_who2 programname='Среда Microsoft SQL Server Management Studio' и выкинуть пользователя(чтобы ему требовалось повторно приконектиться=) ).

Написал прогу которая каждую милисекунду киляет все spid у которых ip<>'192.168.*' и зашел в бд с инета, абсолютно ничего не заметил, все запросы шикарно выполняются, показывают мне результат, даже те таблички которые открываются больше 10секунд, а прога убивает все сессии 10 раз в секунду, причем не глючит запрос работает процессы исчезают.


файерволл настройте на сервере и не парьтесь.
3 окт 11, 12:29    [11373012]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm
iljy
пропущено...


В этом отпадет необходимость, потому что пользователь все равно сможет сделать только то, что ему разрешено.

Это только при условии, что БД спроектирована нормально. Если же БЛ частично реализована на стороне клиента, то пустив пользователя в БД мимо приложения, можно поиметь проблемы.

Можно. Поэтому делать так не надо.
3 окт 11, 12:36    [11373068]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy,

Можно что, лазить в БД минуя бизнес-правила?
3 окт 11, 12:52    [11373224]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm,

можно поиметь проблемы.
3 окт 11, 13:09    [11373383]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy,

Я об этом и говорю: если пускать в БД пользователей мимо клиента, в котором реализована бизнес-логика, то проблемы гарантированы.
Или мы опять о разном?
3 окт 11, 14:24    [11374162]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm
iljy,

Я об этом и говорю: если пускать в БД пользователей мимо клиента, в котором реализована бизнес-логика, то проблемы гарантированы.
Или мы опять о разном?

Да нет, об одном и том же. Только не не пускать надо, а права сразу не раздавать, с которыми возможно нарушить бизнес-правила. Всегда очень плохая практика вешать проверку бизнес-правил на клиента. Если уж это необходимо с сервера вынести - значит должна быть трехзвенка.
3 окт 11, 15:05    [11374597]     Ответить | Цитировать Сообщить модератору
 Re: disconnect user  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
iljy
invm
iljy,

Я об этом и говорю: если пускать в БД пользователей мимо клиента, в котором реализована бизнес-логика, то проблемы гарантированы.
Или мы опять о разном?

Да нет, об одном и том же. Только не не пускать надо, а права сразу не раздавать, с которыми возможно нарушить бизнес-правила. Всегда очень плохая практика вешать проверку бизнес-правил на клиента. Если уж это необходимо с сервера вынести - значит должна быть трехзвенка.
Ага, все верно. Только вот для этого вся система, включая БД, должна быть соответствующим образом спроектирована и реализована. Что-то мне подсказывает, что у ТС это не так. Поэтому и был предложен костыль в виде роли приложения.
3 окт 11, 18:48    [11376912]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить