Mam problem z migracjš programu klienckiego korzystajšcego
pierwotnie z lokalnego BDE na zdalny dostęp do bazy danych
działajšcej pod Firebirdem.
Konkretnie chodzi o problem z datš i czasem. W BDE korzystałem z
typu DATETIME i było ok, za wyjštkiem tego, że nie mogłem sumować
czasu. W Firebirdzie zdecydowałem się na trzymanie czasu pod
postaciš liczby sekund przechowywanych jako typ INT. Ale jest to dla
mnie mocno niewygodne.
Dowiedziałem się, że rozwišzaniem moich problemów byłoby
skorzystanie z typu danych o nazwie Time. Niestety nie mam do niego
dostępu:
komenda:
create table test(nr int, czas time);
powoduje odpowied :
Statement failed, SQLCODE = -104
Dynamic SQL Error
-SQL error code = -104
-Client SQL dialect 1 does not support reference to TIME datatype
Doszedłem do tego, że mam ustawiony zły SQL Dialect. Teraz mam
wersję 1. A ja potrzebuję wersji 3. Ale znowu problem:
komenda:
set sql dialect 3;
powoduje odpowied :
WARNING: Client SQL dialect has been set to 3 when connecting to
Database SQL dialect 1 database.
Teraz próba korzystania z typu time nadal kończy się niepowodzeniem.
Przypuszczam, że należy zmienić typ dialektu sql dla całej bazy. Ale
jak to zrobić nie tworzšc od nowa całej bd?
Jeżeli to nie byłoby możliwe, to czy istnieje program, który potrafi
wyeksportować całš bazę danych do postaci skryptu z sekwencjami
komend CREATE i INSERT, tworzšcymi nowš bazę?
pozdrawiam
Krzysztof
Ten sam problem jest przy przejściu ze starszej wersji IB na co najmniej
5.5. Robi się to poprzez Backup i Restore.
Może to Ci coś podpowie.
--
pozdr
mst
----------------------------------------
www.bazadanych.com.pl
newsy, ogłoszenia, know-how, książki
>> Jeżeli to nie byłoby możliwe, to czy istnieje program, który
>> potrafi wyeksportować całš bazę danych do postaci skryptu z
>> sekwencjami komend CREATE i INSERT, tworzšcymi nowš bazę?
>
> Ten sam problem jest przy przejściu ze starszej wersji IB na co
> najmniej 5.5. Robi się to poprzez Backup i Restore.
> Może to Ci coś podpowie.
>
Przetestowalem to rozwiazanie. Najpierw wykonalem backup aktualnej bazy
danych (z sql dialect 1). Nastepnie utworzylem nowa bd z sql dialect
ustawionym na 3.
Przy wydaniu komendy show sql dialect, otrzymalem odpowiedz, ze
aktualnie jest ustawione na wersje 3.
I tu pojawia sie problem. Mianowice odtworzylem stara baze danych z
pliku backupu. Po odtworzeniu b.d. i wydaniu komendy "show sql dialect"
otrzymuje stara odpowiedz:
Client SQL dialect is set to: 1 and database SQL dialect is: 1
Czyli mam z powrotem stare smieci...
Dodam jeszcze, ze operacje backup i restore wykonywalem przy pomocy
IBExpert for InterBase dla FireBird.
Wydaje mi sie, ze gdyby udalo sie baze danych wyeksportowac do postaci
sekwencji komend create i insert, to rozwiazaloby to problem. Jednak
nie znam takego narzedzia.
pozdrawiam
--
Krzysztof
Inaczej.
Musisz mieć ostatnią bibliotekę BDE5.20, a w szczególności sqlint32.dll
w wersji 5.2.0.2 oraz musisz mieć w rejestrze wpis o dialekcie.
<cy>
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database
Engine\Settings\Drivers\Intrbase\Db Open]
"SQLDIALECT"="3"
</cy>
miab
>> I tu pojawia sie problem. Mianowice odtworzylem stara baze danych
>> z pliku backupu. Po odtworzeniu b.d. i wydaniu komendy "show sql
>> dialect" otrzymuje stara odpowiedz:
>>
>> Client SQL dialect is set to: 1 and database SQL dialect is:
>> 1
>>
>> Czyli mam z powrotem stare smieci...
>>
> To nie jest problem bazy jak z tego winika.
> To wygląda na problem klienta.
> Dla Interbase po wejściu przez BDE też ma się tylko dialekt1.
> Ale baza może być w dialekt 3.
Wersje sql dialect sprawdzam narzedziem dolaczonym do FireBirda o
nazwie isql.exe. Jest to cos w stylu konsoli, gdzie mozna "z palca"
wydawac komendy qdl.
Wiec problem nie lezy takze w metodzie laczenia sie z baza...
--
Krzysztof
>> Palenta Krzysztof <ke...@polbox.com> wrote:
> e_mst napisał(a):
>> Dodam jeszcze, ze operacje backup i restore wykonywalem przy
>> pomocy IBExpert for InterBase dla FireBird.
>>
>> Wydaje mi sie, ze gdyby udalo sie baze danych wyeksportowac do
>> postaci sekwencji komend create i insert, to rozwiazaloby to
>> problem. Jednak nie znam takego narzedzia.
>
> Inaczej.
> Musisz mieć ostatnią bibliotekę BDE5.20, a w szczególności
> sqlint32.dll w wersji 5.2.0.2 oraz musisz mieć w rejestrze wpis o
> dialekcie. <cy>
> [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database
> Engine\Settings\Drivers\Intrbase\Db Open]
> "SQLDIALECT"="3"
> </cy>
>
> miab
Sprawdze to, ale sadze, ze nie z biblioteka jest problem. Zauwaz, ze po
stworzeniu nowej bazy mialem dostep do nowych typow danych, a sql
dialect byl ustawiony na 3. Dopiero operacja restore backupu starej
bazy spowodowala, ze sql dialect w jakis magiczny sposob przekoczyl z
powrotem na 1.
--
Krzysztof
Pozdrawiam.
> W IBExpercie jest w Toolsach cos takiego jak "extract metadata" co
> robi export bazki do skryptu :-). potem ....... to juz bedziesz
> wiedział co z tym zrobić.
Doskonale. To rozwiazuje wszystkie moj problem.
Dziekuje i pozdrawiam
--
Krzysztof