Firebird 4.o und höher Benutzer anlegen

Forum zu diversen Themen rund um die Firebird-Programmierung

Moderator: martin.koeditz

Antworten
Martin
Beiträge: 19
Registriert: Mo 31. Jan 2022, 09:45

Hallo zusammen,

ich verzweifele gerade ein wenig ...
Ich schreibe mit C# eine Benutzeroberfläche für eine Firebird Datenbank.
Nach dem Motto 'Keep ist simple' habe ich mich auf die Embedded Version von Firbird beschränkt.
Mit der Version 2.5 von Firebird lief das auch alles problemlos.
Das Programm liegt z.B. auf C:\... und die Datenbank XYZ.FDB auf einem Server.
Seit Firebird Version 3 scheint das so nicht mehr zu funktioniert. Alle Meldungen weisen auf Benutzer und Passwort hin.
Also: Benutzer anlegen und Rechte vergeben.
Ich habe jetzt bestimmt 20 Dokumentationen gelesen und nix funktioniert. :oops:
Kann mir das bitte jemand in einfachem und klarem Deutsch erklären, wie das funktioniert.
Das muss auch nicht umsonst sein.

Ich bin für jeden Hilfe dankbar.

Was Datenbanken angeht bin ich jetzt kein Experte - eher Forgeschrittener.

Vielen Dank

Martin
bfuerchau
Beiträge: 574
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Nach der Installation/Copy der FB4 findet man i.W. im doc-Verzeichnis alle Dokumentationen um eine Installation durchzuführen.

Installation: install_windows_manually.txt
Security: README.security_database.txt

Damit sollte problemlos eine Installation durchführbar sein.
Martin
Beiträge: 19
Registriert: Mo 31. Jan 2022, 09:45

Hallo bfuerchau,

also erst mal vielen Dank für die schnelle Rückmeldung.

Ich habe nun folgendes gemacht:
- Firebird 4.0
- Über "isql "mit der "security4.fdb" verbunden.
- Den Benutzer SYSDBA mit Passwort 'xyz' angelegt , Commit, Exit.
- In der Windows Systemsteuerung eine Variable mit dem Namen "FIREBIRD" angelegt, die auf den Pfad zeigt wo ich die Dateien von Firebird 4.0 entpackt habe.
- In der Windows Systemsteuerung diesen Pfad ebenfalls zu dem "PATH" hinzugefügt.
- Den Dienst installiert und gestartet mit "install_service.bar".
Der Zugriff auf eine Testdatenbank über "isql" funktioniert.
Der Zugriff über eine C# Programm funktioniert nicht.
Die firebird.log Datei zeigt diesen Fehler an:
INET/inet_error: read errno = 10054, client host = Z690, adress 127.0.0.1/49763, user=xx
Z690 ist der Name meines Computers
xx meine User Name für die Windows Anmeldung.

Hast Du ne Idee woran das liegen kann.
Die Informationen, die ich bisher im Internet gefunden habe waren nicht zielführend.

Martin

PS die Installation habe ich nach der Anleitung "install_windows_manually.txt" aus dem "doc" Ordner ausgeführt

PS der Quellcode ist denkbar einfach - ist nur um die Connection zu testen:

static void Main(string[] args)
{
FbConnectionStringBuilder connectionStringBuilder = new FbConnectionStringBuilder();

connectionStringBuilder.Database = @"F:\fb_40_db\TEST.FDB";

connectionStringBuilder.ServerType = FbServerType.Default;
connectionStringBuilder.DataSource = "localhost";

connectionStringBuilder.UserID = "SYSDBA";
connectionStringBuilder.Password = "masterkey";

string connection_string = connectionStringBuilder.ToString();

FbConnection fbConnection = null;

using (fbConnection = new FbConnection(connection_string))
{
try
{
fbConnection.Open();
fbConnection.Close();
}
catch (Exception ex)
{ }
}

//INET/inet_error: read errno = 10054, client host = I7GIGA, address = 127.0.0.1/49950, user = abcd
}
bfuerchau
Beiträge: 574
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

"27.0.0.1/49950"
Ich nehme mal an, die Port-Eigenschaft wird nicht initialisiert und sollte auf 3050 (Default) gesetzt werden.

