Mi cliente es una clínica dental que ha comprado un software de administración de prácticas. Este software se instaló en su servidor local, incluida una base de datos de pacientes, un cronograma y todo tipo de registros médicos. Ahora quieren que les escriba algunas utilidades que no están provistas con su paquete, y para esto necesito la capacidad de consultar esta base de datos.¿Cómo llegar al esquema de la base de datos de una base de datos oculta?
Intenté llamar a soporte técnico de los fabricantes de software (Patterson/EagleSoft), y es difícil encontrar a alguien que entienda la tecnología lo suficiente como para responder mis preguntas. Por lo que puedo decir, no hay API para su software, y comprensiblemente son reacios a decirme cómo consultar el DB directamente, mediante programación. Tienen una ventana de consulta interactiva, pero obviamente eso no es bueno para escribir consultas automatizadas. Todo lo que dejarían ver es que en algún lugar hay un DB de SQL Server, pero los controladores ODBC para conectarse son controladores SQL Anywhere (¿eh?).
Así que busqué en el servidor y no pude encontrar ningún archivo de base de datos. Luego descubrí que la instalación crea algún tipo de máquina virtual patentada, que solo es visible para el software EagleSoft. Pero aunque han sido muy buenos para aislar su base de datos en capas de ofuscación, han dejado abierto un controlador ODBC, que de hecho es una conexión SQL Anywhere.
Ahora, después de este fascinante y extenso preámbulo, aquí está mi pregunta: ¿Qué consultas puedo ejecutar sobre esta conexión ODBC para interrogar al DB sobre su estructura? Si se trata de una base de datos de SQL Server, podría utilizar la tabla sysobjects, pero no entiendo completamente cómo puede usar una conexión ODBC de SQL Anywhere para conectarse a una base de datos MSSQL. Y si me estaban informando mal y en realidad es un DB de SQL Anywhere debajo, ¿cuáles son las consultas que se deben ejecutar para llegar a la estructura de la base de datos?
Y si hay alguien más que haya tenido éxito en consultar realmente a EagleSoft (o cualquier paquete propietario similar), ¡cuénteme cómo lo hizo!
@Marc Gravell: La API ODBC tiene una capacidad genérica para el esquema de introspección, y esa sería una respuesta no muy localizada a esta pregunta. – bmargulies