Как получить в базе данных схему скрытой БД? - PullRequest
6 голосов
/ 12 декабря 2010

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

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

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

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

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

Ответы [ 4 ]

7 голосов
/ 14 декабря 2010

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

1 голос
/ 03 августа 2016

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

ОБНОВЛЕНИЕ: Начиная с Eaglesoft 19, похоже, что Паттерсон защищал базу данных паролем, и они вышли изспособ запретить пользователям получать данные, не платя им за доступ.

ОБНОВЛЕНИЕ: Как я уже упоминал ранее, Eaglesoft 19 имеет заблокированную версию базы данных.Для доступа только для чтения вы можете позвонить в Patterson и попросить у них пароль для раздела «Администратор базы данных» их инструмента «Технический справочник», установленного на вашем сервере.Когда вы окажетесь там, есть возможность установить пароль только для чтения для доступа к базе данных.Имя пользователя 'dba' и любой пароль, который вы установили.Иногда, чтобы получить доступ, им нужно немного взад-вперед, но я решил сказать: «Мы помещаем данные пациентов в Eaglesoft уже более десяти лет, и у нас всегда был доступ к базе данных.Теперь вы ограничиваете его и говорите нам, что мы должны заплатить за доступ. Похоже, вы пытаетесь вымогать деньги, удерживая наши данные в заложниках. Я, вероятно, должен управлять этим нашей юридической командой. "*

1 голос
/ 12 декабря 2010

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

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

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

0 голосов
/ 11 февраля 2013

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

...