2010-12-12 2 views
5

내 고객은 실습 관리 소프트웨어를 구입 한 치과 의사입니다. 이 소프트웨어는 환자 데이터베이스, 일정 및 모든 의료 기록을 포함하여 로컬 서버에 설치되었습니다. 이제 그들은 패키지와 함께 제공되지 않는 유틸리티를 작성하고이 데이터베이스에 쿼리 할 수있는 기능이 필요합니다.숨겨진 DB의 데이터베이스 스키마를 얻는 방법은 무엇입니까?

소프트웨어 제조업체 (Patterson/EagleSoft)의 기술 지원부에 전화를 걸어 보았습니다. 제 질문에 대한 답변을 충분히 이해할 수있는 사람을 찾기가 어렵습니다. 내가 말할 수있는 한, 소프트웨어에 대한 API는 없으며, 프로그래밍 방식으로 직접 DB에 쿼리하는 방법을 알려주지 않는다. 대화식 쿼리 창이 있지만 자동 쿼리 작성에는 적합하지 않습니다. 그들은 어딘가에 SQL Server DB가 있지만 SQL Server에 연결하는 ODBC 드라이버는 SQL Anywhere 드라이버입니다 (허허?).

그래서 서버를 검색하여 데이터베이스 파일을 찾을 수 없습니다. 그런 다음 설치 과정에서 EagleSoft 소프트웨어에서만 볼 수있는 독점적 인 가상 머신을 생성한다는 사실을 발견했습니다. 그러나 난독 화 레이어로 DB를 격리하는 데는 매우 뛰어 났지만 실제로 SQL Anywhere 연결 인 ODBC 드라이버는 그대로 두었습니다.

그 매혹적인 긴 전공 후, 여기 내 질문 :이 쿼리를 통해이 ODBC 연결을 통해 어떤 구조로 쿼리 할 수 ​​있습니까? SQL Server DB 아래에 sysobjects 테이블을 사용할 수는 있지만 SQL Anywhere ODBC 연결을 사용하여 MSSQL DB에 연결하는 방법을 완전히 이해하지 못했습니다. 그리고 그들이 저를 잘못 알고 있고 정말로 SQL Anywhere DB 아래에 있다면 DB 구조에 도달하기 위해 실행할 쿼리는 무엇입니까?

만약 누군가 EagleSoft (또는 비슷한 독점적 인 패키지)를 실제로 쿼리하는 데 성공한 사람이 있다면 - 어떻게했는지 말해주십시오!

+0

@Marc Gravell : ODBC API는 스키마를 내포하는 일반적인 기능을 가지고 있으며이 질문에 대해서는 매우 지역화되지 않은 대답이 될 것입니다. – bmargulies

답변

6

가장 간단한 방법은 OdbcDbConnection을 사용하여 작은 응용 프로그램을 작성하고 소프트웨어와 함께 설치된 DSN을 사용하여 연결하는 것입니다. 그것은 하나의 프로브 'select * from sysobjects'이 실제로 그 밑에있는 MS-SQL 데이터베이스라는 것을 밝혀 내기 위해 걸렸습니다. 나는 거기에서부터 나아갈 수 있습니다!

+0

소프트웨어와 함께 설치된 DSN을 어떻게 알 수 있습니까? 또한 데이터베이스에 연결하기위한 자격 증명이 필요합니까? –

+0

Shaul Behr 님이 샘플 코드를 게시 해 주실 수 있습니다. Im도 eaglesoft와 협력합니다. –

+0

@BlaireAndaloc이 게시물은 개장 5 주년입니다. 코드는 보관 된 프로젝트의 어딘가에 묻혀 있습니다. 죄송합니다 ... –

1

나는 사람이 구글 결과 "어느 곳 SQL"을 성공적으로 완료되었는지 확인하기 위해 데이터베이스를 검색에 중대하다 squirel 같은 도구를 사용하십시오 :

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

다른 사람들이 얻을 관리가 있음을 나타냅니다를 다람쥐. 물론 사용하기 쉽습니다. 물론 연결이 작동하도록 관리한다고 가정하십시오!

0

내 eaglesoft 데이터베이스에서 데이터를 액세스하고 조작하기 위해 PHP로 구동되는 자체 웹 사이트를 작성했습니다. 로컬 DNS 항목에 대한 ODBC 연결을 작성하고 완료하십시오. 데이터베이스 구조를 보려면 eaglesoft 또는 고급 쿼리 도구에 포함 된 기술 참조를 사용할 수 있습니다.

+0

eaglesoft 데이터베이스와의 연결을 위해 PHP를 어떻게 사용했는지 설명 할 수 있습니까? –

0

도움이 될만한 몇 가지 도구는 SQLWorkbenchDjango입니다. SQLWorkbench를 사용하여 프로덕션 시스템의 데이터를 Postgres 데이터베이스로 복사하므로 프로덕션 환경을 손상시키지 않으면 서이를 해킹 할 수 있습니다. 그런 다음 Django의 inspectdb를 사용하여 데이터베이스 환경의 모델을 생성합니다. 거기에서 데이터베이스와 템플리트에 '보기'를 작성하여 원하는 내용을 정확하게 표시 할 수 있습니다.

+0

RazorSQL을 사용하여 연결하려고하는데 데이터베이스 이름과 인증 세부 정보를 묻습니다. 레지스트리에서 ODBC.ini를 보면 저장되는 세부 정보가 보이지 않습니다. Eaglesoft의 기본값은 무엇입니까? – Alan

+0

모든 Eaglesoft 클라이언트 (적어도 14 일전에는 서버 프로세스에 데이터를 보내고 결과를 얻는 대신 직접 서버에 대한 데이터베이스 연결을 만들고 쿼리를 직접 작성합니다. 이것은 클라이언트가 사용자 이름과 암호로 로그인한다는 것을 의미합니다. 그리고 이전에는 SSL/TLS가 아닌 일반 텍스트였습니다. 따라서 Eaglesoft를 호스팅하고 패킷을 캡처하는 Windows Server에서 wireshark를 실행하십시오. 사용자 이름과 암호를 가져올 수 있어야합니다. :) –

+0

감사합니다. Aaron, 로컬 컴퓨터에서 최신 데모 버전 (18.00)을 사용하고 있습니다. winpcap은 localhost 트래픽을 처리 할 수 ​​없으므로 nmap을 설치했지만 Wireshark를 사용하여 아무것도 보이지 않습니다. SSL/TLS 해독에 대한 경험이 없지만 일반 텍스트 인 경우 루프백 로그에서'pass' 또는'user'에 대한 일치 항목을 찾을 수 없습니다. – Alan

관련 문제