¿Cómo verificar qué Motor de base de datos está instalado en el servidor DataBase al que tengo acceso para ejecutar consultas?


11

Quiero verificar qué tipo de sql se está ejecutando en un servidor Datasase al que puedo acceder. Solo tengo acceso a una interfaz web y una lista de tablas.

A través de la interfaz puedo ejecutar consultas en las tablas que están presentes en una lista.

¿Cómo puedo obtener más información sobre el servidor y la versión que el servidor está ejecutando? No tengo idea sobre la IP o el PUERTO que está ejecutando el servidor.

Quiero saber si el servidor es MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL u otro servidor sql.

El sitio web del que estoy hablando es este: el editor SQL w3schools.com .

EDIT 2: aunque para algunos el comando select sqlite_version () funciona para mí, no funciona. Esta es la captura de pantalla de la respuesta.

ingrese la descripción de la imagen aquí

EDITAR 3: en Chromium Browser, el comando funciona correctamente. Sin embargo, en el navegador Firefox el comando no funcionó.

También menciono que estoy ejecutando Linux.

¿Cuál crees que podría ser la razón por la cual en Firefox y en Chrome obtengo resultados diferentes?


¿Puedes ejecutar una consulta?
David דודו Markovitz

@DuduMarkovitz Sí, puedo ejecutar consultas.
yoyo_fun

El hecho de que esta declaración funcione para algunos y no para otros parece sugerir que el entorno específico importa. Probablemente @joanolo tenía razón cuando dijo que estas consultas se ejecutan en el navegador. Diferentes personas usan diferentes navegadores, algunos posiblemente con extensiones adicionales instaladas.
Andriy M

2
"Función indefinida en la expresión". es un mensaje de error de Access, por lo que parece ser del lado del servidor que están usando Jet
Martin Smith

@MartinSmith ¿Qué es Jet en este contexto? ¿Dónde puedo leer más al respecto?
yoyo_fun

Respuestas:


15

Supongo que su interfaz web le permite emitir comandos SQL. Si es así, puede usar:

SELECT version();

PostgreSQL

Si está en una base de datos PostgreSQL , obtendrá una respuesta similar 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

Si está en una base de datos MySQL , la respuesta se ve así

5.7.12-log

Oráculo

Si está en una base de datos Oracle , recibirá un mensaje de error:

ORA-00923: FROM keyword not found where expected

(El ORA-xxxx te dice que estás en Oracle). Para averiguar qué versión específica, intente:

SELECT banner as "oracle version" from v$version

Recibirá una respuesta como:

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 está en MS SQL Server , la respuesta también será un error y se verá así:

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

En ese caso, puedes probar:

SELECT @@version ;

Y obtendrá, como respuesta, algo parecido a:

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 está en una base de datos SQLite , recibirá un mensaje de error cuando intente SELECT version():

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

En ese caso, puedes probar:

 SELECT sqlite_version()

Y la respuesta se verá así:

3.14.0

gracias por la respuesta pero desafortunadamente nada funciona en este sitio web w3schools
yoyo_fun

Pruebe el último: SELECT sqlite_version()y tendrá su respuesta.
joanolo

1
Parece que la versión que realmente tienen se ejecuta completamente en su navegador . Mira github.com/kripken/sql.js
joanolo

¿Hay alguna manera de asegurarse de que este sea el caso? ¿Esta versión del lenguaje SQL en el navegador tiene alguna forma de verificar su versión o de hecho es este motor SQL?
yoyo_fun

7

Este editor de SQL en línea utiliza la base de datos Web SQL , lo que significa SQL incorporado en el navegador. Es fácil de reconocer si observa su código fuente JS en http://www.w3schools.com/w3Database.js y compara las llamadas API con la especificación W3C de Web SQL, por ejemplo, cómo abren la base de datos:

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

Entonces, no hay un servidor de base de datos, es realmente el navegador el que ejecuta el SQL, con el motor SQL que su navegador ha elegido usar (suponiendo que tenga la capacidad de SQL para comenzar), para lo cual sqlitetiene mucho sentido.

(EDITAR: no es estrictamente cierto porque de acuerdo con la respuesta de Martin Smith , el código de envío JS recurre a un motor MS-Jet del lado del servidor cuando el navegador no admite Web SQL).

Tenga en cuenta que el W3C ha decidido abandonar el concepto de navegador SQL-in-the en 2010, ahora está obsoleto.


¿Sabes por qué tomaron esta decisión? ¿Hay alguna diferencia entre SQL en el navegador y SQLite?
yoyo_fun

@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database tiene algunos punteros. O puede hacer esto como una pregunta independiente en dba.se
Daniel Vérité

