Autor Beitrag
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Di 29.07.03 01:18 
Hallo,

Ich habe einige Fragen, deren Lösungen sich vor mir merkwürdigerweise versteckt halten (dabei sehe ich soo hässlich nicht aus :nixweiss: ). Ich hoffe, ihr könnt mir helfen:
  1. Wie erstelle ich mit Delphi eine neue Interbase-Datenbank lokal und/oder im Netzwerk ?
  2. Wie mache ich ein Backup im Netzwerk: Genauer: wie müssen die Pfadangaben sein für das Backup-file und das Datenbank-file. Das Ganze liegt ja dann irgendwie auf dem Server ?!
  3. Wie lösche ich eine Datenbank ?
  4. Wenn ich eine "Optimierung" = backup+restore im Netzwerk mache, dann müsste ich irgendwie den freien Speicherplatz auf dem Server überprüfen, geht das ?
  5. Gibt es auch eine andere Möglichkeit des "Optimierens" ?
  6. Bei einem Restore, ist da der Zugriff automatisch für alle anderen user verweigert ? Und wenn nicht, wie kann ich das machen ?
Für alle Antworten gilt: Mit Quelltext wäre genial :D Vielen Dank schon mal für Eure Mühe.

P.S.: Ich nutze die IBX-Komponenten (siehe Titel).

Moderiert von user profile iconTino: List-Tag hinzugefügt.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Di 29.07.03 07:46 
Guten Morgen,

recall hat folgendes geschrieben:

1. Wie erstelle ich mit Delphi eine neue Interbase-Datenbank lokal
und/oder im Netzwerk ?


ausblenden Quelltext
1:
IBDatabase.CreateDatabase;					


Den Rest (Einstellungen) bitte in der Hilfe nachlesen...

recall hat folgendes geschrieben:

2. Wie mache ich ein Backup im Netzwerk: Genauer: wie müssen die
Pfadangaben sein für das Backup-file und das Datenbank-file. Das
Ganze liegt ja dann irgendwie auf dem Server ?!


Nicht nur irgendwie, sondern die liegen einfach auf dem Server. Alle Pfadangaben bei IB müssen relativ zum Server angegeben werden (so als ob Du direkt am Server sitzt und die Angaben machst). Ein Backup-File mit dem Pfad c:\Backup\Database\db.bak liegt also auf der C Partition.

recall hat folgendes geschrieben:

3. Wie lösche ich eine Datenbank ?


ausblenden Quelltext
1:
IBDatabase.DropDatabase;					


recall hat folgendes geschrieben:
4. Wenn ich eine "Optimierung" = backup+restore im Netzwerk mache,
dann müsste ich irgendwie den freien Speicherplatz auf dem Server
überprüfen, geht das ?


Klar geht das irgendwie, nur wenn der Admin die DB auf nem Server installiert auf dem kein Platz mehr frei ist, gehört der standrechtlich erschossen....

recall hat folgendes geschrieben:

5. Gibt es auch eine andere Möglichkeit des "Optimierens" ?


Nein, für einen Backup-Restore gibt es keine wirkliche Alternative. Man kann zwar im Betrieb der DB ein paar Optimierungen vornehmen, um einen regelmäßigen Backup_restore Zyklus kommt man aber i.d.R. nicht vorbei.

recall hat folgendes geschrieben:
6. Bei einem Restore, ist da der Zugriff automatisch für alle anderen user verweigert ? Und wenn nicht, wie kann ich das machen ?


Klar ist BEI einem Restore kein Zugriff auf die DB möglich, jedoch kann ein User auf der DB drauf sein, wenn Du ein Restore laufen lässt. Entweder lässt Du den Zyklus automatisch laufen wenn garantiert niemand im Büro ist (Nachts um 1 Uhr) oder eben manuell, dann stellst Du eben vorher sicher, dass sich niemand in der Datenbank befindet. Ich habe es aber noch nicht getestet was bei einem Restore passiert, wenn noch jemand mit der DB verbunden ist....

Grüße
Lemmy
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Di 29.07.03 22:19 
Titel: Danke.
Danke, die Hilfe war echt nützlich.

Nur mit dem Backup-Restore...
Da wüsste ich gerne, ob man nicht kontrollieren kann, ob
ein user mit der DB verbunden ist ?!

Dann kann ich ja einfach ein Zeitintervall für ein Backup-Restore angeben
und wenn sich innerhalb dieses Intervalls einmal kein user auf der db
findet, dann soll das Backup/Restore ausgeführt werden. :D !!

OK, und dann habe ich leider einige neue Fragen:

1. Wenn ich eine Datenbank über 4 GB habe, dann muss ich die db ja
splitten, oder ? Wie wird dann das mit der Eigenschaft "Database" der IBX-Kompos gehandhabt ?... denn da kann ich ja nur eine angeben ??!

2. Und wie geht das dann beim Backup ? Dort muss ich ja die Größe der einzelnen Dateien angeben, in die ich sichern will.
a) Muss ich dann jedesmal genau die Quelldateigröße wissen und sie
auf die einzelnen Backup-files verteilen ?
b) Beim Backup kann ich ja auch nur eine db-Datei angeben ?!
Was also, wenn ich mehrere habe ?

