| Autor |
Beitrag |
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 10.02.03 08:59
hi all ... hab ma ne frage ... also ich hab bisher einen localen IB-Server mit einer database
nun habe ich 2 Fragen kann ich das machen, das die datenbank auf einem netzlaufwerk liegt?
2. muss ich auf jedem rechner auf dem ich mein Programm inst. will und benutzen will auch einen InterbaseClient mitInst? wenn ja wie kann ich das zusätzlich einbinden?
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mo 10.02.03 09:46
Hi,
welche Version von IB hast Du?
Bei allen Varianten (IB/FB) installierst Du auf einem Rechner, der den Datenbank-Server spielen soll (muss kein Server-Betriebssystem haben) einfach den IB/FB-Server. Bei der kommerziellen Variante benötigst Du dazu ein entsprechendes Setup das Du kaufen musst, mit der Demo geht das nicht.
Beim Client kommts darauf an, welche Version Du einsetzt:
Bei Firebird 1.x benötigst Du für den Client lediglich die gds32.dll, die Du in den Windows-Pfad/Programmpfad kopieren musst. Bei IB Opensource reicht das NICHT aus. IB benötigt noch einen Eintrag in der services Datei. Benutze dazu am einfachsten ein entsprechendes Setup (siehe auch: ibinstall.defined.net/dl_bin_borl.htm). Wie es bei den aktuellen kommerziellen Varianten aussieht weiß ich im Moment nicht....
Beachte aber immer folgendes: Nutze immer die entpsrechende Client gds32.dll mit dem entsprechenden Server! Keine Versionen mischen!!!!
Grüße
Lemmy
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 10.02.03 09:57
okö danke... nur die seite die iss scho lang nimma geupt worden und da ich IB7 verwende ist das ein wenig blöd ... :/, da dort nur der inst. für den 6. client iss ....
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 10.02.03 10:33
Für den Eintrag in der services hab ich Dir hier auch noch ein Code-Schnipselchen, damit brauchst Du nur die gds32.dll und musst diese Prozedur aufrufen, dann erfolgt der Eintrag automatisch.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120:
| procedure Tform1.reggds32; var txtDatei : TextFile; strDummy, strWin, strBak: String; blnGefunden, blnAdmin : Boolean; srcDatei, dstDatei : TFileStream; // Source & Destination
// Wie lautet das Windows Verzeichnis? function WinDir:String; var intLen:Integer; begin SetLength(Result, MAX_PATH+1); intLen := GetWindowsDirectory(pChar(Result), Length(Result)-1); SetLength(Result, intLen) end{WinDir};
// Hat der User Administrationsrechte? function IsAdmin:Boolean; const cstTestKey = 'Software\CheckGDS'; begin Result := False; with TRegistry.Create do try Rootkey:= HKEY_LOCAL_MACHINE; if OpenKey(cstTestKey, True) then begin Result := True; CloseKey; DeleteKey(cstTestKey); end{if}; finally Free; end{try}; end{GetIsAdmin};
// Ist die GDS32.DLL verfÜgbar? function IsIBClient:Boolean; var IBLibrary: THandle; begin IBLibrary := LoadLibrary('GDS32.DLL'); Result := IBLibrary <> 0; if Result then FreeLibrary(IBLibrary); end{IsIBClient};
begin blnGefunden:=False; // Ermittlung der Windowsversion und somit der Position der Datei "services" strWin:=WinDir; // Wo liegt die Datei services? if Win32Platform = VER_PLATFORM_WIN32_NT then begin // WinNT oder 2000 strBak:=strWin+'\system32\drivers\etc\services_gds.bak'; strWin:=strWin+'\system32\drivers\etc\services'; blnAdmin:=True; // Administrationsrechte ? end else begin // Windows 95,98,ME strBak:=strWin+'\services_gds.bak'; strWin:=strWin+'\services'; blnAdmin:=True; end;
// Kontrollieren der Dateiposition if fileExists(strWin) then begin AssignFile(txtDatei,strWin); reset(txtDatei); strDummy:=''; repeat readln(txtDatei,strDummy); if POS('gds_db',strDummy)>0 then begin blnGefunden:=True; Break; end; until eof(txtDatei); CloseFile(txtDatei); if not blnGefunden then begin if blnAdmin then begin // Sicherungskopie erstellen srcDatei := TFileStream.Create(strWin, fmOpenRead ); try dstDatei := TFileStream.Create( strBak, fmOpenWrite or fmCreate ); except srcDatei.Free; exit; end; try dstDatei.CopyFrom(srcDatei, srcDatei.Size ) ; except dstDatei.Free; srcDatei.Free; exit; end; dstDatei.Free; srcDatei.Free; // gds Eintrag wird erg?zt AssignFile(txtDatei, strWin); Append(txtDatei); writeln(txtDatei,'gds_db 3050/tcp # InterBase Client'); { Hier steht Code, der ein Flush vor dem Schlie?n der Datei erfordert. } Flush(txtDatei); { Sicherstellen, da?der Text tats?hlich in die Datei geschrieben wird. } CloseFile(txtDatei); end else MessageDlg('Sie verfÜgen nicht Über Administrationsrechte!'+#13+#10+''+#13+#10+ 'Daher k?nen die notwendigen Eintragungen nicht durchgefÜhrt '+#13+#10+ 'werden!'+#13+#10+''+#13+#10+'Melden Sie sich als Administrator noch einmal an!', mtError, [mbAbort], 0);
end; end else begin // services wurde nicht gefunden MessageDlg('Die Datei services konnte an der Position'+#13+#10+strWin+#13+#10+ 'nicht gefunden werden!', mtError, [mbAbort], 0); Halt; end; // GDS32.DLL kann nicht angesprochen werden if not IsIBClient then begin MessageDlg('Die Bibliothek GDS32.DLL kann nicht angesprochen werden!', mtError, [mbAbort], 0); Halt; end;
end; |
Die kommerziellen Varianten laufen genauso, auch mit Eintrag in der services, eigentlich.
Achja, Du kannst mitm IB KEINE Datenbank aufmachen, die auf nem Netzlaufwerk liegt, da muss auf dem Server der IB-Server installiert sein und Du musst dann über den darauf zugreifen. Gruß
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 10.02.03 10:47
ich kann doch sagen anstatt
Quelltext 1:
| DM.IBFirma.Databasename:=(GetExtractFilePath(Paramstring(0))+'\db\xxx.gdb'); |
einfach DM.IBFirma.Databasename:='Z:\xxx\xxx\xxx.gdb';
oder etwar nicht??
aber danke für den code
noch was die datei da soll ich die in mein Progverzeichnis machen, wird die dann in den service eingfügt oder wie muss ihc das machen?
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 10.02.03 11:15
| foxy hat folgendes geschrieben: | ich kann doch sagen anstatt
Quelltext 1:
| DM.IBFirma.Databasename:=(GetExtractFilePath(Paramstring(0))+'\db\xxx.gdb'); |
einfachDM.IBFirma.Databasename:='Z:\xxx\xxx\xxx.gdb';
oder etwar nicht??
aber danke für den code
noch was die datei da soll ich die in mein Progverzeichnis machen, wird die dann in den service eingfügt oder wie muss ihc das machen? |
Erstmal zum 2. Am besten machste die ins System32 oder System-verzeichnis, da is die gut aufgehoben.
Und zum 1.: Natürlich geht das so, es ist egal, wie der Pfad aufgerufen wird. Aber aus irgendwelchen Gründen kann man nicht auf DB-Dateien, die auf einem freigegebenen/entfernten Laufwerk liegen über den LocalIB zugreifen.
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 10.02.03 11:30
ok also wenn ich nun meine inst. schreibe, soll diese dann einfach diese datei in den system ordner kopieren ok auch ne möglichkeit .... wo muss ich dann das aufraufen die procedure bei der form.create???
und das mit den netzlaufwerken ist ja blöde .... verdammt da muss ich mir was einfallen lassen.... geht das mit paradox, das man dbs auf freigegbenen Netzlaufwerken zugreifen kann??
denn ich denke nicht, das in der firma ein ib server inst. wird auf dem netzwerk
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 10.02.03 11:41
ja, im formcreate oder formshow müsste es funktionieren, das reicht auch.
Ich glaube mit Paradox geht das, aber da ist das halt blöde wenn mehrere User darauf gleichzeitig zugreifen....
Gruß
|
|
|