Abfrage welche Datenbanken und Tabellen in einer Instanz laufen
-
Für eine statistsische Auswertung werden Daten in einer MS-SQL-Express-Datenbank abgelegt. Nun soll aber für jedes neue Jahr eine neue Tabelle (oder auch Datenbank falls man das 4GB-Limit überschreiten sollte) angelegt werden. ich möchte aus meinem Programm heraus den Zugriff über ODBC machen. Wie kann ich im Programm abfragen, welche Datenbanken in der entsprechenden Serverinstanz laufen und welche Tabellen in der Datenbank integriert sind? Der User soll ein Auswahlfeld bekommen, wo er das Jahr auswählen kann. Ich möchte über diese Abfrage den Connection-String manipulieren.
-
Google hätte dir geholfen. "mssql datenbank abfragen"
Datenbanken:
SELECT * FROM master.dbo.sysdatabasesTabellen:
SELECT * FROM <datenbank>.dbo.sysobjects WHERE xtype='U'
-
Unix-Tom schrieb:
Google hätte dir geholfen.
Ich frage Google immer als erstes. Aber wahrscheinlich war meine Fragestellung nicht ganz korrekt bzw. nicht eindeutig: ich wollte nicht wissen wie es auf SQL-Ebene geht, sondern ob es API-Funktionen oder was auch immer gibt. Der Hintergrund ist, ich habe ein Gerüst basierend auf einem CRecordView und ich verwende MFC. Sicher kann man da auch SQL-Statements verwenden, aber ich will/muss eine Abfrage im Programm treffen, bevor ich einen geeigneten Accessor auswähle.
-
In MSSQL wüsste ich von keiner API da alles durch SQL funktioniert.
Auch eine API würde nur ein Statement absetzen.
Ist im übrigen bei MySQL auch so.
Ich frage mich gerade wo das Problem ist das RDBMS danach abzufragen.
-
Unix-Tom schrieb:
Ich frage mich gerade wo das Problem ist das RDBMS danach abzufragen.
Wenn man nicht weiß wonach man genau sucht, dann ist das schon schwierig. Weiterhin brauch ich einen weiteren Accessor dafür und letztlich müssen auch die Berechtigungen stimmen, um auf die Systemsichten zugreifen zu können. Außerdem wird in anderen Bereichen (also nicht der Datenbankprogrammierung) einem schon relativ viel Arbeit vom Klassengerüst abgenommen bzw. es werden geeignete Methoden bereitgestellt.
-
Sehe grad kein Problem...
Mach eine Connection auf die "master" Datenbank des entsprechenden Servers, und setzt dann die beiden von Unix-Tom geposteten Abfragen ab.