Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

IBase

4.9K
08 сентября 2003 года
BanderLog
7 / / 08.09.2003
Пожалуйста подскажите как ограничить число подключений под одним username к интербейсовской базе. Программа пишется на D7.
5.2K
10 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog
Пожалуйста подскажите как ограничить число подключений под одним username к интербейсовской базе. Программа пишется на D7.



Я не в курсе, что для этого можно сделать в БД, но на уровне приложения можно ограничить кол-во запущенных копий этого приложения на одной машинке.
Если так, то могу слить код, который может помочь в этом нелегком деле. (Есть такая бука - "Советы программистов" - очень полезная вещь, хоть и с опечатками и устаревшими советами)
(Еще есть такая маза, что если InterBase не зарегенный, то больше пяти подключений не поддердивает или это только для версии 5.0)

4.9K
11 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil


Я не в курсе, что для этого можно сделать в БД, но на уровне приложения можно ограничить кол-во запущенных копий этого приложения на одной машинке.
Если так, то могу слить код, который может помочь в этом нелегком деле. (Есть такая бука - "Советы программистов" - очень полезная вещь, хоть и с опечатками и устаревшими советами)
(Еще есть такая маза, что если InterBase не зарегенный, то больше пяти подключений не поддердивает или это только для версии 5.0)


Что же, спасибо за совет, но проблема в том, что приложение сетевое, и на одной машине будет запущена тока одна копия программы (хотя исходники не помешают, заранее спасибо).
PS: И на счёт IBase и его регистрации. Та же проблема, ограничение на 5 подключний (IBase v6.0.1.6), случаем не знаешь где можно взять IB_license.dat шоб был минимум на 50 пользователей, а то что-то нигде надыбать не могу (конечно на халявку).

5.2K
11 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog

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



На будущее - RTFM! книга, про которую я выше писал тебе поможет в разных мелочах, а некоторые выдержки из нее выложены на сайтах - поисковик тебе в зубы!

Просто добавь в модуле твоего сурса (вызывается Project->View Source, если забыл ;-)))

Код:
const  MemFileSize=127;  
MemFileName='name_you_proga_mogno_bez_rasshirenija_exe';    
var MemHnd: HWND;    
{$R *.RES}    
begin    
MemHnd:=CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READWRITE,0, MemFileSize, MemFileName);
if GetLastError<>ERROR_ALREADY_EXISTS    
then      
 begin      
  Application.Initialize;      
  with TInitialForm.Create(nil) do      
  TRY        
   InitialForm:=TInitialForm.Create(Application);
    {здесь Create всех своих форм, что нужны-
 найдешь их все - они запсианы сразу после главной твоей      формы}
  FINALLY        
   free;      
  END;    
  Application.Run;    
 end    
else
 Application.MessageBox('Прога уже запущена!','Ошибка!',MB_OK);    
CloseHandle(MemHnd);    
end.


Если что-то не получается - проверь что ты не так указал, может быть при загрузке ты менял порядок показа форм и т.д. и т.п.
Этот кусок кода я сам использую, поэтому пургу не гоню.
А какая, собственно говоря, разница - сетевая твоя прога или нет? у юзеров она запускается как копия!так что этот код тебе поможет!
начсет файла dat - я сам юзаю пока 5-ю версию ИБейза и нашел только для него(советую поискать в инете - можешь смело потом просить у начальства денег на покупку этой самой лицензии, естественно сумму выбирай в разумных пределах;))).
А вот гемороиться с обращением к БД или там на уровне БД(уже в самой БД создавать таблицу юзеров, в нее записывать кол-во коннектов, из проги потом это делать обрубать... в общем идея где-то такая) - не советую!тяжко это все и много лишнего кода!

Я тут писал поскорому, может и не залогинился на форуме8)
Привет от Soleil.
Успехов!
4.9K
12 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil


На будущее - RTFM! книга, про которую я выше писал тебе поможет в разных мелочах, а некоторые выдержки из нее выложены на сайтах - поисковик тебе в зубы!

Просто добавь в модуле твоего сурса (вызывается Project->View Source, если забыл ;-)))

Если что-то не получается - проверь что ты не так указал, может быть при загрузке ты менял порядок показа форм и т.д. и т.п.
Этот кусок кода я сам использую, поэтому пургу не гоню.
А какая, собственно говоря, разница - сетевая твоя прога или нет? у юзеров она запускается как копия!так что этот код тебе поможет!
начсет файла dat - я сам юзаю пока 5-ю версию ИБейза и нашел только для него(советую поискать в инете - можешь смело потом просить у начальства денег на покупку этой самой лицензии, естественно сумму выбирай в разумных пределах;))).
А вот гемороиться с обращением к БД или там на уровне БД(уже в самой БД создавать таблицу юзеров, в нее записывать кол-во коннектов, из проги потом это делать обрубать... в общем идея где-то такая) - не советую!тяжко это все и много лишнего кода!

Я тут писал поскорому, может и не залогинился на форуме8)
Привет от Soleil.
Успехов!