connectionStringBuilder.Port = 3050;

Betrachte auch mal den Connectionstring komplett (in der Ausgabe):

Trace.WriteLine(connection_string);
Martin
Beiträge: 19
Registriert: Mo 31. Jan 2022, 09:45

Port hab ich gesetzt - keine Besserung.

Hier der Connection string:

initial catalog=F:\fb_40_db\TEST.FDB;server type=Default;data source=localhost;port number=3050;user id=SYSDBA;password=masterkey;role name=ADMIN;dialect=3

PS den gleichen Fehler habe ich auf 2 unterschiedlichen Rechnern - beide Win 10
Martin
Beiträge: 19
Registriert: Mo 31. Jan 2022, 09:45

So, ich glaub ich habe es gefunden ...

Aus Kompatibilitätsgründen habe ich in C# noch mit .net 4.6.2 gearbeitet.
Die jüngste passende "FirebirdSql.Data.FirebirdClient.dll" ist die Version 7.10.1.
Und die verursacht den Fehler.
Um eine neue Version von "FirebirdSql.Data.FirebirdClient.dll" zu verwenden z.B. 8.5.4
oder höher muss ich mein C# Projekt umstellen auf .net4.8.
Das wiederum erst ab Visual Studio Version 2022 verwendet werden kann.

Mit dieser Kombination:
- Visual Studio 2022
- Firebird 4.0
- FirebirdSql.Data.FirebirdClient.dll 8.5.4 (oder höher)
incl zusätzlich benötigte Bibliotheken:
- System.Threading.Tasks.Extensions
- System.Runtime.CompilerServices.Unsafe
funktioniert der Datenbank Zugriff (wobei ich bisher erst mal nur Datenbank öffnen/Datenbank schliessen getestet habe)

Vielleicht hilft diese Information ja noch jemand ;)
bfuerchau
Beiträge: 574
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Nun ja, das hat man eigentlich immer, dass man ab und an modernisieren muss.
Net 4.8 gibts nun seit April 2019, https://de.wikipedia.org/wiki/.Net-Framework.
Ich habe den Treiber aber noch in 32-Bit für VB6 als COM-Komponente benötigt.
Da VB6-Entwicklung nur noch in Windows 8 -VM und 32-Bit läuft ist die letzte Version da Net 4.7.2.
Da die Quellen verfügbar sind, konnte ich noch auf 4.7.2 downgraden, incl. meines Perfomanceboost. Somit läuft und läuft und läuft immer noch meine VB6-Anwendung von 2005 problemlos auch auf Windowsserver 2022 oder Windows 11.
Was Microsoft ja schon laaange abgekündigt hat.

Was die Zusatzpakete angeht, solltest du dich mit Nuget in Visual-Studio beschäftigen.
Da lädt man sich ein Paket wie den Firebird-Client und alles andere wird automatisch mit installiert.
Auch viele andere Pakete und Erweiterung sind mit Nuget erheblich einfacher zu entwickeln, spätestens wenn man auf .Net-Core (7, 8, 9, ....) umsteigt.
jhoehne
Beiträge: 48
Registriert: Di 11. Dez 2018, 09:19

Martin hat geschrieben: Mi 16. Apr 2025, 17:38Nach dem Motto 'Keep ist simple' habe ich mich auf die Embedded Version von Firbird beschränkt. Mit der Version 2.5 von Firebird lief das auch alles problemlos.
Das Programm liegt z.B. auf C:\... und die Datenbank XYZ.FDB auf einem Server.
Seit Firebird Version 3 scheint das so nicht mehr zu funktioniert.
Wenn die Datenbank-Datei auf einem Netzwerkshare liegt, ist kein Zugriff möglich, auch mit Embedded nicht. Um das zu ermöglichen, muss eine Datei Firebird.conf im Ordner liegen, wo sich der Embedded Client befindet, und dort der Wert "RemoteFileOpenAbility" auf "1" gesetzt werden.
--
Joachim
bfuerchau
Beiträge: 574
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Macht das wirklich Sinn?
Embedded, aber Remote-DB? Die Gefahr einer zerstörten DB ist da sehr hoch.
Antworten