Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird-Connectstring (https://www.delphipraxis.net/61660-firebird-connectstring.html)

Harry60 24. Jan 2006 17:25

Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX

Firebird-Connectstring
 
Hallo zusammen,

Ich arbeite mit Firebird. Nun muss ja die Datenbank immer aus Sicht des Servers angegeben werden. Das ist soweit klar und wurde auch hier im Forum mehrfach erklärt. Ich habe in meinem Programm eine Mandantenverwaltung. Der Anwender kann somit neue Mandanten (Datenbanken) anlegen. Wie bekomme ich nun den lokalen (aus Sicht des Servers) Datenbankpfad heraus, sodass ich den Connectstring korrekt erzeugen kann ?

Beispiel : UNC-Pfad : \\SERVER\DATEN\DATENPFAD\

Connectstring: SERVER:D:\DATENPFAD\

MfG

peter12 24. Jan 2006 17:44

Re: Firebird-Connectstring
 
Connectpfad für Firebird
unter
C:\Programme\Firebird\Firebird_1_5\aliases.conf
den Alias Namen angeben.
z.B. mbr=c:\mbr\mbr.fdb

Ansprechen unter Servername:mbr
oder 80.121.216.209:mbr

peter

Harry60 25. Jan 2006 14:59

Re: Firebird-Connectstring
 
Hallo Peter12,

das ist ja klar, aber genau das möchte ich ja nicht. Um das Problem verständlicher zu erklären folgender Ablauf.

1. Der Anwender wählt in meinem Programm ein Serverlaufwerk aus (gemappt oder über Netzwerkverbindungen ist egal).
2. In diesem Verzeichnis (bspw. \\SERVER\DATEN\MANDANT\) soll die neue Datenbank per Programm erzeugt werden.
3. Aus Sicht des Servers ist dieses Verzeichnis aber D:\DATEN\MANDANT\.
4. Mein Programm soll in diesem Verzeichnis eine DB anlegen und einen Connect herstellen, ohne das manuell irgendetwas angepasst werden muss (ALIAS). Dafür benötige ich für den Connectstring "D:\DATEN\MANDANT".

Wie kann ich also per Programm das Verzeichnis aus Sicht des Servers auslesen ?


MfG

marabu 25. Jan 2006 16:40

Re: Firebird-Connectstring
 
Hallo Harry,

der Server-Admin wird sich bedanken - irgendein Client sucht sich irgendein Verzeichnis auf dem Server aus und erzeugt dort eine Datenbank? Wenn überhaupt, dann gebe ich dir als Admin ein Share und trage dich im Quota-Server ein. Warum gibst du dem DBA nicht ein Installations-Skript und gut ist? Welchen Sinn macht das Anlegen einer Datenbank durch den Client?

Freundliche Grüße vom marabu

Lemmy 26. Jan 2006 06:06

Re: Firebird-Connectstring
 
Hi,

ich denke auch, dass das sehr gefährlich sein wird. Wo ist das Problem, wenn der Server den Pfad für die DB selbst bestimmt? Wenn Du dann ne Übersicht über alle bestehenden DB's brauchst (um dich später wieder damit zu verbinden), kannst Du diese entweder in einer System-DB deiner Applikation abspeichern oder nen Dienst schreiben, der das entsprechende Verzeichnis überwacht.

Einen Zugriff auf eine IB/FB-DB über ein gemapptes / freigegebenes Laufwerk halte ich für sehr bedenklich. Was, wenn der User "mal eben" eine Kopie der DB mit nach Hause nehmen will? Russisches Roulette kann nicht schöner sein! ;-)

Grüße
Lemmy

Harry60 26. Jan 2006 08:15

Re: Firebird-Connectstring
 
Hallo zusammen,

ist ja schön, daß meine Frage so eine Diskussion ausgelöst hat. Leider lösen die Antworten nicht mein Problem.

Ein paar Bemerkungen:

1. Welchen Sinn macht das Anlegen einer Datenbank durch den Client?

Ganz einfach, weil es Anwender gibt die keinen Administrator haben. Vor allem betriebswirtschaftliche Anwendungen bieten dem User die Möglichkeit mit mehreren Mandanten (je Mandant eine DB) zu arbeiten. Ein typisches Beispiel ist eine Finanzbuchhaltung. Der Anwender muss also ohne fremde Hilfe (Admin) einen Mandanten (Datenbank) anlegen können. Viele professionelle Applikatiponen bieten diese Funktion. Also, er wählt ein Verzeichnis aus und die DB wird dort erzeugt.

2. Einen Zugriff auf eine IB/FB-DB über ein gemapptes/freigegebenes Laufwerk halte ich für sehr bedenklich.

Ich bin bei diesem Thema ganz eurer Meinung. Ich habe grundsätzlich da auch so meine Bedenken. Aber das war nicht meine Frage.

Also noch einmal:

Gibt es eine Möglichkeit mit Delphi das Verzeichnis aus Sicht des Servers zu ermitteln. Ich möchte nicht wissen, ob das Sinn macht, sondern wie das geht.

Ich habe da so ein paar Beispiele über die Funktion "WNetEnumResource". Das funzt aber nicht so recht. Ich kann UNC-Pfad und Servernamen auslesen. Wie kann ich nun daraus das Verzeichnis aus Sicht des Servers ermitteln ?

MfG

Lemmy 26. Jan 2006 09:47

Re: Firebird-Connectstring
 
Hi,

Zitat:

Zitat von Harry60
Ich bin bei diesem Thema ganz eurer Meinung. Ich habe grundsätzlich da auch so meine Bedenken. Aber das war nicht meine Frage.

Dann ist es ja gut! Aber vielleicht solltest Du dann deine Frage im Bereich Windows APi stellen, denn das hat mit Datenbanken im allgemeinen und mit Interbase/Firebird im speziellen gar nichts zu tun!

Lemmy


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