Różne zachowania TIBTransaction

0

Witam,
Od jakiegoś czasu mam pewien dziwny problem.
Mam dość rozbudowaną aplikację bazodanową współpracującą z bazami FireBird za pomocą komponentów IBX.

  1. jeśli kompiluje aplikacje pod windows XP, program działa prawidłowo
  2. jeśli kompiluje pod Windows 8/serwer 2008 to co chwila mam błędy 'invalid transaction handle (explicit transaction start needed)'
    Podkreślam, że na obu środowiskach mam tą samą wersję Delphi czy XE3 oraz te same zainstalowane wersje komponentów.
    Dodatkowo program łączy się do tej samej bazy będącej na moim domowym serwerze pod Windows 7 <- wersja FireBirda to 2.5.
    O ile rozumiem treść błędu, o tyle nie rozumiem dlaczego system operacyjny pod którym kompilowany jest program ma znaczenie.

Z góry dziękuję za każde naprowadzenie co może stanowić problem.

0

Na XP nie ma UAC (a przynajmniej nie jest tak restrykcyjny jak na Windows 8) ewentualnie spróbuj przejść na ZeosLib z nimi nie ma żadnego problemu

0
  1. Myślisz, że to przez UAC?
  2. Niestety ze względu na dziadowski frameWork jaki jest w tym programie (jaki odziedziczyłem po poprzednikach) nie pozwala na proste przejście na ZeoscDB którego używam wszędzie indziej.
0
  1. a cóż takiego cudownego jest w zeosie wg was?
  2. co to za opis problemu "co chwila mam błędy" - nie możesz dać kawałka kodu, który wywołuje błąd?

Najczęstszą przyczyną występowania tego błędu to brak podpięcia domyślnej transakcji do połączenia a co za tym idzie do wszystkich pozostałych komponentów IBXowych. Sprawdź, czy każdy komponent (ibquery, ipstoredproc, ibtable, ib...) ma podpiętą transakcję.
Druga rzecz to możesz odznaczyć optymalizację w opcjach projektu i zobaczyć czy zadziała

0

Szczerze to nie chce mi się wierzyć, że UAC może mieć wpływ na kompilację. Bo i jak?

abrakadaber napisał(a):
  1. a cóż takiego cudownego jest w zeosie wg was?

Generalnie jest tu mowa o Firebirdzie i niestety standardowe komponenty IBX oficjalnie nie wspierają tego serwera. Sam autor powiedział, że nie ma zamiaru wprowadzać obsługi FB, tylko będzie obsługiwał InterBase. Osobiście stosuję sam IBX'y w połączeniu z Firebirdem i nigdy nie miałem problemów.

abrakadaber napisał(a):
  1. co to za opis problemu "co chwila mam błędy" - nie możesz dać kawałka kodu, który wywołuje błąd?

Jeśli to jest duży projekt to samo podanie kodu może nie starczyć. Bo tu trzeba by było analizować cały kod, jego założenia itp.

A pierwszą rzeczą jaką ja bym zrobił to sprawdził czy pliki exe spod XP i Win8 są dokładnie takie same. Jak nie to należy sprawdzić ustawienia kompilacji.

0
goofyx napisał(a):
  1. Myślisz, że to przez UAC?

Nie sądzę.

  1. Niestety ze względu na dziadowski frameWork jaki jest w tym programie (jaki odziedziczyłem po poprzednikach) nie pozwala na proste przejście na ZeoscDB którego używam wszędzie indziej.

Skoro jest dziadowski, to sama migracja jest raczej z tych banalnych lub co najwyżej - nie bardzo skomplikowanych.
Poza tym, raczej nie będzie inaczej, ze względu na mizerną funkcjonalność jaką oferują IBX ;-)

abrakadaber napisał(a):
  1. a cóż takiego cudownego jest w zeosie wg was?

W porównaniu do IBX? Chociażby to, że cały czas się dynamicznie rozwijają.
Poza tym, żadnych wielkich cudów tam nie ma, ale faktycznie sporo tam poprawili zwłaszcza pod katem wydajności.

0
wloochacz napisał(a):

Poza tym, raczej nie będzie inaczej, ze względu na mizerną funkcjonalność jaką oferują IBX ;-)
Tylko, że w 90% projektów jakie się pisze taka funkcjonalność wystarcza jaką IBX'y mają w standardzie.

abrakadaber napisał(a):

Poza tym, żadnych wielkich cudów tam nie ma, ale faktycznie sporo tam poprawili zwłaszcza pod katem wydajności.
No niestety to prawda. Jednak z moich testów wynika, że nie jest tak źle :)

0
Mr.YaHooo napisał(a):
wloochacz napisał(a):

Poza tym, raczej nie będzie inaczej, ze względu na mizerną funkcjonalność jaką oferują IBX ;-)
Tylko, że w 90% projektów jakie się pisze taka funkcjonalność wystarcza jaką IBX'y mają w standardzie.

Pisałem już to wielokrotnie, to i napisze Tobie - nie mierz innych swoją miarą.
To że Ty piszesz takie projekty, nie oznacza automatycznie że wszyscy inni również.
Dla mnie IBXy to była mordęga i porzuciłem je bez żalu jakieś kilkanaście lat temu.

abrakadaber napisał(a):

Poza tym, żadnych wielkich cudów tam nie ma, ale faktycznie sporo tam poprawili zwłaszcza pod katem wydajności.

No niestety to prawda. Jednak z moich testów wynika, że nie jest tak źle :)

Tak źle, czy tak dobrze?

0
wloochacz napisał(a):

Pisałem już to wielokrotnie, to i napisze Tobie - nie mierz innych swoją miarą.
To że Ty piszesz takie projekty, nie oznacza automatycznie że wszyscy inni również.
Dla mnie IBXy to była mordęga i porzuciłem je bez żalu jakieś kilkanaście lat temu.
Z ciekawości napiszesz dlaczego to była taka mordęga? Mam parę rzeczy które bym chciał zmienić, ale to są szczegóły, a nie jakieś poważne bugi. Bardziej mnie martwi to, czy przy następnej wersji Firebirda wszystko będzie działać poprawnie. W końcu sam autor powiedział, że wspiera tylko Inter Base.

abrakadaber napisał(a):

Tak źle, czy tak dobrze?
Według moich testów różnice w szybkości wykonywania zapytań były rzędu 10-15% na korzyść zeos. Niestety piszę to z pamięci, bo nie mam zapisanych danych, a testowałem to parę lat temu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1