Bagaimana cara memeriksa Mesin Database yang diinstal pada server DataBase yang saya akses untuk menjalankan kueri?

11

Saya ingin memeriksa tipe sql apa yang berjalan pada server Datasase yang dapat saya akses. Saya hanya memiliki akses ke antarmuka web dan daftar tabel.

Melalui antarmuka, saya dapat menjalankan kueri pada tabel yang ada pada daftar.

Bagaimana saya bisa mendapatkan informasi lebih lanjut tentang server dan versi yang dijalankan server. Saya tidak tahu tentang IP atau PORT yang dijalankan server.

Saya ingin tahu apakah servernya adalah MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL, atau server sql lainnya.

Situs web yang saya bicarakan adalah yang ini: w3schools.com SQL editor .

EDIT 2: meskipun untuk beberapa perintah pilih sqlite_version () bekerja untuk saya itu tidak berfungsi. Ini adalah tangkapan layar dari respons.

masukkan deskripsi gambar di sini

EDIT 3: Pada Browser Chromium perintah berfungsi dengan benar. Namun pada Firefox Browser perintahnya tidak berfungsi.

Saya juga menyebutkan bahwa saya sedang menjalankan Linux.

Menurut Anda apa yang menjadi alasan mengapa di Firefox dan di Chrome saya mendapatkan hasil yang berbeda?

yoyo_fun
sumber
Bisakah Anda menjalankan kueri?
David Markovitz
@ DuduMarkovitz Ya saya bisa menjalankan queri.
yoyo_fun
Fakta bahwa pernyataan ini bekerja untuk sebagian orang dan bukan untuk orang lain tampaknya menunjukkan bahwa lingkungan spesifik itu penting. Mungkin @joanolo benar ketika ia mengatakan bahwa kueri ini berjalan di browser. Orang yang berbeda menggunakan browser yang berbeda, beberapa mungkin dengan ekstensi tambahan yang diinstal.
Andriy M
2
"Fungsi yang tidak ditentukan dalam ekspresi." adalah pesan kesalahan akses sehingga sepertinya sisi server mereka menggunakan Jet
Martin Smith
@ MartinSmith Apa Jet dalam konteks ini? Di mana saya bisa membaca lebih lanjut tentang itu?
yoyo_fun

Jawaban:

15

Saya berasumsi bahwa antarmuka web Anda memungkinkan Anda mengeluarkan perintah SQL. Jika demikian, Anda dapat menggunakan:

SELECT version();

PostgreSQL

Jika Anda menggunakan database PostgreSQL , Anda akan mendapat respons yang mirip

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

Jika Anda menggunakan database MySQL , jawabannya seperti

5.7.12-log

Peramal

Jika Anda menggunakan database Oracle , Anda akan mendapatkan pesan kesalahan:

ORA-00923: FROM keyword not found where expected

(ORA-xxxx memberi tahu Anda bahwa Anda menggunakan Oracle). Untuk mengetahui versi spesifik mana, coba:

SELECT banner as "oracle version" from v$version

Anda akan mendapat respons seperti:

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

Microsoft SQL Server

Jika Anda menggunakan MS SQL Server , responsnya juga akan menjadi kesalahan, dan terlihat seperti:

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

Dalam hal ini, Anda dapat mencoba:

SELECT @@version ;

Dan sebagai tanggapan, Anda akan mendapatkan sesuatu yang terlihat seperti:

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

Jika Anda menggunakan database SQLite , Anda akan mendapatkan pesan kesalahan saat Anda mencoba SELECT version():

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

Dalam hal ini, Anda dapat mencoba:

 SELECT sqlite_version()

Dan jawabannya akan terlihat seperti:

3.14.0
joanolo
sumber
terima kasih atas jawabannya tetapi sayangnya tidak ada yang berfungsi di situs web ini w3schools
yoyo_fun
Coba yang terakhir:, SELECT sqlite_version()dan Anda akan mendapat jawaban.
joanolo
1
Sepertinya versi yang mereka miliki benar- benar berjalan di browser Anda . Lihatlah github.com/kripken/sql.js
joanolo
apakah ada cara untuk memastikan hal ini terjadi? Apakah versi SQL dalam browser ini memiliki cara untuk memeriksa versinya atau yang sebenarnya adalah mesin SQL ini?
yoyo_fun
7

Editor SQL online ini menggunakan Database SQL Web , yang berarti SQL tertanam di browser. Sangat mudah untuk mengenali jika Anda melihat kode sumber JS mereka di http://www.w3schools.com/w3Database.js dan membandingkan panggilan API ke spesifikasi W3C dari Web SQL, misalnya bagaimana mereka membuka database:

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

Jadi tidak ada server database, itu benar-benar browser yang mengeksekusi SQL, dengan mesin SQL yang dipilih browser Anda untuk digunakan (dengan asumsi ia memiliki kemampuan SQL untuk memulai), yang sqlitesangat masuk akal.

(EDIT: tidak sepenuhnya benar karena menurut jawaban Martin Smith , kode pengiriman JS jatuh kembali ke mesin MS-Jet sisi-server ketika browser tidak mendukung Web SQL).

Perhatikan bahwa W3C telah memutuskan untuk meninggalkan konsep browser SQL-in-the pada tahun 2010, sekarang sudah usang.

Daniel Vérité
sumber
Tahukah Anda mengapa mereka mengambil keputusan ini? Apakah ada perbedaan antara SQL di browser dan SQLite?
yoyo_fun
@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database memiliki beberapa petunjuk. Atau Anda dapat mengajukan ini sebagai pertanyaan independen di dba.se
Daniel Vérité
ini memang ide yang sangat bagus :)
yoyo_fun
5

Seperti yang dinyatakan dalam jawaban lain itu tergantung pada browser Anda.

Jika browser Anda tidak memiliki dukungan asli untuk Web SQL Database, maka akhirnya mengirimkan kembali ke server.

masukkan deskripsi gambar di sini

Ini menggunakan Jet seperti yang bisa dilihat dengan menjalankan

SELECT X FROM Foobar

Mesin basis data Microsoft Jet tidak dapat menemukan tabel input atau kueri 'Foobar'. Pastikan itu ada dan namanya dieja dengan benar.

yang berarti ekstensi Access milik seperti TRANSFORMbekerja ketika mengakses halaman dari Firefox (tetapi ini akan gagal di Chrome)

masukkan deskripsi gambar di sini

Martin Smith
sumber
Terima kasih atas jawaban terinci. Bisakah Anda memberi tahu saya bagaimana Anda mendapatkan tangkapan layar pertama? Apa editor yang Anda gunakan? Apakah ekstensi untuk peramban web?
yoyo_fun
@yoyo_fun alat pengembang yang terpasang di Firefox
Martin Smith
3

Jawaban ini diberikan sebelum OP menambahkan referensi ke w3schools.com


Jika Anda dapat menjalankan kueri, mulailah dengan ini:

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     
David Markודו Markovitz
sumber
thansk tapi sayangnya perintahnya tidak berfungsi di situs w3schools dan lainnya. alamatnya adalah www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun
1
Silakan juga coba Sqlite
David דודו Markovitz
Sqlite. Periksa jawaban yang diperbarui
David Markודו Markovitz
Markovits hasil menjalankan perintah "select sqlite_version ()" adalah "Fungsi undefined 'sqlite_version' dalam ekspresi."
yoyo_fun
1
(Jawabannya tergantung pada browser)
joanolo
2

Untuk kasus spesifik dari mesin SQL yang digunakan oleh halaman di W3Schools :

Safari, Chrome dan Opera Browser

Jika Anda menggunakan Safari Browser (saya uji pada Mac OS X 10.12) halaman tersebut menggunakan SQLite, yang tampaknya dibangun ke dalam browser itu sendiri. Ketika Anda menekan tombol "Run SQL", itu tidak menggunakan sumber daya eksternal apa pun. Teknik reverse lebih lanjut mengungkapkan bahwa halaman ini menginisialisasi database dengan menggunakan kode JavaScript berikut:

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

window.openDatabaseberarti kode menggunakan Database SQL Web . Ini didefinisikan oleh W3C beberapa tahun yang lalu, dan dipraktikkan oleh Opera, Safari dan Chrome (AFAIK), tetapi tidak oleh FireFox (atau Explorer). Ketiga browser tampaknya telah menerapkan "Web SQL Database" dengan menyematkan berbagai versi SQLite di dalam diri mereka.

Pada titik ini, halaman W3C mengklaim:

"Hati-hati. Spesifikasi ini tidak lagi dalam pemeliharaan aktif dan Kelompok Kerja Aplikasi Web tidak bermaksud untuk mempertahankannya lebih lanjut."

Saya menguji browser Chrome (versi 56.0.2924.87, pada Windows 10), dan sepertinya menggunakan SQLite 3.10.2. Opera (versi 12.15, pada Windows 10), menggunakan SQLite 3.7.9.

Opera cukup jelas dalam "tentang" mereka:

masukkan deskripsi gambar di sini

Dan Panduan Pemrograman Aplikasi Penyimpanan Sisi Klien dan Offline juga menyebutkan hal itu

Dimulai pada Safari 3.1 dan iOS 2.0, Safari mendukung kelas basis data JavaScript HTML5 Kelas basis data JavaScript, berdasarkan SQLite, menyediakan basis data relasional yang ditujukan untuk penyimpanan konten lokal yang terlalu besar untuk dengan mudah disimpan dalam cookie (atau terlalu penting untuk berisiko secara tidak sengaja menghapus ketika pengguna menghapus cookie-nya).

Saya tidak melihat ke Chrome ... tapi dugaan saya jelas.

FireFox, Edge, dan Internet Jelajahi Browser

Jika Anda menggunakan browser FireFox (saya diuji pada Mac OS X 10.12); halaman W3School yang sama berperilaku dengan cara yang sangat berbeda. Itu tidak melakukan permintaan pada browser , tetapi mengirimkan permintaan ke server mereka . Di sisi server, saya pikir sebenarnya menggunakan MS Access seperti database. Salah satu cara untuk memeriksanya adalah dengan memeriksa (standar) information_schema.

Jika Anda mengeluarkan kueri berikut (yang, dalam database yang sesuai standar akan memberikan daftar tabel yang dapat diakses oleh pengguna):

SELECT * FROM information_schema.tables;

Anda mendapatkan respons kesalahan berikut (terlalu jelas) :

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

Jika perangkat lunak mencari file .MDB, itu berarti mereka menggunakan Microsoft Jet Database Engine (atau sesuatu yang setara) di sisi server, dan mereka menggunakan file format Access .MDB , yang terkait dengan versi Access hingga dan termasuk 2003. (Access 2007 dan versi yang lebih baru menggunakan, secara default, file berformat .ACCDB).

Microsoft Internet Explorer 11 berperilaku dengan cara yang sama (pada Windows 10); dan begitu pula Edge (pada Windows 10).

joanolo
sumber