Name einer dsnless per ODBC mit Access verbundenen Mariadb-Datenbank abfragen

mssib28

Benutzer
Beiträge
7
Hallo Zusammen,

ich habe mehrere MariaDB's mit exakt identischer Struktur.
Als Benutzerschnittstelle verwende ich MS-Access.
In der Accessanwendung kann die DB, mit welcher gearbeitet werden soll, ausgewählt werden.
Wenn nun die Anwendung geöffnet wird, besteht immer noch die Verbindungsdefinition zur zuletzt verwendeten Datenbank.
Und nun die Frage: Wie kann ich abfragen, welches die gerade aktive DB ist?

Viele Grüße

Martin
 
Werbung:
mmh, Du kannst mit show variables "hostname" oder "port" oder "uuid"(?), diese Werte der verbundenen DB abfragen.
Das muss Dich aber nicht weiter bringen, wenn es ein Docker System ist oder so.

Wofür nutzt / brauchst Du die Info? Reicht Dir eine eindeutige ID um sie einfach nur zu unterscheiden? Immerhin musst Du es eigentlich wissen, wenn Dein Programm zu verschiedenen DB verbinden kann. Speicher es ab, wenn Du Dich erfolgreich verbindest, die Verbindungsdaten hast Du ja zwangsläufig.

Sofern die Möglichkeit besteht, definiere ich solche Informationen für mich selbst in der DB. Eine eigenene "System" -Tabelle mit Daten, deren Inhalte ich selbst definiere und z.B. verschiedene "identische" DB unterscheide als developer, test oder produktiv system, die Version des Datenmodels oder installierte Module. Es ist naheliegen: Man kann eintragen was man will. Man muss die Daten natürlich richtig pflegen.
 
Erstmal vielen Dank für die schnelle Antwort.
Prinzipiell gehe ich ähnlich bis identisch vor, wie von dir beschrieben.
Wenn Informationen bereits irgendo stehen erzeuge ich ungerne Doubletten.

Zum tieferen Verständnis: Es arbeiten unterschiedliche Peronen zu unterschiedlichen Zeiten für unterschiedliche Bereiche am gleichen Rechner.

Für's erste werde ich mir die verbundene DB in meine Systemtabelle eintragen.

Gruß
Martin
 
Du kannst aber auch mit

Code:
  SHOW GLOBAL VARIABLES LIKE 'server_id' ;

einfach die Server ID abfragen. Diese sollte NIEMALS bei 2 Systemen gleich sein. Ansonsten hast du direkt Probleme wenn sich die Server mal im Netz unterhalten müssen z.B. bei einer Replikation.

Beispiel.

Code:
mysql>   SHOW GLOBAL VARIABLES LIKE 'server_id' ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.05 sec)

mysql>

Dieser Wert ist frei wählbar und lässt sich in der mysql init einstellen.
 
Hallo BerndB,

auch dir ein dankeschön für die Hinweise.
Was ich gesucht habe ist, wie ich auslesen kann, zu welcher Datenbank gerade die aktive Verbindung besteht.

show GLOBAL VARIABLES LIKE '%' --> listet mir alle Systemvariablen

show GLOBAL VARIABLES LIKE 'HOSTNAME' --> zeigt mir den Hostnamen der verbundenen DB an

Ich habe nach Auswahl und Verbindung zur ausgewählten DB in meiner Systemtabelle einen Hinweis, welches die verbundene DB ist.


Gruß

Martin
 
Hallo Martin,

SHOW GLOBAL VARIABLES LIKE 'server_id'

gibt dir nur die server_id zurück. Und wenn du (wie es sein sollte) jedem DB Server eine andere ID gibts (1...8) kannst du
daran feststellen wohin du verbunden bist.

Gruß

Bernd
 
Hallo Bernd,

ich benötige die Info zu welcher Datenbank gerade die aktive Verbindung besteht, nicht zu welchem Datenbankserver.
Wie gesagt, habe ich es bereits gelöst, indem ich mir bei Verbindungsherstellung die verbundene DB 'merke'!

Gruß

Martin

PS: Ich würde diesen Beitrag gerne schließen, was hier scheinbar leider nicht geht.
 
OK, sorry, da habe ich dich falsch verstanden. Du scheinst nur einen Datenbankserver zu haben mit mehreren Schemas.

Falls das so ist kannst du auch:

SELECT DATABASE();

nutzen und du bekommst den Namen der DB (Schema) zurück.

Gruß

Bernd
 
Werbung:
Zurück
Oben