Làm cách nào để kiểm tra Cơ sở dữ liệu nào được cài đặt trên máy chủ DataBase mà tôi có để truy vấn?


11

Tôi muốn kiểm tra loại sql nào đang chạy trên máy chủ Datasase mà tôi có thể truy cập. Tôi chỉ có quyền truy cập vào giao diện web và danh sách các bảng.

Thông qua giao diện tôi có thể chạy các truy vấn trên các bảng có trong danh sách.

Làm cách nào tôi có thể biết thêm thông tin về máy chủ và phiên bản mà máy chủ đang chạy. Tôi không biết về IP hoặc PORT mà máy chủ đang chạy.

Tôi muốn biết nếu máy chủ là MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL hoặc máy chủ sql khác.

Trang web mà tôi đang nói đến là trang này: trình soạn thảo SQL w3schools.com .

EDIT 2: mặc dù đối với một số lệnh, chọn sqlite_version () hoạt động với tôi nhưng nó không hoạt động. Đây là ảnh chụp màn hình của phản ứng.

nhập mô tả hình ảnh ở đây

EDIT 3: Trên Chromium Browser, lệnh đang hoạt động bình thường. Tuy nhiên, trên Firefox Browser, lệnh không hoạt động.

Tôi cũng đề cập rằng tôi đang chạy Linux.

Bạn nghĩ gì có thể là lý do tại sao trên Firefox và trên Chrome tôi nhận được kết quả khác nhau?


Bạn có thể chạy một truy vấn?
David TOUR TOUR Markovitz

@DuduMarkovitz Có, tôi có thể chạy querry.
yoyo_fun

Thực tế là tuyên bố này có hiệu quả đối với một số người và không phải đối với những người khác dường như cho thấy môi trường cụ thể có vấn đề. Có lẽ @joanolo đã đúng khi nói rằng những truy vấn này chạy trong trình duyệt. Những người khác nhau sử dụng các trình duyệt khác nhau, một số có thể có cài đặt tiện ích mở rộng bổ sung.
Andriy M

2
"Hàm không xác định trong biểu thức." là một thông báo lỗi truy cập nên có vẻ như phía máy chủ họ đang sử dụng Jet
Martin Smith

@MartinSmith Jet là gì trong bối cảnh này? Tôi có thể đọc thêm về nó ở đâu?
yoyo_fun

Câu trả lời:


15

Tôi giả sử rằng giao diện web của bạn cho phép bạn ban hành các lệnh SQL. Nếu vậy, bạn có thể sử dụng:

SELECT version();

PostgreSQL

Nếu bạn đang sử dụng cơ sở dữ liệu PostgreSQL , bạn sẽ nhận được phản hồi tương tự như

PostgreSQL 9.6.1 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.0 (clang-700.1.76), 64-bit

MySQL

Nếu bạn đang ở trên một sở dữ liệu MySQL , câu trả lời sẽ giống như

5.7.12-log

Oracle

Nếu bạn đang sử dụng cơ sở dữ liệu Oracle , bạn sẽ nhận được thông báo lỗi:

ORA-00923: FROM keyword not found where expected

(ORA-xxxx cho bạn biết bạn đang ở trên Oracle). Để tìm ra phiên bản cụ thể, hãy thử:

SELECT banner as "oracle version" from v$version

Bạn sẽ nhận được phản hồi như:

Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0  Production
TNS for 64-bit Windows: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

Máy chủ Microsoft SQL

Nếu bạn đang sử dụng MS SQL Server , phản hồi cũng sẽ là một lỗi và trông giống như:

'version' is not a recognized built-in function name.

Trong trường hợp đó, bạn có thể thử:

SELECT @@version ;

Và bạn sẽ nhận được, như một phản ứng, một cái gì đó trông giống như:

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)   
    Oct 28 2016 18:17:30   
    Copyright (c) Microsoft Corporation  
    Enterprise Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) 

SQLite

Nếu bạn đang sử dụng cơ sở dữ liệu SQLite , bạn sẽ nhận được thông báo lỗi khi bạn thử SELECT version():

 could not prepare statement (1 no such function: version)

Trong trường hợp đó, bạn có thể thử:

 SELECT sqlite_version()

Và câu trả lời sẽ như sau:

3.14.0

cảm ơn vì câu trả lời nhưng tiếc là không có gì hoạt động trên trang web này w3schools
yoyo_fun

Hãy thử cuối cùng : SELECT sqlite_version(), và bạn sẽ có câu trả lời của mình.
joanolo

1
Có vẻ như phiên bản họ thực sự đã chạy hoàn toàn trên trình duyệt của bạn . Hãy xem github.com/kripken/sql.js
joanolo

Có cách nào để đảm bảo đây là trường hợp. Phiên bản ngôn ngữ SQL trên trình duyệt này có cách nào để kiểm tra phiên bản của nó không hoặc thực tế là công cụ SQL này?
yoyo_fun

7

Trình soạn thảo SQL trực tuyến này sử dụng Cơ sở dữ liệu SQL Web , nghĩa là SQL được nhúng trong trình duyệt. Thật dễ dàng để nhận ra nếu bạn xem mã nguồn JS của họ tại http://www.w3schools.com/w3Database.js và so sánh các lệnh gọi API với thông số W3C của Web SQL, ví dụ như cách họ mở cơ sở dữ liệu:

w3Database = window.openDatabase('W3SchoolsDemoDatabase', '1.0',
           'W3SchoolsDemoDatabase', 2 * 1024 * 1024);

Vì vậy, không có máy chủ cơ sở dữ liệu, nó thực sự là trình duyệt thực thi SQL, với công cụ SQL mà trình duyệt của bạn đã chọn để sử dụng (giả sử nó có khả năng SQL để bắt đầu), điều này sqliterất có ý nghĩa.

(EDIT: không hoàn toàn đúng vì theo câu trả lời của Martin Smith , mã đệ trình JS rơi trở lại công cụ MS-Jet phía máy chủ khi trình duyệt không hỗ trợ Web SQL).

Lưu ý rằng W3C đã quyết định từ bỏ khái niệm trình duyệt SQL trong năm 2010, hiện đã lỗi thời.


Bạn có biết tại sao họ quyết định này? Có sự khác biệt nào giữa SQL trong trình duyệt và SQLite không?
yoyo_fun

@yoyo_fun: vi.wikipedia.org/wiki/Web_Query_Database có một số gợi ý. Hoặc bạn có thể hỏi câu hỏi này như một câu hỏi độc lập trên dba.se
Daniel Vérité

Đây thực sự là một ý tưởng rất hay :)
yoyo_fun

5

Như đã nêu trong các câu trả lời khác, nó phụ thuộc vào trình duyệt của bạn.

Nếu trình duyệt của bạn không có hỗ trợ riêng cho Cơ sở dữ liệu Web SQL thì cuối cùng nó sẽ gửi lại cho máy chủ.

nhập mô tả hình ảnh ở đây

Điều này sử dụng Jet như có thể nhìn thấy bằng cách chạy

SELECT X FROM Foobar

Công cụ cơ sở dữ liệu Microsoft Jet không thể tìm thấy bảng đầu vào hoặc truy vấn 'Foobar'. Hãy chắc chắn rằng nó tồn tại và tên của nó được viết đúng chính tả.

có nghĩa là các tiện ích mở rộng Access độc quyền như TRANSFORMcông việc khi truy cập trang từ Firefox (nhưng điều này sẽ thất bại trong Chrome)

nhập mô tả hình ảnh ở đây


Cảm ơn các câu trả lời chi tiết. Bạn có thể cho tôi biết làm thế nào bạn có được ảnh chụp màn hình đầu tiên? Trình chỉnh sửa mà bạn đang sử dụng là gì? Nó có phải là một phần mở rộng cho một trình duyệt web?
yoyo_fun

@yoyo_fun các công cụ dành cho nhà phát triển được tích hợp trong Firefox
Martin Smith

3

Câu trả lời này đã được đưa ra trước khi OP thêm một tài liệu tham khảo vào w3schools.com


Nếu bạn có thể chạy một truy vấn, hãy bắt đầu với điều này:

select version();        -- PostgreSQL  e.g.: PostgreSQL 9.6beta2, compiled by Visual C++ build 1800, 64-bit                                                                                                                                            

select version();        -- MySQL       e.g.: 5.7.11-log                                                                                                                                                                                                

select @@version;        -- SQL Server  e.g.: Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)   Apr 29 2016 23:23:58   Copyright (c) Microsoft Corporation  Express Edition (64-bit) on Windows 7 Enterprise 6.1 <X64> (Build 7601: Service Pack 1)         

select * from v$version; -- Oracle      e.g.: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production                      

select sqlite_version(); -- Sqlite:     e.g.: 3.15.1     

nhưng không may, các lệnh không hoạt động trên trang w3schools và các trang khác. địa chỉ là www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
Ngoài ra, vui lòng thử Sqlite
David

Sqlite. Kiểm tra câu trả lời được cập nhật
David TOUR TOUR Markovitz