3. Analog das alles beim restore, aber ich denke, wenn 2. beantwortet ist, erledigt sich 3. eventuell von alleine :D

Nochmals vielen Dank im voraus...

Grüße.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Mi 30.07.03 11:19 
Hi,

man kann sich auf alle Fälle die Anzahl der offenen Verbindungen anzeigen lassen, bin aber gerade überfragt wie. Schau Dich mal auf der Admin-Seite der IBX um.

Tja, die Datenbankgröße. Ich weiß leider nicht mehr genau wie das war, meine aber, dass mit IB6 die Größenbeschränkung ziemlich aufgehoben worden ist und nun mehr oder weniger vom verwendeten Betriebssystem abhängt. Wenn ich noch was auf die Schnelle finde melde ich mich dazu nochmal.

Bei dir in der Client-Appl ändert aber die Aufteilung der DB auf verschiedene Files nichts, denn das ist die Aufgabe des DBMS (Database management system) [übrigends eine der Hauptaufgaben: Den Benutzer (also auch Dich als Programmierer von den meisten Internas abzuschirmen].

Beim Backup gilt dasselbe, einfach die Datenbank angeben (das erste File) und los gehts. Evtl. solltest Du da darauf achten, dass die Backupfiles nicht zu groß werden (wegen einer evtl. Beschränkung des BS).

Beim Restore gibts Du einfach bei der Eigenschaft "Databasename" einfach die Datenbankfiles incl. mit der Seitenzahl die darin gespeichert werden soll. Mit der Größe der einzelnen Seiten (Page Size) kannst Du dann die Dateigröße berechnen.

So, alles unklar??? :D
Grüße
Lemmy
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 30.07.03 15:32 
Lemmy hat folgendes geschrieben:
Tja, die Datenbankgröße. Ich weiß leider nicht mehr genau wie das war, meine aber, dass mit IB6 die Größenbeschränkung ziemlich aufgehoben worden ist und nun mehr oder weniger vom verwendeten Betriebssystem abhängt. Wenn ich noch was auf die Schnelle finde melde ich mich dazu nochmal.

Nein, die 6er-Version unterstützt noch nicht beliebig große Dateien, da ist sie noch bei 4GB (oder 2?. Eher 4). Dieses Feature ist erst in der 6.5 zu finden, die aber nicht OpenSource ist.....
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Mi 30.07.03 20:35 
Titel: Danke.
Ja, also danke nochmal.

P.S.: Es sind maximal 4x4 GB bei der 6er Version von IB :)
Nur damit ihr nicht mehr grübeln müsst :wink:
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Mi 30.07.03 21:32 
Titel: Son Mist...
Hallo, ich habe jetzt mal die Create-Routine probiert :)
Funzt net :(

Folgender Quellcode:

dm.db1.Params.Clear;
dm.db1.Params.Add('user_name=' + Form3.Edit1.Text);
dm.db1.Params.Add('password=' + Form3.Edit2.Text);
dm.db1.Params.Add('lc_ctype=8859_1');
dm.db1.DatabaseName := 'C:\Kunden.gdb';
dm.db1.CreateDatabase;

(dm ist ein datenmodul) ergibt einen Fehler, dass mein username und Pw nicht existiert. Tut es aber: SYSDBA, masterkey !
und dann hab' ich noch probiert:

dm.db1.Params.Add('SET NAMES ISO8859_1;');
dm.db1.Params.Add('PAGE_SIZE 4096');
dm.db1.Params.Add('User ''' + Form3.Edit1.Text + ''' Password ''' + Form3.Edit2.Text + '''');
dm.db1.Params.Add('DEFAULT CHARACTER SET ISO8859_1');}
dm.db1.DatabaseName := 'C:\Kunden.gdb';
dm.db1.CreateDatabase;

gibt einen Syntax-Fehler, dürfte ja auch eigentlich nicht funzen :((
Also bitte helft mir, es macht keinen Spaß so.

Viele Grüsse.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 31.07.03 10:34 
Hi,

wie schon gesagt, schau in der Hilfe nach:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  with IBDatabase1 do
  begin
    Close;
    DatabaseName:='d:\test.fdb';
    Params.Clear;
    Params.Add('USER "SYSDBA"');
    Params.Add('PASSWORD "masterkey"');
    Params.Add('PAGE_SIZE 4096');
    SQLDialect:=3;
    CreateDatabase;
  end;


Bei der Erstellung einer DB musst Du USER nehmen und nich USER_NAME!!! Der COde oben sollte funktionieren, weshalb das mit dem Default Character nicht funktioniert weiß ich moment auch nicht.

Grüße
Lemmy
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Do 31.07.03 14:38 
Titel: Danke.
OK, Danke schön,

Meine Hilfe sagte mir nur komischerweise, ich soll
' nicht " benutzen, außerdem hab ich daher das mit dem user_name !!!

Aber danke schön für die schnelle Antwort, werds gleich ausprobieren :)

:D :D :D