2010-12-12 4 views
5

Мой клиент - стоматологическая практика, купившая часть программного обеспечения для управления практикой. Это программное обеспечение было установлено на их локальном сервере, включая базу данных пациентов, расписание и всевозможные медицинские записи. Теперь они хотят, чтобы я написал некоторые утилиты для них, которые не были предоставлены с их пакетом, и для этого мне нужна возможность запросить эту базу данных.Как получить схему базы данных скрытой БД?

Я пробовал называть техническую поддержку производителей программного обеспечения (Patterson/EagleSoft), и трудно найти тех, кто понимает технологию достаточно, чтобы ответить на мои вопросы. Насколько я могу судить, API для их программного обеспечения отсутствует, и, по понятным причинам, они неохотно говорят мне, как обращаться к БД напрямую, программно. У них есть интерактивное окно запросов, но, очевидно, это не хорошо для написания автоматизированных запросов. Все, что они позволят, это то, что где-то есть база данных SQL Server, но драйверы ODBC для подключения к ней - это драйверы SQL Anywhere (да?).

Так что я искал на сервере и не мог найти файлы базы данных. Затем я обнаружил, что установка создает своего рода проприетарную виртуальную машину, которая видна только программному обеспечению EagleSoft. Но в то время как они очень хорошо изолировали свою БД в слоях обфускации, они оставили открытым драйвер ODBC, который действительно является подключением SQL Anywhere.

Теперь, после этой увлекательной и длинной преамбулы, вот мой вопрос: какие запросы я могу запустить над этим подключением ODBC для опроса БД относительно его структуры? Если это СУБД SQL Server, я мог бы использовать таблицу sysobjects, но я не полностью понимаю, как вы можете использовать соединение ODBC SQL Anywhere для подключения к базе данных MSSQL. И если они меня дезинформировали, а на самом деле это SQL Anywhere DB, какие запросы запускать для работы с базой данных?

И если есть кто-то еще, кто когда-либо преуспел в том, чтобы действительно запрашивать EagleSoft (или любой подобный проприетарный пакет) - скажите, пожалуйста, как вы это сделали!

+0

@Marc Gravell: API ODBC имеет общую возможность для интроспекции схемы, и это будет не очень локализованный ответ на этот вопрос. – bmargulies

ответ

6

Оказалось, что самый простой способ сделать это - написать небольшое приложение, используя OdbcDbConnection, и подключиться с помощью DSN, установленного с программным обеспечением. Потребовалось одно исследование 'select * from sysobjects', чтобы показать, что это действительно база данных MS-SQL под всем этим, и мне хорошо идти оттуда!

+0

Как узнать, какой DSN установлен с программным обеспечением. Также нужны ли нам какие-либо учетные данные для подключения к базе данных? –

+0

Shaul Behr вы можете опубликовать свой пример кода Im также работает с eaglesoft –

+0

@BlaireAndaloc Этот пост приближается к своему 5-летию. Код похоронен где-то в архивированном проекте. Извините ... –

1

Я хотел бы использовать такой инструмент, как squirel, который является большим при просмотре любой базы данных, чтобы проверить, если кто-нибудь был успешным с «SQL Anywhere» этот результат Google:

http://blog.gmane.org/gmane.comp.db.squirrel-sql.users/month=20091001

показывает, что другим удалось получить белки, чтобы сделать это. Это довольно просто использовать ... при условии, что вам удастся заставить соединение работать!

0

Я написал свой собственный веб-сайт, ориентированный на PHP, для доступа и обработки данных в моей базе данных eaglesoft. Вы просто создаете соединение odbc с локальной записью DNS и выполняете. Чтобы увидеть структуру базы данных, вы можете использовать техническую ссылку, включенную в eaglesoft или расширенный инструмент запросов.

+0

Можете ли вы объяснить, как вы использовали PHP для установления соединения с базой данных eaglesoft, пожалуйста. –

0

Несколько инструментов, которые могут помочь, это SQLWorkbench и Django. Я использую SQLWorkbench для копирования данных из производственной системы в базу данных Postgres, чтобы я мог взломать ее, не повредив производственную среду. Затем я использую checkdb для Django для создания моделей среды базы данных. Оттуда легко создать «представления» в базе данных и шаблонах, чтобы отобразить именно то, что я хочу.

+0

Я пытаюсь подключиться с помощью RazorSQL и запрашивает имя базы данных и данные авторизации. Глядя на ODBC.ini в реестре, я не вижу, чтобы какая-либо из этих данных была сохранена, любая идея, что по умолчанию для Eaglesoft? – Alan

+0

Все клиенты Eaglesoft (по крайней мере, в 14-й версии 14 дней) будут создавать соединение с базой данных с сервером и напрямую запрашивать, а не отправлять некоторые данные на серверный процесс и получать результат. Это означает, что клиент подписывается с именем пользователя и паролем. И это был чистый текст - без SSL/TLS. Поэтому запустите firewall на вашем Windows Server, на котором размещены пакеты Eaglesoft и захвата. Вы должны иметь возможность получить имя пользователя и пароль. :) –

+0

Спасибо Аарон, я использую последнюю демо (версия 18.00) на локальном компьютере. Я установил nmap, поскольку winpcap не может делать трафик localhost, но ничего не вижу с помощью Wireshark. У меня нет опыта в расшифровке SSL/TLS, но если это чистый текст, я не смог найти совпадений для 'pass' или' user' в журналах loopback. – Alan

Смежные вопросы