![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Neu Firebird Datenbank wird auf Server nicht angelegt
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
mit folgenden Quellcode will ich eine neue Firebird Datenbank auf einen MS Server anlegen:
Delphi-Quellcode:
procedure TfrmFirebird_DB_anlegen.DB_anlegen(ServerName, DatenbankOrdner,
DatenbankFileName: String; var DB: TIBCConnection); begin if not FileExists(DatenbankOrdner+DatenbankFileName) then begin DB:= TIBCConnection.Create(NIL); try try DB.database := ServerName + ':' + DatenbankOrdner + DatenbankFileName; DB.SQLDialect := 3; DB.Params.Clear; DB.Params.Add('USER "SYSDBA"'); DB.Params.Add('PASSWORD "masterkey"'); DB.Params.Add('PAGE_SIZE 16384'); DB.LoginPrompt:= FALSE; DB.CreateDatabase; DB.Connected := FALSE; except on E: exception do Showmessage(E.ClassName + ': ' + E.Message); end; finally DB.Free; end; end; end; Ich habe 2 VMs laufen: Auf der 1 VM läuft MS Vista mit BDS 2006, die IBDAC Komponenten sind neu von mir installiert worden. Wenn ich den Quellcode ausführe, so wird die neue Datenbank auf den Server abgelegt. Auf der 2 VM läuft MS Windows 10 mit Delphi 10.3 es ist die gleiche Version der IBDAC Komponente installiert. Allerdings wenn ich den gleichen Quellcode ausführe bekomme ich folgende Fehlermeldung sieh unten. Wenn die Datenbank einmal angelegt ist, kann man von beiden VMs eine neue Tabelle ohne Probleme auf den Server anlegen. Meine Frage ist: Warum ist das so und wie kann man das abstellen kann? Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo zusammen,
nach langem rumprobieren, bin ich auf folgende Lösung gekommen. In der Hilfe von Devart steht: To connect to an InterBase database on a remote server using TCP/IP the syntax is <server_name>:<filename>. To connect to an InterBase database on a remote server using NetBEUI, the syntax is: \\<server_name>\<filename>. To connect to an InterBase database on a remote server using SPX, the syntax is: <server_name>@<filename>. ich bin aus diesem Grund davon ausgegangen das die Verbindung mit TCP/IP die Richtige ist. Das funktioniert aber nur bei Vista mit BDS 2006 (<server_name>:<filename>). Unter Windows 10 Pro muss der Aufruf mit NetBNEUI erfolgen (\\<server_name>\<filename>). Es macht auch keinen Unterschied, ob der Server <localhost> ist, auch dann funktioniert die Anlage der Datenbank nur mit NetBNEUI. Das scheint bei allen Windows 10 Pro (64Bit) -Rechner so zu sein (beim Laptop das gleiche Ergebnis). Übrigens: Die Interbase – Komponenten von Delphi verhalten sich genauso, man bekommt nur mit dem NetBEUI-Aufruf eine neue Datenbank angelegt. Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Also entweder MS hat wieder eine Leiche aus dem Keller geholt oder da stimmt irgendwas nicht.
Bis eben dachte ich, NETBUI sei vorgestern. |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Also, ich habe das letztens gerade auch benötigt.
Bei mir funtioniert es so:
Delphi-Quellcode:
Windows 10, 64 bit (kene VM) - getestet mit FB 2.59 und 3.05
procedure TfrmMain.Button2Click(Sender: TObject);
begin //IBOCreateDatabase; IBCCreateDatabase('d:\db\testibc.fdb'); end; procedure TfrmMain.IBCCreateDatabase(const ADBName: string); begin // Erzeugen IBCAdmin.Database := ADBName; IBCAdmin.Server := '127.0.0.1'; IBCAdmin.LoginPrompt := False; IBCAdmin.Port := '3053'; IBCAdmin.ClientLibrary := 'fbclient.dll'; IBCAdmin.Params.Clear; IBCAdmin.Params.Add('USER ''SYSDBA'''); IBCAdmin.Params.Add('PASSWORD ''masterkey'''); IBCAdmin.Params.Add('PAGE_SIZE 16384'); IBCAdmin.Params.Add('DEFAULT CHARACTER SET NONE'); //IBCConnection.Params.Add('COLLATION UNICODE_CI'); IBCAdmin.CreateDatabase; // Script IBCConnection.Database := ADBName; IBCConnection.ClientLibrary := 'fbclient.dll'; IBCScript.SQL.LoadFromFile('akten.sql'); IBCScript.Connection := IBCConnection; IBCConnection.Connected := True; IBCScript.Execute; end; Frank |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo dataspider,
wie sieht ADBName aus? Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
steht im Beitrag in Button2Click...
Frank [EDIT] seh einen Unterschied eigentlich nur in den Paremetern (einfaches vs. doppeltes Hochkomma) |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Am Aufbau vom connectionstring liegt das garantiert nicht, netbeui ist garantiert nicht erforderlich.
Immer wieder als Grund tauchen irgendwo steinalte interbase gds32.dll im suchpfad auf, die von manchen Komponenten als Standard genommen werden oder wenn man eine passende 32bit oder 64bit version der fbclient dll schon in den richtigen pfaden ggf auch als kopierte gds32.dll abgelegt hat, fehlen manchmal auch nur die dafür erforderlichen msvc*.dll in der zur fbclient dll passenden version. Die sich darauf ergebenden Fehlermeldungen können manchmal abstrus sein |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Chemiker,
stell sicher, dass deine Clientanwendung die Firebird gds32.dll/fbclient.dll verwendet, idealerweise matched diese auch die Version des Firebird Servers. Für mich klingt es so, wie bereits von Holger erwähnt, dass deine Clientanwendung eine InterBase gds32.dll von deiner Delphi-Installation verwendet. LG |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo,
auf dem Server läuft nur Firebird 2.5. Es wird die fbclient.dll eingebunden die auf den Server installiert worden ist. Ich habe den Port auf 3055 auf den Server umgestellt. Die Datenbank wird mit:
Delphi-Quellcode:
angelegt.
DB.database := '\\XXXDATENSERVER\d:\db\EO_Liste\HPLPRG2020.FDB';
Mit:
Delphi-Quellcode:
wird sie nicht angelegt.
DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB';
Delphi-Quellcode:
procedure TfrmFirebird_DB_anlegen.DB_anlegen(ServerName, DatenbankOrdner,
DatenbankFileName: String; var DB: TIBCConnection); begin DB:= TIBCConnection.Create(NIL); try try DB.Port := '3055'; DB.ClientLibrary := 'C:\Users\Internet\Documents\Embarcadero\Studio\Projekte\DB_anlegen\fbclient.dll'; // Mit diesem Aufruf wird die Datenbank angelegt DB.database := '\\XXXDATENSERVER\d:\db\EO_Liste\HPLPRG2020.FDB'; // Mit diesem Aufruf wird die Datenbank nicht angelegt //DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB'; DB.SQLDialect := 3; DB.Params.Clear; DB.Params.Add('USER "SYSDBA"'); DB.Params.Add('PASSWORD "masterkey"'); DB.Params.Add('PAGE_SIZE 16384'); DB.LoginPrompt:= FALSE; DB.CreateDatabase; DB.Connected := FALSE; except on E: exception do Showmessage(E.ClassName + ': ' + E.Message); end; finally DB.Free; end; end; Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
nur mal so ne Idee:
Vista verwendet IPv4, Windows 10 ggf. schon IPv6 und damit fällt Firebird 2.5 auf die Nase, erst FB 3 kann sich per IPv6 verbinden. Also versuch mal zumindest auf dem Server IPv6 zu deaktivieren und nimm für den Verbindungsaufbau bitte mal die IP des Servers her. |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Zitat:
Zitat:
Für mich sieht das so aus, als könnte bei Deiner Konstellation der Firebird-Client nur auf die Datenbankdatei auf dem Server zugreifen und nicht den Firebird-Server auf dem Datenbankserver ansprechen. Es wird also, obwohl die Datenbankdatei auf einem Server liegt, die Embedded-Variante von FireBird genutzt. Grob formuliert: Wenn Du Firebird auf dem Datenbankserver deinstallierst, müsste der Datenbankzugriff in der momentanen Konstellation noch weiterhin funktionieren (was vermutlich absolut nicht im Sinne des Erfinders ist). Ok: Bin mir nicht so ganz sicher, kann also sein, dass ich gerade auch Murks geschrieben habe :-( Ist da was hilfreiches dabei? ![]() ab ca. You can force Firebird to use a certain protocol (and skip the embedded connection attempt) by prepending the protocol in URL style: |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo,
@Lemmy: Bei mir ist IPv4 bei Windows 10 auch installiert. @Delphi.Natrium: Die Datenbank – Datei wird auf den Server angelegt. Ich lege auch eine Tabelle an und kann diese dann von einem anderen Rechner aufrufen:
Delphi-Quellcode:
const
SQL_TABELLE = 'CREATE TABLE maschinentab (ma_id integer, ma_bez VARCHAR(100))'; begin SQL1:= SQL_TABELLE; SQL_Memo.Lines.Add(SQL1); IBCQuery1.SQL.Text := SQL_Memo.Lines[1]; IBCQuery1.ExecSQL; IBCConnection1.Connected := FALSE; End; Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Zitat:
Wir haben div. Kunden bei denen wir sogar IPv6 abschalten mussten, damit sich Firebird 2.1 verbinden ließ.... |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Zitat:
Sprich: Klappt es auch noch, wenn Du den FireBird-Dienst auf dem Server mal stoppst? Für mich sieht es so aus, als würde die FireBird-Datenbankdatei "nur" auf 'nem Fileserver liegen. Für das Programm ist dies transparent, da merkst Du (für gewöhnlich) nicht, welche Version genutzt wird. Die Frage ist letztlich nicht, ob es funktioniert, sondern auf welchem Weg es funktioniert. Eventuell kannst Du ja mal einen Test machen: In eine Tabelle sehr viele Daten einfügen, dann ein sehr komplexes SQL auf diese Daten ausführen, so dass mit einer längeren Laufzeit zu rechnen ist. Auf welchem Rechner kannst Du dann im Taskmanager eine Änderung in der CPU-Last sehen? Ändern sich dabei auf dem Server die Werte für E/A-Bytes (Lesen) bzw. E/A-Bytes (Schreiben) des FireBird.exe-Prozesses? Wenn nein, wird vom Client die Embedded-Version genutzt. |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo Walter,
wenn du folgendes machst:
Delphi-Quellcode:
könnte es gut sein, dass die Zuweisung der
...
DB.Port := '3055'; // Mit diesem Aufruf wird die Datenbank nicht angelegt DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB'; ...
Delphi-Quellcode:
Property im Hintergrund ein Parsing des zugewiesenen Connect-Strings auslöst, was eventuell bedeutet, dass
DB.database
Delphi-Quellcode:
wieder auf 3050 zurückgesetzt wird.
DB.Port
Versuch mal folgenden Connect-String
Delphi-Quellcode:
oder alternativ das
DB.database := 'XXXDATENSERVER/3055:d:\db\EO_Liste\HPLPRG2020.FDB';
Delphi-Quellcode:
Property nach dem Connect-String zugewiesen wird.
DB.Port
Delphi-Quellcode:
LG
...
// Mit diesem Aufruf wird die Datenbank nicht angelegt DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB'; DB.Port := '3055'; ... |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo Delphi.Narium,
mit <instsvc stop> den Firebird – Dienst gestoppt, anschließend kein Zugriff auf die Datenbank mehr möglich. Eine neue Datenbank kann auch nicht mehr angelegt werden. Ich habe auf dem Server eine andere Datenbank genommen die Datensätze zählt. Die CPU – Last (22 -41%) und die E/A – Bytes lesen steigt auf den höchsten Wert in der Liste. Er hat jetzt 220 Millionen Datensätze gezählt. Die E/A Bytes sind auf ca. 9,8 Millionen angestiegen. Bis bald Chemiker |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Ok, damit hat sich meine Befürchtung, dass der Client die Embeddedversion von FireBird nutzt, nicht bestätigt.
|
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Thomas,
ich habe alle 3 Möglichkeiten ausprobiert: 1.) Port vorher einstellen:
Delphi-Quellcode:
2.) Port nachher einstellen:
DB.Port := 3055;
DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB';
Delphi-Quellcode:
3.) Port direkt eingeben:
DB.database := 'XXXDATENSERVER:d:\db\EO_Liste\HPLPRG2020.FDB';
DB.Port := 3055;
Delphi-Quellcode:
Die Datenbank wird nicht angelegt.
DB.database := 'XXXDATENSERVER/3055:d:\db\EO_Liste\HPLPRG2020.FDB';
Es kommt zur folgenden Fehlermeldung: |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo Walter,
und du bist dir sicher, dass:
Dass deine Client-Anwendung eine Firebird Client-Library lädt, hast du glaub ich vorher schon mal wo bestätigt, richtig? Weil deine aktuelle Fehlermeldung ist mittlerweile eine andere, als in deinem Ursprungsposting. LG |
AW: Neu Firebird Datenbank wird auf Server nicht angelegt
Hallo Thomas,
ich hatte nur den Port für Testzwecke auf 3055 eingestellt. Was ich noch sagen kann, es gelingt mir zwar unter Port 3055 die Datenbank – Datei mit dem NetBEUI – Protokoll anzulegen. Es gelingt aber nicht eine neue Tabelle anzulegen, trotzdem bei den Komponenten auch der Port auf 3055 eigestellt worden ist. Ich habe jetzt alle Veränderungen auf den Rechnern und auf Server wieder zurückgenommen. Was mir noch aufgefallen ist, dass ich auf den beiden Windows 10 Rechner die Komponenten mit dem Source – Code installiert habe und auf den Vista – Rechner nicht. Ich werde die IBDAC-Komponenten noch mal neu installieren. Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz