Como verificar em que Mecanismo de Banco de Dados está instalado no servidor DataBase em que tenho acesso para executar consultas?

11

Quero verificar que tipo de sql está sendo executado em um servidor Datasase que eu possa acessar. Eu só tenho acesso a uma interface da web e uma lista de tabelas.

Através da interface, posso executar consultas nas tabelas que estão presentes em uma lista.

Como posso obter mais informações sobre o servidor e a versão que o servidor está executando? Não faço ideia do IP ou da porta que o servidor está executando.

Quero saber se o servidor é MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL ou outro servidor sql.

O site do qual estou falando é este: editor SQL do w3schools.com .

EDIT 2: embora para alguns o comando select sqlite_version () funcione para mim, não funcione. Esta é a captura de tela da resposta.

insira a descrição da imagem aqui

EDIT 3: No navegador Chromium, o comando está funcionando corretamente. No entanto, no Firefox Browser, o comando não funcionou.

Menciono também que estou executando o Linux.

O que você acha que poderia ser a razão pela qual no Firefox e no Chrome recebo resultados diferentes?

yoyo_fun
fonte
Você pode executar uma consulta?
David Markovitz
@DuduMarkovitz Sim, eu posso executar consultas.
11286 Yoyo_fun
O fato de esta declaração funcionar para alguns e não para outros parece sugerir que o ambiente específico é importante. Provavelmente, @joanolo estava certo quando disse que essas consultas são executadas no navegador. Pessoas diferentes usam navegadores diferentes, alguns possivelmente com extensões adicionais instaladas.
187 Andriy M
2
"Função indefinida na expressão." é uma mensagem de erro Access para parece que do lado do servidor que eles estão usando Jet
Martin Smith
@MartinSmith O que é o Jet neste contexto? Onde posso ler mais sobre isso?
yoyo_fun

Respostas:

15

Presumo que sua interface da web permita emitir comandos SQL. Nesse caso, você pode usar:

SELECT version();

PostgreSQL

Se você estiver em um banco de dados PostgreSQL , receberá uma resposta semelhante 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 você estiver em um banco de dados MySQL , a resposta parece

5.7.12-log

Oráculo

Se você estiver em um banco de dados Oracle , receberá uma mensagem de erro:

ORA-00923: FROM keyword not found where expected

(O ORA-xxxx informa que você está no Oracle). Para descobrir qual versão específica, tente:

SELECT banner as "oracle version" from v$version

Você receberá uma resposta 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

Se você estiver no MS SQL Server , a resposta também será um erro e será semelhante a:

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

Nesse caso, você pode tentar:

SELECT @@version ;

E você receberá, como resposta, algo parecido com:

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 você estiver em um banco de dados SQLite , receberá uma mensagem de erro ao tentar SELECT version():

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

Nesse caso, você pode tentar:

 SELECT sqlite_version()

E a resposta será semelhante a:

3.14.0
joanolo
fonte
Obrigado pela resposta, mas infelizmente obras Nada neste site w3schools
yoyo_fun
Experimente o último:, SELECT sqlite_version()e você terá sua resposta.
joanolo
11
Parece que a versão que eles executaram completamente no seu navegador . Veja github.com/kripken/sql.js
joanolo
existe alguma maneira de garantir que este seja o caso. Essa versão do navegador da linguagem SQL tem alguma maneira de verificar sua versão ou que é realmente esse mecanismo SQL?
yoyo_fun
7

Este editor de SQL online usa o Web SQL Database , significando SQL incorporado no navegador. É fácil reconhecer se você observar o código-fonte JS em http://www.w3schools.com/w3Database.js e comparar as chamadas de API com a especificação W3C do Web SQL, por exemplo, como elas abrem o banco de dados:

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

Portanto, não há servidor de banco de dados, é realmente o navegador que executa o SQL, com o mecanismo SQL que seu navegador optou por usar (supondo que ele tenha o recurso SQL para começar), para o qual sqlite faz muito sentido.

(EDIT: não é estritamente verdade porque, de acordo com a resposta de Martin Smith , o código de envio JS volta para um mecanismo MS-Jet do servidor quando o navegador não suporta Web SQL).

Observe que o W3C decidiu abandonar o conceito de navegador SQL-in-the em 2010, agora está obsoleto.

Daniel Vérité
fonte
você sabe por que eles tomaram essa decisão? Existe alguma diferença entre o SQL no navegador e o SQLite?
2191717
@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database possui algumas dicas. Ou você poderia pedir isso como uma questão independente num dba.se
Daniel Vérité
esta é uma idéia muito boa, na verdade :)
yoyo_fun
5

