AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird embedded DB austauschen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird embedded DB austauschen

Ein Thema von user0815 · begonnen am 4. Jan 2013 · letzter Beitrag vom 4. Jan 2013
Antwort Antwort
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird embedded DB austauschen

  Alt 4. Jan 2013, 08:38
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Ich installiere mein Programm per "Inno Setup".
In das Anwendungsverzeichnis kommen alle dll´s usw. die firebird embedded benötigt. Die gbak.exe packe ich auch in das Anwendungsverzeichnis.

Unter Inno stelle ich folgendes ein:

Code:
[Files]
Source: "D:\xxx\db.fdb"; DestDir: "{app}"; Flags: ignoreversion confirmoverwrite; Permissions: authusers-modify;
Für eine Datensicherung rufe ich die gbak.exe wie folgt auf:

Delphi-Quellcode:
var
  Quelle, Ziel, Parameter : String;

Ziel := ' "' + SaveDialog.FileName + '"';
  Parameter := '-v -t -user sysdba -password masterkey '+ Quelle +' '+ Ziel;
  ShellExecute(0,nil,PChar(ExeProgramDirectory + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW);
Die Datenwiederherstellung läuft ähnlich, die Datenbankbezeichnung darf allerdings noch nicht vorhanden sein.

Delphi-Quellcode:
var
  BackupFile, DatabaseFile, Parameter : String;
...
  Parameter := '-c -v -user sysdba -password masterkey '+ BackupFile +' '+ DatabaseFile;
  try
    ShellExecute(0,nil,PChar(ExeProgramDirectory + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW);
  except
    on E:Exception do ShowMessage(E.Message);
  end;
Hier erhalte ich die Fehlermeldung ‚Auszug‘:
"gbak: ERROR: I/O error during “CreateFile <create>“ operation for file Datenbankverzeichnis + Datenbankname"
"gbak: ERROR: Error while trying to create file"
"gbak: ERROR: Zugriff verweigert"
"gbak: ERROR: failed to create database Datenbankverzeichnis + Datenbankname"
"gbak: Exiting before completion due to erros"

Denke das hängt mit den Schreibrechten für CSIDL_PROGRAM_FILES zusammen.

Versuche ich jetzt die Datenbank manuell auszutauschen so geht das auch nicht. Bei der Datenbank aus dem Inno Setup steht unter: Rechtsklick – Sicherheit: Authentifizierte Benutzer -> Ändern, Lesen, Ausführen, Schreiben
Kopiere ich die Datenbank einfach in das Anwendungsverzeichnis so fehlt dieser Eintrag Authentifizierte Benutzer. Nur der normal Benutzer ist mit den Rechten -> Lesen, Ausführen vorhanden. Die nur reinkopierte DB kann ich nicht benutzen.

Frage:
Wie kann ich die embedded DB gegen eine andere DB austauschen, für Support oder was auch immer?
Muss die Datenbank doch woanders liegen?
Muss ich andere Rechte in Inno Setup mitgeben?

Grüße
user0815
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 08:56
Hallo,

eine Datenbank bzw. alle von allen Nutzern bearbeitbaren Dateien (Inis usw.) gehören in den CommonAppDataPath.

Alternativ wäre die DB im Programmverzeichnis über den Firebirdserver problemlos nutzbar (wenn der Connectionstring mit localhost bzw. der IP aufgebaut wird)

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 09:25
gut, werde die DB in folgendes Verzeichnis packen:

Code:
[Dirs]
Name: "{commonappdata}\{#MyAppName}\database\"; Permissions: authusers-modify;
Muss ich noch was beachten?
Meine muss ich z.B. in der "firebird.conf" das RootDirectory setzen?
Wenn ja kann ich das schon im Inno Setup erledigen, und wenn ja wie?
Bleiben die dll´s usw. im EXE Verzeichnis?
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#4

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 09:42
Alles, was vom Benutzerkonto bearbeitet werden soll (Datenbank, Einstellungsdateien usw.) muss ins CommonAppData.
Alles was zum Programm gehört (Exe, DLLs, firebird.conf (weil diese nur vom Administrator geändert werden sollte)) gehört ins Programmverzeichnis.

die firebird.conf musst du eigentlich nicht ändern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 09:48
Abgesehen davon, daß die Daten nicht ins Programmverzeichnis gehören, macht mich die Fehlermeldung stutzig
"gbak: ERROR: I/O error during “CreateFile <create>“ operation for file Datenbankverzeichnis + Datenbankname"
könnte es sein, daß da Parameter falsch übernommen werden?
Datenbankverzeichnis + Datenbankname ist schon ein wenig seltsam.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 09:51
Alles, was vom Benutzerkonto bearbeitet werden soll (Datenbank, Einstellungsdateien usw.) muss ins CommonAppData.
Äh.. Korrektur bzw. einfach damit es hier kein Missverständnis gibt:

Alles was NUR vom Benutzer bearbeitet werden soll kommt ins UserAppData, das was von allen bearbeitet werden soll ins CommonAppData. Wobei das "UserAppData" auch vom Programm erstellt werden sollte und nicht zwingend durchs Setup (außer dass das wirklich nur von dem einen Benutzer bedient werden können soll)

Grüße
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#7

AW: Firebird embedded DB austauschen

  Alt 4. Jan 2013, 09:55
Richtig. Ich schrieb "Benutzerkonto" um den Unterschied zum Administratorkonto deutlich zu machen. Hat wohl nicht ganz geklappt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz