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!
@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