esta es una muy buena idea de hecho :)
yoyo_fun

5

Como se indica en las otras respuestas, depende de su navegador.

Si su navegador no tiene soporte nativo para la base de datos Web SQL, entonces termina enviándose nuevamente al servidor.

ingrese la descripción de la imagen aquí

Esto usa Jet como se puede ver al ejecutar

SELECT X FROM Foobar

El motor de base de datos Microsoft Jet no puede encontrar la tabla de entrada o la consulta 'Foobar'. Asegúrese de que exista y de que su nombre esté escrito correctamente.

lo que significa extensiones de acceso patentadas como el TRANSFORMtrabajo al acceder a la página desde Firefox (pero esto fallará en Chrome)

ingrese la descripción de la imagen aquí


Gracias por la respuesta detallada. ¿Puedes decirme cómo obtuviste la primera captura de pantalla? ¿Cuál es el editor que estás usando? ¿Es una extensión para un navegador web?
yoyo_fun

@yoyo_fun las herramientas de desarrollador integradas en Firefox
Martin Smith

3

Esta respuesta se dio antes de que el OP agregara una referencia a w3schools.com


Si puede ejecutar una consulta, comience con esto:

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     

thansk pero desafortunadamente los comandos no funcionan en el sitio w3schools y otros. la dirección es www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
Por favor, también intente Sqlite
David דודו Markovitz

Sqlite Compruebe la respuesta actualizada
David דודו Markovitz

Markovits el resultado de ejecutar el comando "select sqlite_version ()" es "Función indefinida 'sqlite_version' en expresión".
yoyo_fun

1
(La respuesta depende del navegador)
joanolo

2

Para el caso específico del motor SQL utilizado por la página en W3Schools :

Navegadores Safari, Chrome y Opera

Si usa el navegador Safari (lo probé en Mac OS X 10.12), la página está usando SQLite, que parece estar integrado en el navegador. Cuando presiona el botón "Ejecutar SQL", no utiliza ningún recurso externo. La ingeniería inversa adicional revela que la página está inicializando la base de datos mediante el siguiente código JavaScript:

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

window.openDatabasesignifica que el código está usando una base de datos Web SQL . Esto fue definido por el W3C hace unos años, y fue puesto en práctica por Opera, Safari y Chrome (AFAIK), pero no por FireFox (o Explorer). Los tres navegadores parecen haber implementado la "Base de datos Web SQL" al incorporar diferentes versiones de SQLite dentro de ellos mismos.

En este punto, la página del W3C afirma:

"Cuidado. Esta especificación ya no se encuentra en mantenimiento activo y el Grupo de Trabajo de Aplicaciones Web no tiene la intención de mantenerla más".

Probé un navegador Chrome (versión 56.0.2924.87, en Windows 10), y parece que usa SQLite 3.10.2. Opera (versión 12.15, en Windows 10), utiliza SQLite 3.7.9.

Opera es lo suficientemente claro en su "acerca de":

ingrese la descripción de la imagen aquí

Y la Guía de programación de aplicaciones fuera de línea y almacenamiento del lado del cliente de Safari también menciona que

A partir de Safari 3.1 e iOS 2.0, Safari admite la clase de base de datos HTML5 HTML5 La clase de base de datos JavaScript, basada en SQLite, proporciona una base de datos relacional destinada al almacenamiento local de contenido que es demasiado grande para almacenar convenientemente en cookies (o es demasiado importante para arriesgarse) eliminar accidentalmente cuando el usuario borra sus cookies).

No busqué en Chrome ... pero mi suposición es clara.

Firefox, Edge e Internet exploran los navegadores

Si usa el navegador Firefox (lo probé en Mac OS X 10.12); la misma página de W3School se comporta de una manera radicalmente diferente. No realiza las consultas en el navegador , pero envía solicitudes a su servidor . En el lado del servidor, creo que en realidad está usando una base de datos de MS Access . Una forma de verificarlo es verificando el (estándar) information_schema.

Si emite la siguiente consulta (que, en una base de datos compatible con los estándares, daría la lista de tablas accesibles para el usuario):

SELECT * FROM information_schema.tables;

Obtiene la siguiente respuesta de error (demasiado reveladora) :

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

Si el software está buscando un archivo .MDB, eso significa que están usando el motor de base de datos Microsoft Jet (o algo equivalente) en el lado del servidor, y están usando archivos de formato Access .MDB , que corresponden a versiones de Access hasta y incluido 2003. (Access 2007 y versiones posteriores usan, por defecto, archivos de formato .ACCDB).

Microsoft Internet Explorer 11 se comporta de la misma manera (en Windows 10); y también Edge (en Windows 10).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.