Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Berechtigungen (https://www.delphipraxis.net/149039-firebird-berechtigungen.html)

jensw_2000 12. Mär 2010 21:51

Datenbank: FB • Version: 2.1 • Zugriff über: DBX

Firebird Berechtigungen
 
DBX macht mich so langsam fertig ...
Die Komponenten haben immer mal wieder eine neue Überraschung auf Lager.

Ich habe folgende Konstellation:
1 x DB Server (SQL-01) >> Das ist ein Image eines Kundenservers
1 x mein Entwicklungs-PC

Ich kann meine Applikation auf meiner Arbeitsstation starten, DBX verbindet sich mit dem FB Server (als SYSDBA), darf alles machen ...
Jetzt habe ich die "eigentlich fertige" Applikation auf den FB Server kopiert (selbe exe, selbe ini, , gleicher User, gleiche Client-DLLs) und bekomme dort die Meldung
Zitat:

no permission for read/select access to TABLE ...
Zeitgleich funktioniert es jedoch, wenn ich von meiner Arbeitsstation auf den FB-Server zugreife.

Wenn ich die Applikation auf den originalen Kundenserver kopiere, 1:1 von meinen "Testserver", dann läuft das Programm auch ohne Probleme.

Was ist das jetzt schon wieder?
Ich bin am Verzweifeln .Hat irgendjemand eine Idee?

MFG Jens

hoika 13. Mär 2010 06:55

Re: Firebird Berechtigungen
 
Hallo,

Zitat:

gleiche Ini
Steht dort der Connection-String drin ?
Ich kenne mich nicht so mit DBX aus.

Wie sieht es aus, wenn du IBExpert auf dem Server benutzt ?

Sei doch froh, dass es nicht umgekehrt ist
(auf Server läuft es, auf dem Arbeitsplatz-Rechner nicht) ;)


Heiko

jensw_2000 13. Mär 2010 09:59

Re: Firebird Berechtigungen
 
Die DBXDrivers.ini hat mir mal wieder den Streich gespielt.
In der ini meiner Applikation steht der FDB-Name, der FB Username und das FB Kenntoer (verschlüsselt).
Auf meiner Arbeitsstation haben die DBX Konponenten nie die ini der Applikation benutzt sondern immer die "Designtime Settings" aus der DBXDrivers.ini. Daher ging es bei mir am Entwicklungs-PC immer.
Auf meinem Testserver habe ich keine DBXDivers.ini. Dort hat er für die Verbindung irgendwelche "Phantasiewerte" hergenommen. Warum es auf dem DB-Server des Kunden lief will ich noch herausfinden. Möglicherweise liegt dort historisch irgendwo eine dbxdrivers.ini mit passendem DB-Namen herum.

Ich überschreibe die DB-Params jetzt grundsätzlich noch einmal im OnDeforeConnect ...
Dort hatte ich zuvor auch noch 1000 andere Dinge festgelegt (Client-Libs, DriverName usw.).
Den ganzen Krempel habe ich rausgeworfen und nur das absolut Wesentliche definiert.

Delphi-Quellcode:
procedure TDBXDBConnection.BeforeConnect( Sender: TObject );
begin
...

  with DBXDBConnection do
  begin
    LoadParamsOnConnect := false;
    Params.Values['Database'] := ServerConfig.FB_Database_Name;
    Params.Values['User_Name'] := ServerConfig.FB_Database_Username;
    Params.Values['Password'] := ServerConfig.FB_Database__Password;
  end;

...
end;
Jetzt passt das erst einmal und rennt auf allen Systemen wie gedacht.

Ggf. probiere ich demnächst mal einen OLEDB-Provider für Firebird aus.
Wenn das vernünftig läuft habe ich meine gute alte ADOConnection wieder und kann das "DBX Zeug" verwerfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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