2010-12-12 58 views
5

Khách hàng của tôi là một thực hành nha khoa đã mua một phần mềm quản lý thực hành. Phần mềm này đã được cài đặt trên máy chủ cục bộ của họ, bao gồm cơ sở dữ liệu bệnh nhân, lịch biểu và tất cả các hồ sơ y tế. Bây giờ họ muốn tôi viết một số tiện ích cho họ mà không được cung cấp với gói của họ, và cho điều này tôi cần khả năng truy vấn cơ sở dữ liệu này.Cách lấy lược đồ cơ sở dữ liệu của một DB bị ẩn?

Tôi đã cố gắng gọi hỗ trợ kỹ thuật của các nhà sản xuất phần mềm (Patterson/EagleSoft) và thật khó để tìm bất kỳ ai hiểu công nghệ đủ để trả lời các câu hỏi của tôi. Theo như tôi có thể nói, không có API cho phần mềm của họ, và dễ hiểu là họ miễn cưỡng cho tôi biết cách truy vấn trực tiếp DB, lập trình. Họ có một cửa sổ truy vấn tương tác, nhưng rõ ràng là không tốt cho việc viết các truy vấn tự động. Tất cả những gì họ sẽ cho phép là một nơi nào đó có một SQL Server DB, nhưng các trình điều khiển ODBC để kết nối với nó là SQL Anywhere trình điều khiển (huh?).

Vì vậy, tôi đã tìm kiếm trên máy chủ và không thể tìm thấy bất kỳ tệp cơ sở dữ liệu nào. Sau đó, tôi phát hiện ra rằng việc cài đặt tạo ra một số loại máy ảo độc quyền, mà chỉ có thể nhìn thấy phần mềm EagleSoft. Nhưng trong khi họ đã được rất tốt tại cách điện DB của họ trong lớp obfuscation, họ đã để lại mở một trình điều khiển ODBC, mà thực sự là một kết nối SQL bất cứ nơi nào.

Bây giờ sau lời mở đầu hấp dẫn và dài dòng, đây là câu hỏi của tôi: Tôi có thể chạy truy vấn nào qua kết nối ODBC này để thẩm vấn DB như cấu trúc của nó? Nếu đó là một SQL Server DB bên dưới tôi có thể sử dụng bảng sysobjects, nhưng tôi không hoàn toàn nắm bắt như thế nào bạn có thể sử dụng một kết nối SQL bất cứ nơi nào ODBC để kết nối với một MSSQL DB. Và nếu họ đã hiểu sai tôi và nó thực sự là một SQL Anywhere DB bên dưới, các truy vấn để chạy để có được cấu trúc DB là gì?

Và nếu có ai khác ngoài kia đã từng thành công trong việc thực sự truy vấn EagleSoft (hoặc bất kỳ gói độc quyền tương tự nào) - hãy cho tôi biết bạn đã làm như thế nào!

+0

@Marc Gravell: API ODBC có khả năng chung cho lược đồ nội suy, và đó sẽ là một câu trả lời không được bản địa hoá cho câu hỏi này. – bmargulies

Trả lời

6

Hóa ra cách đơn giản nhất để thực hiện là viết một ứng dụng nhỏ bằng cách sử dụng OdbcDbConnection và kết nối bằng DSN được cài đặt với phần mềm. Phải mất một thăm dò 'select * from sysobjects' để tiết lộ rằng đó là, thực sự là một cơ sở dữ liệu MS-SQL bên dưới tất cả những điều đó, và tôi tốt để đi từ đó!

+0

Làm cách nào để biết DSN được cài đặt bằng phần mềm. Ngoài ra, chúng tôi có cần bất kỳ thông tin đăng nhập nào để kết nối với cơ sở dữ liệu không? –

+0

Shaul Behr bạn có thể đăng mã mẫu của bạn Im cũng đang làm việc với eaglesoft –

+0

@BlaireAndaloc Bài đăng này đang tiếp cận kỷ niệm lần thứ 5 của nó. Mã bị chôn vùi đâu đó trong một dự án được lưu trữ. Xin lỗi ... –

1

Tôi muốn sử dụng một công cụ như squirel đó là rất tốt tại xem bất kỳ cơ sở dữ liệu để kiểm tra nếu có ai đã thành công với "SQL Anywhere" này kết quả google:

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

Cho thấy rằng những người khác đã được quản lý để có được sóc để làm điều này. Nó khá dễ sử dụng ... giả sử tất nhiên bạn quản lý để có được kết nối làm việc!

0

Tôi đã viết trang web PHP được điều khiển của riêng mình để truy cập và thao tác dữ liệu trong cơ sở dữ liệu eaglesoft của tôi. Bạn chỉ cần tạo kết nối odbc để nhập DNS cục bộ và thực hiện. Để xem cấu trúc cơ sở dữ liệu, bạn có thể sử dụng tham chiếu kỹ thuật có trong eaglesoft hoặc công cụ truy vấn nâng cao.

+0

Bạn có thể giải thích cách bạn sử dụng PHP để thiết lập kết nối với cơ sở dữ liệu eaglesoft. –

0

Một số công cụ có thể hữu ích là SQLWorkbenchDjango. Tôi sử dụng SQLWorkbench để sao chép dữ liệu từ hệ thống sản xuất vào cơ sở dữ liệu Postgres để tôi có thể hack nó mà không làm hỏng môi trường sản xuất. Sau đó, tôi sử dụng auditdb Django để tạo ra các mô hình của môi trường cơ sở dữ liệu. Từ đó thật dễ dàng để tạo ra 'khung nhìn' vào cơ sở dữ liệu và các mẫu để hiển thị chính xác những gì tôi muốn.

+0

Tôi đang cố gắng kết nối bằng RazorSQL và yêu cầu tên cơ sở dữ liệu và chi tiết xác thực. Nhìn vào ODBC.ini trong sổ đăng ký, tôi không thấy bất kỳ chi tiết nào đang được lưu, bất kỳ ý tưởng nào về mặc định dành cho Eaglesoft? – Alan

+0

Tất cả các khách hàng của Eaglesoft (ít nhất là trong phiên bản 14 ngày) sẽ tạo kết nối cơ sở dữ liệu đến máy chủ và truy vấn trực tiếp thay vì gửi một số dữ liệu đến quy trình máy chủ và nhận kết quả. Điều này có nghĩa là khách hàng đăng nhập bằng tên người dùng và mật khẩu. Và nó được sử dụng để có văn bản rõ ràng - không có SSL/TLS. Vì vậy, hãy kích hoạt Wireshark trên Windows Server của bạn để lưu trữ Eaglesoft và nắm bắt các gói dữ liệu. Bạn sẽ có thể nhận được tên người dùng và mật khẩu. :) –

+0

Cảm ơn Aaron, tôi đang sử dụng bản demo mới nhất (phiên bản 18.00) trên máy tính cục bộ. Tôi đã cài đặt nmap vì winpcap không thể thực hiện lưu lượng cục bộ, nhưng không thấy bất kỳ thứ gì sử dụng Wireshark. Tôi không có bất kỳ kinh nghiệm giải mã SSL/TLS, nhưng nếu nó là văn bản rõ ràng, tôi không thể tìm thấy bất kỳ trận đấu nào cho 'pass', hoặc' user' trong các bản ghi loopback. – Alan

Các vấn đề liên quan