Como indicado nas outras respostas, isso depende do seu navegador.

Se o seu navegador não tiver suporte nativo para o Web SQL Database, ele acabará enviando de volta ao servidor.

insira a descrição da imagem aqui

Isso usa o Jet, como pode ser visto executando

SELECT X FROM Foobar

O mecanismo de banco de dados Microsoft Jet não pode encontrar a tabela de entrada ou consultar 'Foobar'. Verifique se ele existe e se o nome está escrito corretamente.

o que significa extensões de acesso proprietárias, como TRANSFORMtrabalho ao acessar a página do Firefox (mas isso falhará no Chrome)

insira a descrição da imagem aqui

Martin Smith
fonte
Obrigado pela resposta detalhada. Você pode me dizer como conseguiu a primeira captura de tela? Qual é o editor que você está usando? É uma extensão para um navegador da web?
yoyo_fun
@yoyo_fun as ferramentas de desenvolvimento integrada do Firefox
Martin Smith
3

Essa resposta foi dada antes do OP adicionar uma referência a w3schools.com


Se você pode executar uma consulta, comece com isto:

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
fonte
thansk, mas infelizmente os comandos não funcionam no site w3schools e outros. o endereço é www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun
11
Tente também
Sqlite
Sqlite. Verifique a resposta atualizada
David Markודו Markovitz
Markovits o resultado da execução do comando "select sqlite_version ()" é "Função indefinida 'sqlite_version' na expressão".
yoyo_fun
11
(A resposta depende do navegador)
joanolo
2

Para o caso específico do mecanismo SQL usado pela página no W3Schools :

Navegadores Safari, Chrome e Opera

Se você usa o navegador Safari (testei no Mac OS X 10.12), a página está usando SQLite, que parece estar embutido no próprio navegador. Quando você pressiona o botão "Executar SQL", ele não usa nenhum recurso externo. A engenharia reversa adicional revela que a página está inicializando o banco de dados por meio do seguinte código JavaScript:

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

window.openDatabasesignifica que o código está usando um banco de dados SQL da Web . Isso foi definido pelo W3C há alguns anos e foi posto em prática pelo Opera, Safari e Chrome (AFAIK), mas não pelo FireFox (ou Explorer). Todos os três navegadores parecem ter implementado o "Web SQL Database" incorporando versões diferentes do SQLite dentro de si.

Neste ponto, a página W3C afirma:

"Cuidado. Esta especificação não está mais em manutenção ativa e o Grupo de Trabalho de Aplicativos da Web não pretende mantê-la ainda mais."

Testei um navegador Chrome (versão 56.0.2924.87, no Windows 10) e parece usar o SQLite 3.10.2. O Opera (versão 12.15, no Windows 10), usa o SQLite 3.7.9.

O Opera é claro o suficiente em seu "sobre":

insira a descrição da imagem aqui

O Guia de Programação de Aplicativos Offline e Armazenamento do Cliente Safari do Safari também menciona que

A partir do Safari 3.1 e iOS 2.0, o Safari suporta a classe de banco de dados JavaScript HTML5 A classe de banco de dados JavaScript, baseada em SQLite, fornece um banco de dados relacional destinado ao armazenamento local de conteúdo que é muito grande para armazenar convenientemente em cookies (ou é muito importante para arriscar) excluir acidentalmente quando o usuário limpa seus cookies).

Eu não procurei no Chrome ... mas meu palpite é claro.

Navegadores do FireFox, Edge e Internet Explore

Se você usa o navegador FireFox (testei no Mac OS X 10.12); a mesma página do W3School se comporta de uma maneira radicalmente diferente. Ele não realiza as consultas no navegador , mas envia solicitações para o servidor . No lado do servidor, acho que está realmente usando um banco de dados do MS Access . Uma maneira de verificar isso é verificando o (padrão) information_schema.

Se você emitir a seguinte consulta (que, em um banco de dados compatível com os padrões, forneceria a lista de tabelas acessíveis ao usuário):

SELECT * FROM information_schema.tables;

Você recebe a seguinte resposta de erro (também reveladora) :

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

Se o software estiver procurando por um arquivo .MDB, significa que eles estão usando o Microsoft Jet Database Engine (ou algo equivalente) no lado do servidor e estão usando arquivos no formato .MDB do Access , que correspondem às versões do Access até e incluindo 2003. (O Access 2007 e versões posteriores usam, por padrão, arquivos no formato .ACCDB).

O Microsoft Internet Explorer 11 se comporta da mesma maneira (no Windows 10); e o Edge também (no Windows 10).

joanolo
fonte