Comment vérifier sur quel moteur de base de données est installé le serveur DataBase sur lequel j'ai accès pour exécuter des requêtes?

11

Je veux vérifier à quel type de sql s'exécute un serveur Datasase auquel je peux accéder. Je n'ai accès qu'à une interface web et à une liste de tableaux.

Grâce à l'interface, je peux exécuter des requêtes sur les tables présentes dans une liste.

Comment puis-je obtenir plus d'informations sur le serveur et la version qu'il exécute? Je n'ai aucune idée de l'IP ou du PORT que le serveur exécute.

Je veux savoir si le serveur est MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL ou un autre serveur SQL.

Le site Web dont je parle est celui-ci: l' éditeur SQL de w3schools.com .

EDIT 2: bien que pour certains, la commande select sqlite_version () fonctionne pour moi, cela ne fonctionne pas. Ceci est la capture d'écran de la réponse.

entrez la description de l'image ici

EDIT 3: Sur le navigateur Chromium, la commande fonctionne correctement. Cependant, sur le navigateur Firefox, la commande n'a pas fonctionné.

Je mentionne également que j'utilise Linux.

Selon vous, quelle pourrait être la raison pour laquelle sur Firefox et sur Chrome j'obtiens des résultats différents?

yoyo_fun
la source
Pouvez-vous exécuter une requête?
David דודו Markovitz
@DuduMarkovitz Oui, je peux exécuter des requêtes.
yoyo_fun
Le fait que cette déclaration fonctionne pour certains et pas pour d'autres semble suggérer que l'environnement spécifique est important. @Joanolo avait probablement raison quand il a dit que ces requêtes s'exécutaient dans le navigateur. Différentes personnes utilisent différents navigateurs, certains avec éventuellement des extensions supplémentaires installées.
Andriy M
2
"Fonction non définie dans l'expression." est un message d'erreur d'accès et semble donc côté serveur, ils utilisent Jet
Martin Smith
@MartinSmith Qu'est-ce que Jet dans ce contexte? Où puis-je en savoir plus à ce sujet?
yoyo_fun

Réponses:

15

Je suppose que votre interface Web vous permet d'émettre des commandes SQL. Si oui, vous pouvez utiliser:

SELECT version();

PostgreSQL

Si vous êtes sur une base de données PostgreSQL , vous obtenez une réponse similaire à

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

Si vous êtes sur une base de données MySQL , la réponse ressemble à

5.7.12-log

Oracle

Si vous êtes sur une base de données Oracle , vous obtiendrez un message d'erreur:

ORA-00923: FROM keyword not found where expected

(L'ORA-xxxx vous indique que vous êtes sur Oracle). Pour savoir quelle version spécifique, essayez:

SELECT banner as "oracle version" from v$version

Vous obtiendrez une réponse comme:

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

Si vous utilisez MS SQL Server , la réponse sera également une erreur et ressemblera à:

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

Dans ce cas, vous pouvez essayer:

SELECT @@version ;

Et vous obtiendrez, en réponse, quelque chose ressemblant à:

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

Si vous êtes sur une base de données SQLite , vous obtiendrez un message d'erreur lorsque vous essayez SELECT version():

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

Dans ce cas, vous pouvez essayer:

 SELECT sqlite_version()

Et la réponse ressemblera à:

3.14.0
joanolo
la source
merci pour la réponse mais malheureusement rien ne fonctionne sur ce site w3schools
yoyo_fun
Essayez le dernier: SELECT sqlite_version()et vous aurez votre réponse.
joanolo
1
Il ressemble à la version qu'ils ont réellement complètement exécutée sur votre navigateur . Regardez github.com/kripken/sql.js
joanolo
existe-t-il un moyen de s'assurer que c'est le cas? Cette version dans le navigateur du langage SQL a-t-elle un moyen de vérifier sa version ou qui est en fait ce moteur SQL?
yoyo_fun
7

Cet éditeur SQL en ligne utilise la base de données Web SQL , ce qui signifie que SQL est intégré dans le navigateur. Il est facile de reconnaître si vous regardez leur code source JS sur http://www.w3schools.com/w3Database.js et comparez les appels d'API à la spécification W3C de Web SQL, par exemple comment ils ouvrent la base de données:

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

Il n'y a donc pas de serveur de base de données, c'est vraiment le navigateur qui exécute le SQL, avec le moteur SQL que votre navigateur a choisi d'utiliser (en supposant qu'il a la capacité SQL pour commencer), pour lequel sqlitecela a beaucoup de sens.

(EDIT: pas strictement vrai car selon la réponse de Martin Smith , le code de soumission JS retombe sur un moteur MS-Jet côté serveur lorsque le navigateur ne prend pas en charge Web SQL).

A noter que le W3C a décidé d'abandonner le concept SQL-in-the browser en 2010, il est désormais obsolète.

Daniel Vérité
la source
savez-vous pourquoi ils ont pris cette décision? Y a-t-il une différence entre SQL dans le navigateur et SQLite?
yoyo_fun
@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database a quelques pointeurs. Ou vous pouvez poser cette question en tant que question indépendante sur dba.se
Daniel Vérité
c'est une très bonne idée en effet :)
yoyo_fun
5

