2016-07-06 5 views
0

Jeder weiß, wie man die ODS-Version vom Firebird-Server, der für neue Datenbanken verwendet wird, abfragt/anfordert.Abfrage der verwendeten ODS-Version vom Firebird Server

+0

Haben Sie diese Frage http://stackoverflow.com/questions/9972580/which-version-of-interbase-or-firebird-was-a-database-created-under gesehen –

+0

Ich weiß nicht, Delphi, Wenn Sie jedoch eine Datenbankinformationsanforderung ('isc_database_info') ausführen können, können Sie nach den Informationseinheiten' isc_info_ods_version' und 'isc_info_ods_minor_version' suchen. –

+0

Ich würde die ODS-Version kennen lernen, die verwendet wird, um neue Datenbanken (die ODS-Version des Servers) zu erstellen und nicht die ODS-Version eines vorhandenen. – LTi

Antwort

0
  1. Connect auf eine Datenbank, die Sie

  2. Überprüfen Sie die Motorversion kann - http://firebirdsql.su/doku.php?id=rdb_get_context

    RDB $ GET_CONTEXT SELECT ('SYSTEM', 'ENGINE_VERSION') FROM RDB $ DATABASE

  3. Ordnen Sie die Engine-Version mithilfe von Firebird-Dokumentation oder Knowledge Base-Artikeln wie http://www.ibase.ru/prevver/

  4. der nativen ODS-Version zu
+0

Das wird nicht funktionieren, weil Firebird 2.5 und früher gerne ältere ODS-Versionen verwenden werden, sodass die Engine-Version nicht direkt mit dem ODS verknüpft ist; es setzt nur eine untere und obere Grenze. –

+1

Mir ist gerade aufgefallen, dass ich die Frage falsch gelesen habe, ich dachte, es ging darum, den ODS einer bestehenden Datenbank zu ermitteln, nicht von einer neuen. Leider funktioniert der Trick 'RDB $ GET_CONTEXT' nur für Firebird 2.1 und höher, und Sie kennen das ODS-Mapping. –

0

In MON$DATABASE finden Sie MON$ODS_MAJOR und MON$ODS_MINOR in einer vorhandenen Datenbank.

+0

Aber das setzt voraus, dass die Datenbank mindestens ODS 11.1 hat, da in Firebird 2.1 (ODS 11.1) die 'MON $ DATABASE' eingeführt wurde. –

+0

, die ODS der vorhandenen Datenbank mitteilt, aber der Topicstarter hat einen angefordert, der "für neue Datenbanken verwendet wird" –

+0

Ja. Sie müssen eine Dummy-Datenbank erstellen (und sie dann löschen). Es gibt keine Möglichkeit, es im Voraus zu wissen. Es hängt von verschiedenen Optionen ab, die nur bekannt sind, wenn Sie etwas tun. –

0

Da ich nichts Nützliches gefunden habe, habe ich eine kleine Funktion erstellt, die isql verwendet, um eine Bare-Bone-Datenbank zu erstellen und die ODS-Version mit direktem Dateizugriff zu extrahieren.

Mit der obigen Technik werden auch zukünftige Versionen des Firebird Servers funktionieren, ohne dass die Software aktualisiert werden muss.

Danke für alle Kommentare.

+0

.... vorausgesetzt, Ihr Benutzer hätte Rechte zum Erstellen der Datenbank und der Pfad für die temporäre Datenbank wäre erlaubt. Wenn Ihr Programm diese Anforderungen sicherstellen kann, dann kann es funktionieren. –