Đánh dấu kết quả của việc chạy lệnh "select sqlite_version ()" là "Hàm không xác định 'sqlite_version' trong biểu thức."
yoyo_fun

1
(Câu trả lời phụ thuộc vào trình duyệt)
joanolo

2

Đối với trường hợp cụ thể của công cụ SQL được sử dụng bởi trang tại W3Schools :

Trình duyệt Safari, Chrome và Opera

Nếu bạn sử dụng Trình duyệt Safari (tôi đã thử nghiệm trên Mac OS X 10.12), trang đang sử dụng SQLite, dường như được tích hợp vào chính trình duyệt. Khi bạn nhấn nút "Chạy SQL", nó không sử dụng bất kỳ tài nguyên bên ngoài nào. Kỹ thuật đảo ngược tiếp tục cho thấy trang đang khởi tạo cơ sở dữ liệu bằng mã JavaScript sau:

function w3WebSQLInit() {
    var w3DBObj = this;
    w3Database = window.openDatabase('W3SchoolsDemoDatabase', '1.0', 'W3SchoolsDemoDatabase', 2 * 1024 * 1024);
   ...
}

window.openDatabasecó nghĩa là mã đang sử dụng Cơ sở dữ liệu Web SQL . Điều này đã được W3C định nghĩa vài năm trước và được Opera, Safari và Chrome (AFAIK) đưa vào thực tế, nhưng không phải bởi FireFox (hoặc Explorer). Tất cả ba trình duyệt dường như đã triển khai "Cơ sở dữ liệu SQL Web" bằng cách nhúng các phiên bản SQLite khác nhau vào trong chúng.

Tại thời điểm này, trang W3C tuyên bố:

"Coi chừng. Thông số kỹ thuật này không còn được bảo trì tích cực và Nhóm làm việc về ứng dụng web không có ý định duy trì nó thêm nữa."

Tôi đã thử nghiệm trình duyệt Chrome (phiên bản 56.0.2924.87, trên Windows 10) và dường như nó sử dụng SQLite 3.10.2. Opera (phiên bản 12.15, trên Windows 10), sử dụng SQLite 3.7.9.

Opera đủ rõ ràng trong "về" của họ:

nhập mô tả hình ảnh ở đây

Hướng dẫn lập trình ứng dụng ngoại tuyến và lưu trữ phía máy khách Safari cũng đề cập rằng

Bắt đầu từ Safari 3.1 và iOS 2.0, Safari hỗ trợ lớp cơ sở dữ liệu JavaScript HTML5 Lớp cơ sở dữ liệu JavaScript, dựa trên SQLite, cung cấp cơ sở dữ liệu quan hệ dành cho lưu trữ nội dung quá lớn để lưu trữ cookie một cách thuận tiện (hoặc quá quan trọng để có thể gặp rủi ro vô tình xóa khi người dùng xóa cookie của mình).

Tôi đã không nhìn vào Chrome ... nhưng tôi đoán là rõ ràng.

FireFox, Edge và Internet Khám phá trình duyệt

Nếu bạn sử dụng trình duyệt FireFox (tôi đã thử nghiệm trên Mac OS X 10.12); cùng một trang W3School hoạt động theo một cách hoàn toàn khác. Nó không thực hiện các truy vấn trên trình duyệt , nhưng gửi yêu cầu đến máy chủ của họ . Về phía máy chủ, tôi nghĩ rằng nó thực sự đang sử dụng cơ sở dữ liệu giống như MS Access . Một cách để kiểm tra nó là bằng cách kiểm tra (tiêu chuẩn) information_schema.

Nếu bạn đưa ra truy vấn sau (trong cơ sở dữ liệu tuân thủ tiêu chuẩn sẽ cung cấp danh sách các bảng có thể truy cập được cho người dùng):

SELECT * FROM information_schema.tables;

Bạn nhận được phản hồi lỗi (quá nói) sau đây :

Could not find file 'C:\Windows\SysWOW64\inetsrv\information_schema.mdb'.

Nếu phần mềm đang tìm kiếm tệp .MDB, điều đó có nghĩa là họ đang sử dụng Microsoft Jet Database Engine (hoặc một cái gì đó tương đương) ở phía máy chủ và họ đang sử dụng các tệp định dạng Access .MDB , tương ứng với các phiên bản Access lên đến và bao gồm 2003. (Theo mặc định, truy cập 2007 và các phiên bản mới hơn sử dụng các tệp định dạng .ACCDB).

Microsoft Internet Explorer 11 hoạt động theo cùng một cách (trên Windows 10); và Edge cũng vậy (trên Windows 10).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.