Ich möchte überprüfen, welcher SQL-Typ auf einem Datenbankserver ausgeführt wird, auf den ich zugreifen kann. Ich habe nur Zugriff auf eine Weboberfläche und eine Liste von Tabellen.
Über die Schnittstelle kann ich Abfragen für die Tabellen ausführen, die in einer Liste vorhanden sind.
Wie kann ich weitere Informationen über den Server und die Version erhalten, auf der der Server ausgeführt wird? Ich habe keine Ahnung von der IP oder dem PORT, auf dem der Server ausgeführt wird.
Ich möchte wissen, ob der Server MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL oder ein anderer SQL Server ist.
Die Website, über die ich spreche, ist diese: w3schools.com SQL Editor .
EDIT 2: Obwohl für einige der Befehl select sqlite_version () für mich funktioniert, funktioniert es nicht. Dies ist der Screenshot der Antwort.
EDIT 3: Im Chromium Browser funktioniert der Befehl ordnungsgemäß. Im Firefox-Browser funktionierte der Befehl jedoch nicht.
Ich erwähne auch, dass ich Linux verwende.
Was könnte Ihrer Meinung nach der Grund sein, warum ich bei Firefox und Chrome unterschiedliche Ergebnisse erhalte?
quelle
Antworten:
Ich gehe davon aus, dass Sie über Ihre Weboberfläche SQL-Befehle ausgeben können. Wenn ja, können Sie verwenden:
PostgreSQL
Wenn Sie sich in einer PostgreSQL- Datenbank befinden, erhalten Sie eine ähnliche Antwort wie
MySQL
Wenn Sie sich in einer MySQL- Datenbank befinden, sieht die Antwort so aus
Orakel
Wenn Sie sich in einer Oracle- Datenbank befinden, wird eine Fehlermeldung angezeigt:
(Der ORA-xxxx sagt Ihnen, dass Sie auf Oracle sind). Um herauszufinden, welche Version es gibt, versuchen Sie:
Sie erhalten eine Antwort wie:
Microsoft SQL Server
Wenn Sie mit MS SQL Server arbeiten , ist die Antwort ebenfalls ein Fehler und sieht folgendermaßen aus:
In diesem Fall können Sie Folgendes versuchen:
Als Antwort erhalten Sie Folgendes:
SQLite
Wenn Sie sich in einer SQLite- Datenbank befinden, wird beim Versuch Folgendes angezeigt
SELECT version()
:In diesem Fall können Sie Folgendes versuchen:
Und die Antwort wird so aussehen:
quelle
SELECT sqlite_version()
und Sie haben Ihre Antwort.Dieser Online-SQL-Editor verwendet die Web-SQL-Datenbank , dh SQL, das in den Browser eingebettet ist. Es ist leicht zu erkennen, wenn Sie sich den JS-Quellcode unter http://www.w3schools.com/w3Database.js ansehen und die API-Aufrufe mit der W3C-Spezifikation von Web SQL vergleichen, z. B. wie sie die Datenbank öffnen:
Es gibt also keinen Datenbankserver, es ist wirklich der Browser, der das SQL ausführt, mit der SQL-Engine, die Ihr Browser verwendet hat (vorausgesetzt, er verfügt zunächst über die SQL-Fähigkeit), was
sqlite
sehr sinnvoll ist.(BEARBEITEN: Nicht unbedingt zutreffend, da laut der Antwort von Martin Smith der JS-Übermittlungscode auf eine serverseitige MS-Jet-Engine zurückgreift, wenn der Browser Web SQL nicht unterstützt.)
Beachten Sie, dass das W3C beschlossen hat, das SQL-in-the-Browser-Konzept im Jahr 2010 aufzugeben. Es ist jetzt veraltet.
quelle
Wie in den anderen Antworten angegeben, hängt dies von Ihrem Browser ab.
Wenn Ihr Browser keine native Unterstützung für die Web SQL-Datenbank bietet, wird er am Ende an den Server zurückgesendet.
Dies verwendet Jet, wie man beim Laufen sehen kann
TRANSFORM
Dies bedeutet, dass proprietäre Access-Erweiterungen wie die Arbeit beim Zugriff auf die Seite von Firefox aus funktionieren (dies schlägt jedoch in Chrome fehl).quelle
Diese Antwort wurde gegeben, bevor das OP einen Verweis auf w3schools.com hinzufügte
Wenn Sie eine Abfrage ausführen können, beginnen Sie damit:
quelle
Für den speziellen Fall der SQL-Engine, die von der Seite bei W3Schools verwendet wird :
Safari-, Chrome- und Opera-Browser
Wenn Sie den Safari-Browser verwenden (ich habe ihn unter Mac OS X 10.12 getestet), verwendet die Seite SQLite, das anscheinend in den Browser selbst integriert ist. Wenn Sie die „Run SQL“ Taste drücken, es nicht jede externe Ressource verwenden. Weiteres Reverse Engineering zeigt, dass die Seite die Datenbank mithilfe des folgenden JavaScript-Codes initialisiert:
window.openDatabase
bedeutet, dass der Code eine Web SQL-Datenbank verwendet . Dies wurde vor einigen Jahren vom W3C definiert und von Opera, Safari und Chrome (AFAIK) in die Praxis umgesetzt, nicht jedoch von FireFox (oder Explorer). Alle drei Browser scheinen die "Web SQL-Datenbank" implementiert zu haben, indem sie verschiedene Versionen von SQLite in sich selbst eingebettet haben.An dieser Stelle behauptet die W3C-Seite:
Ich habe einen Chrome- Browser (Version 56.0.2924.87 unter Windows 10) getestet und er scheint SQLite 3.10.2 zu verwenden. Opera (Version 12.15 unter Windows 10) verwendet SQLite 3.7.9.
Opera ist klar genug in ihrem "Über":
Das Programmierhandbuch für clientseitige Safari-Speicher- und Offline-Anwendungen erwähnt dies ebenfalls
Ich habe nicht in Chrome geschaut ... aber meine Vermutung ist klar.
Browser für FireFox, Edge und Internet Explore
Wenn Sie den FireFox-Browser verwenden (ich habe ihn unter Mac OS X 10.12 getestet); Dieselbe W3School-Seite verhält sich radikal anders. Die Abfragen werden nicht im Browser ausgeführt , sondern es werden Anforderungen an den Server gesendet . Auf der Serverseite denke ich, dass tatsächlich eine MS Access- Datenbank verwendet wird. Eine Möglichkeit, dies zu überprüfen, besteht darin, den (Standard) zu überprüfen
information_schema
.Wenn Sie die folgende Abfrage ausgeben (die in einer standardkonformen Datenbank die Liste der Tabellen enthält, auf die der Benutzer zugreifen kann):
Sie erhalten die folgende (zu aussagekräftige) Fehlerantwort :
Wenn die Software nach einer MDB-Datei sucht, bedeutet dies, dass sie das Microsoft Jet-Datenbankmodul (oder etwas Ähnliches) auf der Serverseite verwendet und Dateien im Access .MDB-Format verwendet , die Access-Versionen bis und entsprechen einschließlich 2003. (Access 2007 und spätere Versionen verwenden standardmäßig Dateien im ACCDB-Format).
Microsoft Internet Explorer 11 verhält sich genauso (unter Windows 10). und Edge auch (unter Windows 10).
quelle