Ладушки, книжку поисчим.:)
На счёт копий, енто я просто не так выразился, каюсь :{ , не прога запускается по сети, а просто БД не локальная а сетевая, так что оптимальный вариант пока это таблица с подключенными юзерами.
Этот вариант мне нравится больше чем издевательства над isc4.gdb с настройкой логов и их обработкой (нашёл статейку по этому поводу).
За исходничек пасибы, опробую как нить попозже, сроки поджимают :( вот и мучаюсь, рюшечки потом наведу, пока тестить народ будет первую версию.
Да и завязывать надо с IB и переходить на FireBird
но увы, обязательное условие начальства - первая версия на IB, а там как пойдет.

5.2K
12 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog


Ладушки, книжку поисчим.:)
На счёт копий, енто я просто не так выразился, каюсь :{ , не прога запускается по сети, а просто БД не локальная а сетевая, так что оптимальный вариант пока это таблица с подключенными юзерами.



Может я чего не дочитал где и т.п., но вроде как и БД (хоть она и сетевая) запускается в своей копии(в случае внесения изменений одновременно несколькими юзверями в одних и тех же данных - соответственно как настроишь транзакции, так и будет работать - может взглюкнуть, а может долго молчать и убить базу, а может и прокатит...)
Почитай еще такую буку (в любом издании, хоть 1-м, хоть 2-м):А.Н.Ковязин, С.М.Востриков "Архитектура, администрирование и разработка приложений баз данных в IB, FB,Y" Мир InterBase

Все-таки ограничить коннекты на уровне приложения проще!
Хотя, смотря как написана прога - можно, конечно, на каждую выборку устраивать коннект-дисконнект и т.д. 8)))
Хозяин-барин!!!
Удачи!

!!!Дополнение к примеру: обязательно добавь в uses модуль Windows!!!

4.9K
12 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil


Может я чего не дочитал где и т.п., но вроде как и БД (хоть она и сетевая) запускается в своей копии(в случае внесения изменений одновременно несколькими юзверями в одних и тех же данных - соответственно как настроишь транзакции, так и будет работать - может взглюкнуть, а может долго молчать и убить базу, а может и прокатит...)
Почитай еще такую буку (в любом издании, хоть 1-м, хоть 2-м):А.Н.Ковязин, С.М.Востриков "Архитектура, администрирование и разработка приложений баз данных в IB, FB,Y" Мир InterBase

Все-таки ограничить коннекты на уровне приложения проще!
Хотя, смотря как написана прога - можно, конечно, на каждую выборку устраивать коннект-дисконнект и т.д. 8)))
Хозяин-барин!!!
Удачи!

!!!Дополнение к примеру: обязательно добавь в uses модуль Windows!!!



Эх, читать не перечитать умных мне буков. :)
Но благодоря спецификации базы мне с этм проще, в основном из базы идёт только выборка и добавления, а редактирование - явление крайне редкое. :) Да и колличество пользователей не велико. Кстта если есть буки в электронном виде - буд рад помощи. ;)

5.2K
17 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog

Кстта если есть буки в электронном виде - буд рад помощи. ;)



Советую полазить на сайтах "любимых исполнителей" - типа interbase.ru и все с ними связанное (можно почитать советы разные - тоже очень помогает)!
У меня, например, в офисе - главный исполнитель по проекту сделал главную лажу, которую только можно было - получение номера добавляемой записи через Select MAX(ID), а нужен-то генератор!!!

Успехов!
RTFM forever!

4.9K
18 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil


Советую полазить на сайтах "любимых исполнителей" - типа interbase.ru и все с ними связанное (можно почитать советы разные - тоже очень помогает)!
У меня, например, в офисе - главный исполнитель по проекту сделал главную лажу, которую только можно было - получение номера добавляемой записи через Select MAX(ID), а нужен-то генератор!!!

Успехов!
RTFM forever!


Этого я уже набрал, но вруг есть особенные, которые сам собирал или что-то вроде того. :)
Select MAX(ID) - УПС! :o
Я видел эти советы, у меня это тоже так реализовано в "дочерних таблицах". Интенсивность работы с базой позволяет использовать данный вариант, а мне необходим не максимальный в базе, а максимальный для данного проекта (что-то типа проект - 1, объекты 1,2,3.., проект - 2, Объекты - 1,2,3) а уникальность отслеживается по двум полям сразу. :)
PS: Заказал книгу по Архитектуре БД, которую ты советовал, так что посмотрм, что прийдёт. ;)

5.2K
18 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog

Select MAX(ID) - УПС! :o
Интенсивность работы с базой позволяет использовать данный вариант, а мне необходим не максимальный в базе...


Это я скажу - бабушка на двое сказала8))
до тех пор пока не опредедлили, что за глюк такой накрывал приложение и БД, пришлось угробить кучу времени на поиск по коду(ведь написано-то вроде все правильно), а вся трабла-то в том, что и не надо даже никакого немеренного флуда юзеров на твой сервак вместе с БД(это первая побочная причина), а нужно иметь всего-то два компа, один из которых имеет побольше оперативы и проц покруче и тогда даже не одновременно выполняемые запросы, связанные с твоим Select Max(ID) приведут на одном из компов к глюку(это вторая побочная причина), а последствия уж сам узнаешь. А теперь третья побочная причина - а не запаришься ли ты потом (типа через годик, когда на тебя начальство повесит еще пару-тройку проектов)вспоминать: а что я тут накодил, мля...=()
И главная причина - если уж народ такие вещи вывешивает уже на сайты и всем уши прожужжал, то не надо быть таким самонадеянным, чтобы подтвердить русскую поговорку о учебе на своих ошибках - советую использовать чужой опыт! да и генератор затиснуть в БД и написать его вызов не так уж сложно.

Цитата:


а максимальный для данного проекта (что-то типа проект - 1, объекты 1,2,3.., проект - 2, Объекты - 1,2,3) а уникальность отслеживается по двум полям сразу. :)



вот тут я не догнал?! у тебя к одной БД обращается несколько приложений, заточенных под какие-то свои цели что ли? а БД у них одна?

4.9K
19 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil

Это я скажу - бабушка на двое сказала8))
до тех пор пока не опредедлили, что за глюк такой накрывал приложение и БД, пришлось угробить кучу времени на поиск по коду(ведь написано-то вроде все правильно), а вся трабла-то в том, что и не надо даже никакого немеренного флуда юзеров на твой сервак вместе с БД(это первая побочная причина), а нужно иметь всего-то два компа, один из которых имеет побольше оперативы и проц покруче и тогда даже не одновременно выполняемые запросы, связанные с твоим Select Max(ID) приведут на одном из компов к глюку(это вторая побочная причина), а последствия уж сам узнаешь. А теперь третья побочная причина - а не запаришься ли ты потом (типа через годик, когда на тебя начальство повесит еще пару-тройку проектов)вспоминать: а что я тут накодил, мля...=()
И главная причина - если уж народ такие вещи вывешивает уже на сайты и всем уши прожужжал, то не надо быть таким самонадеянным, чтобы подтвердить русскую поговорку о учебе на своих ошибках - советую использовать чужой опыт! да и генератор затиснуть в БД и написать его вызов не так уж сложно.


Учту. :) Да и наверняка переделаю потом всю базу (во второй версии программ), первая нужна пока, чтобы приучить людей к порядку и подготовить к работе с моей базой. В итоге БД изменится (с учётом всех советов). программа

Цитата:

вот тут я не догнал?! у тебя к одной БД обращается несколько приложений, заточенных под какие-то свои цели что ли? а БД у них одна?


Нет. Есть таблица проектов, в которой лежат проекты, а есть таблица объектов в которой лежат объекты. Один проект может содержать несколько обектов. Я пришёл на уже готовую базу данных, надо было только программу написать. Ща прогу заканчиваю (первый вариан) - она пойдет на тестирования, а я начну кардинально переделывать структуру БД.

5.2K
19 сентября 2003 года
soleil
6 / / 10.09.2003
Цитата:
Originally posted by BanderLog

Учту. :) Да и наверняка переделаю потом всю базу (во второй версии программ), первая нужна пока, чтобы приучить людей к порядку и подготовить к работе с моей базой. В итоге БД изменится (с учётом всех советов). программа


Это - здорово! Главное - не затягивать! А то получится как всегда8)) (я где-то читал типа хюмор - про то как программисты строили дом) - начинается строительство дополнительного двухэтажного здания, чтобы поставить на него кран, который сможет достроить недостающие два этажа высотки=() (вот так и в БД начинают пихать всякую дрянь для латания дыр, возникших на стадии проектирования БД).

Раз уж пишите на Delphi7 и IB у вас явно не 5.5 (а лучше 6.5), то советую попробовать компоненты FIBPlus - очень занятная вещь - обновляемые запросы, удобные механизмы управления транзакциями, гарантированное снижение глюков8)(если и будет просить денежку, то для русских - россиян - скидки).

Успехов!

4.9K
22 сентября 2003 года
BanderLog
7 / / 08.09.2003
Цитата:
Originally posted by soleil

Раз уж пишите на Delphi7 и IB у вас явно не 5.5 (а лучше 6.5), то советую попробовать компоненты FIBPlus - очень занятная вещь - обновляемые запросы, удобные механизмы управления транзакциями, гарантированное снижение глюков8)(если и будет просить денежку, то для русских - россиян - скидки).


На данный момент стоит IB 6.0.1.6, но в виду платности и возможных глюков (поговаривают с блобами IB не всегда в ладах, а это основное в базе), планируется переход на FireBird. Компоненты FIBPlus тоже планируется использовать (опять же как финансы позволят, а то покупать FastReport, FIBPlus, да уже заказал пару книг по проектированию сетевых баз данных - начальство может не понять :).
Ну а за советы ОГРОМНОЕ спасибо.:D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог