Mein Kunde ist eine Zahnarztpraxis, die eine Praxisverwaltungssoftware gekauft hat. Diese Software wurde auf ihrem lokalen Server installiert, einschließlich einer Patientendatenbank, eines Zeitplans und aller Arten von Krankenakten. Jetzt wollen sie, dass ich einige Dienstprogramme für sie schreibe, die nicht mit ihrem Paket geliefert werden, und dafür muss ich diese Datenbank abfragen können.Wie bekomme ich das Datenbankschema einer versteckten DB?
Ich habe versucht, technischen Support der Softwarehersteller anzurufen (Patterson/EagleSoft), und es ist schwierig, jemanden zu finden, der die Technologie genug versteht, um meine Fragen zu beantworten. Soweit ich das beurteilen kann, gibt es keine API für ihre Software, und verständlicherweise wollen sie mir nicht sagen, wie ich die Datenbank direkt programmgesteuert abfragen soll. Sie haben ein interaktives Abfragefenster, aber das ist natürlich nicht gut für automatisierte Abfragen. Alles, was sie tun würden, ist, dass es irgendwo eine SQL Server DB gibt, aber die ODBC-Treiber, mit denen eine Verbindung hergestellt wird, sind SQL Anywhere-Treiber (nicht wahr?).
Also ich suchte auf dem Server und konnte keine Datenbankdateien finden. Dann entdeckte ich, dass die Installation eine Art proprietäre virtuelle Maschine erstellt, die nur für die EagleSoft-Software sichtbar ist. Aber während sie ihre DB in Schichten der Verschleierung sehr gut isolieren konnten, haben sie einen ODBC-Treiber offen gelassen, der tatsächlich eine SQL Anywhere-Verbindung ist.
Jetzt nach dieser faszinierenden und langen Präambel, hier ist meine Frage: Welche Abfragen kann ich über diese ODBC-Verbindung ausführen, um die DB hinsichtlich ihrer Struktur zu befragen? Wenn es eine SQL Server DB darunter ist, könnte ich die sysobjects-Tabelle verwenden, aber ich verstehe nicht vollständig, wie Sie eine SQL Anywhere-ODBC-Verbindung verwenden können, um eine Verbindung zu einer MSSQL-DB herzustellen. Und wenn sie mich falsch informierten und es wirklich eine SQL Anywhere DB darunter ist, welche Abfragen müssen ausgeführt werden, um die DB Struktur zu erhalten?
Und wenn es noch jemand gibt, der jemals EagleSoft (oder ein ähnliches proprietäres Paket) abgefragt hat - bitte sagen Sie mir, wie Sie es gemacht haben!
@Marc Gravell: Die ODBC-API verfügt über generische Fähigkeit zum Introspecting-Schema, und das wäre eine nicht sehr lokalisierte Antwort auf diese Frage. – bmargulies