Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi datenbank clonen (https://www.delphipraxis.net/62866-datenbank-clonen.html)

sancho1980 10. Feb 2006 17:04

Datenbank: interbase 6.5 • Zugriff über: ibx

datenbank clonen
 
hallo
weiß jemand von euch, ob es möglich ist, über die interbase-komponenten in delphi eine neue datenbank zu erstellen, die genau die selben metadaten hat, wie eine bereits existierende? oder muss ich dazu das sql-script in meine anwendung einbinden?

mkinzler 10. Feb 2006 17:12

Re: datenbank clonen
 
Hast du es schon mal über gbak versucht?

sancho1980 10. Feb 2006 17:34

Re: datenbank clonen
 
hmmm, du meinst diese interbase-tools, ich weiß
aber ich will die datenbank ja von meinem delphi-client aus erstellen, verstehste wie ich meine?
also der anwender soll nen namen für die neue datenbank eingeben und der client soll dann den server dazu veranlassen, eine datenbank mit diesem namen und einer vorgegebenen struktur zu erzeugen

mkinzler 10. Feb 2006 18:16

Re: datenbank clonen
 
Dann würde ich mit einem Verwaltungstool ( IBConsole oder IBExpert) die Metadaten in Form eines DDL-Skriptes extrahieren und dieses dann Verwenden um die neue DB zu erstellen.

sancho1980 10. Feb 2006 18:33

Re: datenbank clonen
 
hmmm, will dich jetzt nicht nerven aber steht sowas irgendwo beschrieben?
ich meine metadaten extrahieren, wie das geht weiß ich ja aber ich hab keine ahnung wie meine tibdatabase-komponente damit was anstellen kann...

mkinzler 10. Feb 2006 18:38

Re: datenbank clonen
 
Im IBExpert unter Nützliches -> Extrahiere Metadaten

sancho1980 10. Feb 2006 18:52

Re: datenbank clonen
 
ne das mein ich net...ich meine wie ich meine tibdatabase-komponente in delphi konfigurieren muss, damit sie mit hilfe einer solchen dll eine neue datenbank nach dem vorbild der metadaten erzeugt

sancho1980 10. Feb 2006 18:55

Re: datenbank clonen
 
ich will ja, dass der benutzer mit meiner delphi-anwendung eine datenbank erzeugen kann

mkinzler 10. Feb 2006 19:06

Re: datenbank clonen
 
Mit TIBScript sollte es möglich sein ein DDL-Skript auszuführen.

sancho1980 10. Feb 2006 21:08

Re: datenbank clonen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hmmm, diese komponente hab ich gar nicht
aber ich hab mittlerweile rausgefunden, wie ich mit ibexpert ein sql-script erzeugt bekomme, dass sämtliche metadaten enthält...also hab ich versucht, diese daten einfach in den die sql-property meiner tibquery-komponente einzufügen aber irgendwie klappt das nicht...will einer mal nen blick drauf werfen? das programm an sich is gar nicht von mir sondern einfach nur aus nem buch, damit sollte eigentlich nur gezeigt werden, wie mit einer tibdatabase-komponente eine neue datenbank erzeugt wird und ich wollte jetzt versuchen, diese neu erzeugte datenbank mit tabellen und allem pipapo zu füllen; sicherlich hab ich irgendwo nen denkfehler; sagt mir mal bitte wo das problem liegt!
danke,
martin

das programm is 1:1 aus dem buch übernommen; nur die tibquery und tibtransaction hab ich hinzugefügt und folgende 3 statements am ende von
Delphi-Quellcode:
procedure TMainForm.BtnCreateDBClick(Sender: TObject);
:

Delphi-Quellcode:
self.IBDatabase1.Connected := true;
self.IBQuery1.Active := true;
self.IBQuery1.ExecSQL();
grüße und danke
martin

mkinzler 10. Feb 2006 21:32

Re: datenbank clonen
 
Das Archiv enthält nur die Projektdatei (dpr) CreateIBXMain.pas fehlt.

sancho1980 10. Feb 2006 21:34

Re: datenbank clonen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ok jetzt aber!

mkinzler 10. Feb 2006 21:38

Re: datenbank clonen
 
Zitat:

Zitat von sancho1980
Delphi-Quellcode:
self.IBDatabase1.Connected := true;
self.IBQuery1.Active := true;
self.IBQuery1.ExecSQL();
martin

Da ein DDL-Skript keine ergebnisdatenmenge darf kein Open aufgerufen bzw. die Eigenschaft .Active auf True gesetzt werden. Das .ExecSql reicht.

mkinzler 10. Feb 2006 21:42

Re: datenbank clonen
 
Wie sieht ads DDl-Skript aus?
Welche Version von Delphi hast du?
Dir Query-Kompoenente ist eigentlich nur für einzelne Statements. Für ganze Skripte gibts die TIBScript. (Ich weiß nicht , ob es diese schon immer gab)

sancho1980 10. Feb 2006 21:46

Re: datenbank clonen
 
Hmmm, ich krieg aber trotzdem noch diese Fehlermeldung:

Zitat:

Dynamic SQL Error
SQL Error Code = -104
Token unknown - line 8, char -1
CREATE
Ist eine TIBQuery überhaupt geeignet, SQL-Skripte auszuführen? Oder nimmt man da was anderes? Mal von diesem TIBScript - das ich nicht hab - abgesehen?

mkinzler 10. Feb 2006 21:59

Re: datenbank clonen
 
ZSQLProcessor(Zeos), TMDOBatch(MDO), JvUIBScript(UIB/JVCL).
Ich würde aber nach einem Update für IBX gucken.

sancho1980 10. Feb 2006 22:01

Re: datenbank clonen
 
na das sql-skript ist doch in der tib-query-komponente, einfach auf eigenschaft 'sql' doppelklicken!

sancho1980 10. Feb 2006 22:05

Re: datenbank clonen
 
Zitat:

Zitat von mkinzler
ZSQLProcessor(Zeos), TMDOBatch(MDO), JvUIBScript(UIB/JVCL).

jetzt versteh ich wirklich nur noch bahnhof :wall:

mkinzler 10. Feb 2006 22:09

Re: datenbank clonen
 
Zitat:

Zitat von sancho1980
mkinzler hat folgendes geschrieben:
ZSQLProcessor(Zeos), TMDOBatch(MDO), JvUIBScript(UIB/JVCL).

jetzt versteh ich wirklich nur noch bahnhof ouch!

Du hast gefragt, welche Kompoenenten noch für die Ausführung von Skripten geeignet sind. Dies ist eine Auflistung der Kompoenenten verschiedener Komponentensammlungen für IB/FB.

sancho1980 10. Feb 2006 22:12

Re: datenbank clonen
 
achso
also ich verwende delphi 7 professional
aber diese ganzen komponente von denen du da redest, hab ich alle nicht
hast du schon mal versucht, das programm auszuführen?
kriegst du da auch die gleiche meldung?

mkinzler 10. Feb 2006 22:37

Re: datenbank clonen
 
Nein, bei der 2. Befehlszeile des Skriptes steigt er aus => Query ist definitiv nicht geeignet zur Ausführung von Skripten.

Verfügbares Update für IBX(D7):
http://cc.borland.com/Item.aspx?id=20227

sancho1980 10. Feb 2006 22:46

Re: datenbank clonen
 
jo ich danke dir da hab ich jetz auch dieses tibscript :cheers: und supieinfach

sancho1980 11. Feb 2006 15:38

Re: datenbank clonen
 
ich geh hier schon wieder im kreis:
jetzt hat das mit dem skript-ausführen über tibscript einmal geklappt, da zickt auf einmal was anderes:
wenn ich das skript vollständig in meine tibscript-komponente einfüge, kann ich es ausführen

aber wenn ich parameter einfüge und diese versuche zur laufzeit zu belegen, bekomm ich auf einmal eine 'eaccessviolation'

Auszug aus dem Skript:

SQL-Code:
CREATE DATABASE :database USER :user PASSWORD :password
PAGE_SIZE 4096
DEFAULT CHARACTER SET NONE;
Programm bricht ab (eaccessviolation) bei:

Delphi-Quellcode:
DataModule1.IBScript1.ParamByName('database').AsString := self.TargetFilePath;
:roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz