Come verificare su quale Motore di database è installato sul server DataBase su cui ho accesso per eseguire query?


11

Voglio verificare a quale tipo di sql è in esecuzione su un server Datasase a cui posso accedere. Ho solo accesso a un'interfaccia web e un elenco di tabelle.

Tramite l'interfaccia posso eseguire query sulle tabelle presenti in un elenco.

Come posso ottenere maggiori informazioni sul server e sulla versione su cui è in esecuzione il server. Non ho idea dell'IP o della PORTA che il server è in esecuzione.

Voglio sapere se il server è MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL o altri server SQL.

Il sito Web di cui sto parlando è questo: editor SQL w3schools.com .

EDIT 2: sebbene per alcuni il comando select sqlite_version () funzioni per me non funziona. Questo è lo screenshot della risposta.

inserisci qui la descrizione dell'immagine

EDIT 3: su Chromium Browser il comando funziona correttamente. Tuttavia, nel browser Firefox il comando non ha funzionato.

Cito anche che sto usando Linux.

Quale pensi possa essere il motivo per cui su Firefox e su Chrome ottengo risultati diversi?


Puoi eseguire una query?
David Markודו Markovitz,

@DuduMarkovitz Sì, posso eseguire query.
yoyo_fun,

Il fatto che questa affermazione funzioni per alcuni e non per altri sembra suggerire che l'ambiente specifico sia importante. Probabilmente @joanolo aveva ragione quando ha detto che queste query venivano eseguite nel browser. Persone diverse usano browser diversi, alcuni eventualmente con estensioni aggiuntive installate.
Andriy M,

2
"Funzione indefinita nell'espressione." è un messaggio di errore di Access, quindi sembra che sul lato server stiano usando Jet
Martin Smith l'

@MartinSmith Che cos'è Jet in questo contesto? Dove posso leggere di più al riguardo?
yoyo_fun,

Risposte:


15

Presumo che la tua interfaccia web ti permetta di emettere comandi SQL. In tal caso, puoi utilizzare:

SELECT version();

PostgreSQL

Se ci si trova in un database PostgreSQL , si ottiene una risposta simile a

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

Se sei su un database MySQL , la risposta è simile

5.7.12-log

Oracolo

Se si utilizza un database Oracle , verrà visualizzato un messaggio di errore:

ORA-00923: FROM keyword not found where expected

(ORA-xxxx ti dice che sei su Oracle). Per scoprire quale versione specifica, prova:

SELECT banner as "oracle version" from v$version

Riceverai una risposta come:

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

Se sei su MS SQL Server , anche la risposta sarà un errore e assomiglierà a:

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

In tal caso, puoi provare:

SELECT @@version ;

E otterrai come risposta qualcosa di simile:

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

Se ti trovi in ​​un database SQLite , riceverai un messaggio di errore quando provi SELECT version():

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

In tal caso, puoi provare:

 SELECT sqlite_version()

E la risposta sarà simile a:

3.14.0

grazie per la risposta ma purtroppo non funziona nulla su questo sito Web w3schools
yoyo_fun

Prova l'ultimo: SELECT sqlite_version()e avrai la tua risposta.
joanolo,

1
Sembra che la versione che hanno effettivamente eseguito completamente sul tuo browser . Guarda github.com/kripken/sql.js
joanolo l'

c'è un modo per assicurarsi che sia così. Questa versione del linguaggio SQL nel browser ha qualche modo di controllarne la versione o che in realtà è questo motore SQL?
yoyo_fun,

7

Questo editor SQL online utilizza il database SQL Web , ovvero SQL incorporato nel browser. È facile riconoscere se si guarda il loro codice sorgente JS su http://www.w3schools.com/w3Database.js e si confrontano le chiamate API con le specifiche W3C di Web SQL, ad esempio come aprono il database:

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

Quindi non esiste un server di database, è davvero il browser che esegue l'SQL, con il motore SQL che il browser ha scelto di utilizzare (supponendo che abbia la capacità SQL per iniziare), per cui sqliteha molto senso.

(EDIT: non strettamente vero perché secondo la risposta di Martin Smith , il codice di invio JS ricade su un motore MS-Jet sul lato server quando il browser non supporta Web SQL).

Si noti che il W3C ha deciso di abbandonare il concetto SQL-in-the-browser nel 2010, ora è obsoleto.


sai perché hanno preso questa decisione? C'è qualche differenza tra SQL nel browser e SQLite?
yoyo_fun,

@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database ha alcuni suggerimenti. Oppure potresti fare una domanda indipendente su dba.se
Daniel Vérité,

questa è davvero un'ottima idea :)
yoyo_fun