Comme indiqué dans les autres réponses, cela dépend de votre navigateur.

Si votre navigateur n'a pas de support natif pour Web SQL Database, il finit par se soumettre de nouveau au serveur.

entrez la description de l'image ici

Cela utilise Jet comme on peut le voir en exécutant

SELECT X FROM Foobar

Le moteur de base de données Microsoft Jet ne trouve pas la table d'entrée ou la requête «Foobar». Assurez-vous qu'il existe et que son nom est correctement orthographié.

ce qui signifie des extensions d'accès propriétaires comme le TRANSFORMtravail lors de l'accès à la page à partir de Firefox (mais cela échouera dans Chrome)

entrez la description de l'image ici

Martin Smith
la source
Merci pour la réponse détaillée. Pouvez-vous me dire comment avez-vous obtenu la première capture d'écran? Quel est l'éditeur que vous utilisez? Est-ce une extension pour un navigateur Web?
yoyo_fun
@yoyo_fun les outils de développement intégrés à Firefox
Martin Smith
3

Cette réponse a été donnée avant que le PO ajoute une référence à w3schools.com


Si vous pouvez exécuter une requête, commencez par ceci:

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 דודו Markovitz
la source
merci mais malheureusement les commandes ne fonctionnent pas sur le site w3schools et autres. l'adresse est www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun
1
Veuillez également essayer Sqlite
David דודו Markovitz
Sqlite. Vérifiez la réponse mise à jour
David דודו Markovitz
Markovits le résultat de l'exécution de la commande "select sqlite_version ()" est "Fonction non définie 'sqlite_version' dans l'expression."
yoyo_fun
1
(La réponse dépend du navigateur)
joanolo
2

Pour le cas spécifique du moteur SQL utilisé par la page de W3Schools :

Navigateurs Safari, Chrome et Opera

Si vous utilisez le navigateur Safari (j'ai testé sur Mac OS X 10.12), la page utilise SQLite, qui semble être intégré au navigateur lui-même. Lorsque vous appuyez sur le bouton "Exécuter SQL", il n'utilise aucune ressource externe. Une ingénierie inverse plus poussée révèle que la page initialise la base de données au moyen du code JavaScript suivant:

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

window.openDatabasesignifie que le code utilise une base de données Web SQL . Cela a été défini par le W3C il y a quelques années et mis en pratique par Opera, Safari et Chrome (AFAIK), mais pas par FireFox (ou Explorer). Les trois navigateurs semblent avoir implémenté la "base de données Web SQL" en incorporant différentes versions de SQLite en eux-mêmes.

À ce stade, la page W3C affirme:

"Attention. Cette spécification n'est plus en maintenance active et le groupe de travail sur les applications Web n'a pas l'intention de la maintenir plus loin."

J'ai testé un navigateur Chrome (version 56.0.2924.87, sur Windows 10), et il semble utiliser SQLite 3.10.2. Opera (version 12.15, sur Windows 10), utilise SQLite 3.7.9.

Opera est assez clair dans leur "à propos":

entrez la description de l'image ici

Et le Guide de programmation du stockage côté client et des applications hors ligne de Safari mentionne également que

À partir de Safari 3.1 et iOS 2.0, Safari prend en charge la classe de base de données JavaScript HTML5 La classe de base de données JavaScript, basée sur SQLite, fournit une base de données relationnelle destinée au stockage local de contenu qui est trop volumineux pour être stocké dans des cookies (ou est trop important pour risquer suppression accidentelle lorsque l'utilisateur efface ses cookies).

Je n'ai pas regardé dans Chrome ... mais ma supposition est claire.

Navigateurs FireFox, Edge et Internet Explore

Si vous utilisez le navigateur FireFox (j'ai testé sur Mac OS X 10.12); la même page W3School se comporte de manière radicalement différente. Il n'exécute pas les requêtes sur le navigateur , mais envoie des requêtes à leur serveur . Côté serveur, je pense qu'il utilise en fait une base de données MS Access . Une façon de le vérifier est de vérifier le (standard) information_schema.

Si vous émettez la requête suivante (qui, dans une base de données conforme aux normes, donnerait la liste des tables accessibles à l'utilisateur):

SELECT * FROM information_schema.tables;

Vous obtenez la réponse d'erreur suivante (trop révélatrice) :

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

Si le logiciel recherche un fichier .MDB, cela signifie qu'ils utilisent le moteur de base de données Microsoft Jet (ou quelque chose d'équivalent) côté serveur et qu'ils utilisent des fichiers au format Access .MDB , qui correspondent aux versions d'Access jusqu'à et y compris 2003. (Access 2007 et versions ultérieures utilisent, par défaut, des fichiers au format .ACCDB).

Microsoft Internet Explorer 11 se comporte de la même manière (sous Windows 10); ainsi que Edge (sur Windows 10).

joanolo
la source