【发布时间】:2010-12-12 09:08:13
【问题描述】:
我的客户是一家牙科诊所,购买了一款诊所管理软件。该软件安装在他们的本地服务器上,包括患者数据库、时间表和各种医疗记录。现在他们希望我为他们编写一些他们的包中没有提供的实用程序,为此我需要能够查询这个数据库。
我尝试致电软件制造商的技术支持 (Patterson/EagleSoft),但很难找到足够了解该技术的人来回答我的问题。据我所知,他们的软件没有 API,可以理解的是,他们不愿意告诉我如何以编程方式直接查询数据库。他们确实有一个交互式查询窗口,但显然这不利于编写自动查询。他们只会说某处有一个 SQL Server DB,但连接到它的 ODBC 驱动程序是 SQL Anywhere 驱动程序(嗯?)。
所以我在服务器上四处搜索,找不到任何数据库文件。然后我发现安装创建了某种专有虚拟机,它只对 EagleSoft 软件可见。但是,虽然他们非常擅长在混淆层中隔离他们的数据库,但他们仍然打开了一个 ODBC 驱动程序,这确实是一个 SQL Anywhere 连接。
现在,在引人入胜且冗长的序言之后,这是我的问题:我可以在这个 ODBC 连接上运行哪些查询来询问数据库的结构?如果它是下面的 SQL Server DB,我可以使用 sysobjects 表,但我不完全掌握如何使用 SQL Anywhere ODBC 连接来连接到 MSSQL DB。如果他们误导了我,并且它确实是一个 SQL Anywhere 数据库,那么要运行哪些查询来获取数据库结构?
如果还有其他人曾经成功地实际查询过 EagleSoft(或任何类似的专有软件包),请告诉我你是如何做到的!
【问题讨论】:
-
@Marc Gravell:ODBC API 具有内省模式的通用能力,这不是对这个问题的本地化答案。
标签: sql-server odbc sqlanywhere