Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2015, 01:01   #1
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию Как ограничить количество подключений к БД Firebird

Всем дорого времени суток!
Подскажите пожалуйста, как ограничить количество подключений к БД. К примеру есть 2 версии программы, одна - Однопользовательская, другая - Сетевая. Мне нужно сделать так, чтобы в однопользовательской было не более одного подключения, а в сетевой, определенное количество (к примеру 5 подключений).
Заранее спасибо!
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 18.10.2015, 07:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Развести по пользователям не вариант? В смысле в БД добавить роли и пользователей на каждое подключение - своего пользователя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2015, 09:01   #3
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Нет, не вариант.
Дело в том, что в БД есть таблица "Пользователи", куда будут заноситься юзеры работающие с базой самостоятельно через программу. Их могут быть сотни, но вот нужно ограничить одновременное подключение. А сделать это необходимо именно через программу, чтобы в будущем не изменять базу, так как, к примеру, у пользователя сейчас лицензия однопользовательская, а через какое-то время он приобретет еще несколько лицензий. Ну или может быть с базой что-то сделать, но только как? В общем я в ступоре.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 18.10.2015, 13:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО дурной путь вонина...
Такие вещи решает трехзвенка, когда клиенты подключаются к серверу, сервер хранит список подключенных клиентов, и блочит, если список переполнен. Чтоб актуализировать список сервер по таймеру опрашивает клиентов (может так делать), не отключен ли клиент неестественным образом (скажем свет порубали) и соответственно корректирует список подключений, хотя в случае с ТСР это и не требуется.

А в базе... Я не уверен что надежно будет, если переложить эту работу на СУБД...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2015, 13:26   #5
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, а что такое "трехзвенка"?
И как сделать чтобы сервер по таймеру опрашивал клиентов?
Спасибо.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 18.10.2015, 13:37   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
что такое "трехзвенка"?
https://www.google.com.ua/?gws_rd=cr...9D%D0%9A%D0%90
Цитата:
И как сделать чтобы сервер по таймеру опрашивал клиентов?
Целиком и полностью зависит от способа обмена данными клиентов с сервером
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2015, 13:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Целиком и полностью зависит от способа обмена данными клиентов с сервером
Вот вот. Может и не нужен этот таймер. Это я к тому, если клиент палпалыч смертью храбрых от диспетчера задач, или комп выключился, а подключение не разорвалось правильно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2015, 14:07   #8
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

А возможно ли сделать это через таблицу MON$ATTACHMENTS. Т.е. сделать запрос на выборку из этой таблицы и если количество записей превысит количество лицензий, то запретить доступ к БД. Для теста даже попробовал вырубить комп через кнопку, после загрузки записи о подключениях удалились, т.е. работает правильно даже при аварийном выключении.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 18.10.2015, 15:03   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А возможно ли сделать это через таблицу MON$ATTACHMENTS.
Это зависимость от версии огнептицы. Я бы на это не покупался.
Впрочем, если тебя это устраивает - ради бога.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2015, 18:04   #10
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, а чем может быть чревато? И почему не покупался бы? Версия 2.5.4
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ограничить количество строк vostok Microsoft Office Excel 7 02.01.2013 18:42
Потоки, как ограничить количество? bakanaev Общие вопросы Delphi 2 16.08.2012 16:55
как ограничить количество вводимых чисел пользователем? Kati Помощь студентам 4 21.10.2010 11:56
Ограничить количество клиентов SwiP Работа с сетью в Delphi 1 16.06.2010 19:17
Как ограничить количество вводимых знаков числа после запятой. proggramer Общие вопросы C/C++ 1 24.03.2010 03:15