我的客戶是購買了一個練習管理軟件的牙科診所。該軟件安裝在本地服務器上,包括患者數據庫,時間表和所有的病歷記錄。現在他們希望我爲它們編寫一些實用程序,這些實用程序未隨其包提供,爲此我需要查詢此數據庫的功能。如何獲取隱藏數據庫的數據庫模式?
我試過打電話給軟件製造商的技術支持(Patterson/EagleSoft),很難找到任何理解該技術的人都足以回答我的問題。據我所知,他們的軟件沒有API,可以理解的是,他們不願意告訴我如何直接以編程方式查詢數據庫。他們確實有一個交互式查詢窗口,但顯然這對編寫自動化查詢沒有好處。他們所要做的只是某個地方有一個SQL Server數據庫,但連接到它的ODBC驅動程序是SQL Anywhere驅動程序(呵?)。
所以我搜索了服務器周圍,找不到任何數據庫文件。然後我發現安裝創建了一些專有的虛擬機,只有EagleSoft軟件才能看到。但是,儘管他們已經非常擅長將數據庫隔離到一層混淆,但他們已經開放了一個ODBC驅動程序,這確實是一個SQL Anywhere連接。
現在,在那段引人入勝和冗長的序言之後,這裏是我的問題:我可以通過此ODBC連接運行哪些查詢來詢問數據庫的結構?如果它是下面的SQL Server數據庫,我可以使用sysobjects表,但我不完全瞭解如何使用SQL Anywhere ODBC連接來連接到MSSQL DB。如果他們錯誤地描述了我,並且它確實是下面的SQL Anywhere數據庫,那麼運行查詢DB結構的查詢是什麼?
如果還有其他人曾經成功地實際查詢過EagleSoft(或任何類似的專有軟件包) - 請告訴我您是如何做到的!
@Marc Gravell:ODBC API具有用於自省模式的泛型功能,這對於這個問題來說不是一個非常本地化的答案。 – bmargulies 2010-12-14 01:56:39