Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zmiana sql dialect w firebird (interbase)

113 views
Skip to first unread message

Palenta Krzysztof

unread,
Feb 7, 2004, 5:43:58 AM2/7/04
to
Witam

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

e_mst

unread,
Feb 7, 2004, 7:06:22 AM2/7/04
to
> 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.


--
pozdr
mst
----------------------------------------
www.bazadanych.com.pl
newsy, ogłoszenia, know-how, książki

Palenta Krzysztof

unread,
Feb 9, 2004, 8:56:34 AM2/9/04
to
e_mst napisał(a):

>> 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

e_mst

unread,
Feb 10, 2004, 12:16:19 PM2/10/04
to
> 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.

miab

unread,
Feb 10, 2004, 12:28:10 PM2/10/04
to

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

Palenta Krzysztof

unread,
Feb 11, 2004, 4:59:03 AM2/11/04
to
e_mst napisał(a):

>> 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

unread,
Feb 11, 2004, 5:03:16 AM2/11/04
to
miab napisał(a):

>> 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

adiablos

unread,
Feb 11, 2004, 7:14:37 AM2/11/04
to
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ć.

Pozdrawiam.


Palenta Krzysztof

unread,
Feb 11, 2004, 2:22:38 PM2/11/04
to
adiablos napisał(a):

> 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


0 new messages