5

Come indicato nelle altre risposte, dipende dal tuo browser.

Se il tuo browser non ha il supporto nativo per il database SQL Web, finisce per inviare nuovamente al server.

inserisci qui la descrizione dell'immagine

Questo utilizza Jet come si può vedere eseguendo

SELECT X FROM Foobar

Il motore di database Microsoft Jet non è in grado di trovare la tabella di input o la query "Foobar". Assicurati che esista e che il suo nome sia stato digitato correttamente.

il che significa che estensioni di accesso proprietarie come TRANSFORMfunzionano quando si accede alla pagina da Firefox (ma ciò non funzionerà in Chrome)

inserisci qui la descrizione dell'immagine


Grazie per la risposta dettagliata Puoi dirmi come hai ottenuto il primo screenshot? Qual è l'editor che stai usando? È un'estensione per un browser web?
yoyo_fun,

@yoyo_fun gli strumenti di sviluppo integrati in Firefox
Martin Smith,

3

Questa risposta è stata data prima che l'OP aggiungesse un riferimento a w3schools.com


Se è possibile eseguire una query, iniziare con questo:

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     

grazie ma purtroppo i comandi non funzionano sul sito w3schools e altri. l'indirizzo è www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
Per favore, prova anche Sqlite
David, Markovitz,

SQLite. Controlla la risposta aggiornata
David Markו

Markovits il risultato dell'esecuzione del comando "select sqlite_version ()" è "Funzione non definita 'sqlite_version' in espressione".
yoyo_fun

1
(La risposta dipende dal browser)
joanolo,

2

Per il caso specifico del motore SQL utilizzato dalla pagina di W3Schools :

Browser Safari, Chrome e Opera

Se si utilizza Safari Browser (ho testato su Mac OS X 10.12) la pagina utilizza SQLite, che sembra essere integrato nel browser stesso. Quando si preme il pulsante "Esegui SQL", non utilizza alcuna risorsa esterna. Ulteriore ingegneria inversa rivela che la pagina sta inizializzando il database mediante il seguente codice JavaScript:

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

window.openDatabaseindica che il codice utilizza un database SQL Web . Questo è stato definito dal W3C alcuni anni fa e messo in pratica da Opera, Safari e Chrome (AFAIK), ma non da FireFox (o Explorer). Tutti e tre i browser sembrano aver implementato il "Database SQL Web" incorporando diverse versioni di SQLite al loro interno.

A questo punto, la pagina del W3C afferma:

"Attenzione. Questa specifica non riguarda più la manutenzione attiva e il gruppo di lavoro sulle applicazioni Web non intende mantenerla ulteriormente."

Ho testato un browser Chrome (versione 56.0.2924.87, su Windows 10) e sembra utilizzare SQLite 3.10.2. Opera (versione 12.15, su Windows 10), utilizza SQLite 3.7.9.

Opera è abbastanza chiara nel loro "circa":

inserisci qui la descrizione dell'immagine

E Safari sul lato client di stoccaggio e Offline Applications Programming Guide menziona anche che

A partire da Safari 3.1 e iOS 2.0, Safari supporta la classe di database JavaScript HTML5 La classe di database JavaScript, basata su SQLite, fornisce un database relazionale inteso per l'archiviazione locale di contenuti che è troppo grande per essere memorizzato comodamente nei cookie (o è troppo importante per rischiare cancellazione accidentale quando l'utente cancella i suoi cookie).

Non ho esaminato Chrome ... ma la mia ipotesi è chiara.

FireFox, Edge e Internet Explore Browser

Se usi il browser FireFox (ho testato su Mac OS X 10.12); la stessa pagina di W3School si comporta in modo radicalmente diverso. Non esegue le query sul browser , ma invia richieste al loro server . Sul lato server, penso che stia effettivamente utilizzando un database simile a MS Access . Un modo per verificarlo è controllando (standard) information_schema.

Se si emette la seguente query (che, in un database conforme agli standard, darebbe l'elenco di tabelle accessibili all'utente):

SELECT * FROM information_schema.tables;

Si ottiene la seguente (troppo significativa) risposta all'errore :

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

Se il software è alla ricerca di un file .MDB, significa che stanno utilizzando il Motore di database Microsoft Jet (o qualcosa di equivalente) sul lato server e stanno utilizzando i file di formato Access .MDB , che corrispondono alle versioni di Access fino a e incluso 2003. (Access 2007 e versioni successive utilizzano, per impostazione predefinita, file in formato .ACCDB).

Microsoft Internet Explorer 11 si comporta allo stesso modo (su Windows 10); e così fa Edge (su Windows 10).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.