Jak sprawdzić, jaki Aparat baz danych jest zainstalowany na serwerze DataBase, do którego mam dostęp, aby uruchamiać zapytania?


11

Chcę sprawdzić, jaki typ sql działa na serwerze bazy danych, do którego mam dostęp. Mam tylko dostęp do interfejsu internetowego i listy tabel.

Poprzez interfejs mogę uruchamiać zapytania dotyczące tabel znajdujących się na liście.

Jak mogę uzyskać więcej informacji o serwerze i wersji, na której działa serwer. Nie mam pojęcia o adresie IP lub PORT, który działa serwer.

Chcę wiedzieć, czy serwerem jest MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL lub inny serwer SQL.

Witryna, o której mówię, to ta: edytor SQL w3schools.com .

EDYCJA 2: chociaż dla niektórych polecenie select sqlite_version () działa dla mnie, nie działa. To jest zrzut ekranu odpowiedzi.

wprowadź opis zdjęcia tutaj

EDYCJA 3: W przeglądarce Chromium polecenie działa poprawnie. Jednak w przeglądarce Firefox polecenie nie działało.

Wspominam również, że korzystam z Linuksa.

Jak myślisz, co może być przyczyną różnych wyników w Firefoksie i Chrome?


Czy potrafisz uruchomić zapytanie?
David Markודו Markovitz

@DuduMarkovitz Tak, mogę prowadzić zapytania.
yoyo_fun

Fakt, że to stwierdzenie działa dla niektórych, a dla innych nie wydaje się sugerować, że ważne jest określone środowisko. Prawdopodobnie @joanolo miał rację, gdy powiedział, że te zapytania działają w przeglądarce. Różne osoby używają różnych przeglądarek, niektóre z zainstalowanymi dodatkowymi rozszerzeniami.
Andriy M

2
„Nieokreślona funkcja w wyrażeniu.” jest komunikatem o błędzie Access, więc wygląda na to, że po stronie serwera używają Jet
Martin Smith

@MartinSmith Co to jest Jet w tym kontekście? Gdzie mogę o tym przeczytać więcej?
yoyo_fun

Odpowiedzi:


15

Zakładam, że twój interfejs internetowy pozwala wydawać polecenia SQL. Jeśli tak, możesz użyć:

SELECT version();

PostgreSQL

Jeśli korzystasz z bazy danych PostgreSQL , otrzymasz odpowiedź podobną do

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

Jeśli korzystasz z bazy danych MySQL , odpowiedź wygląda następująco

5.7.12-log

Wyrocznia

Jeśli korzystasz z bazy danych Oracle , pojawi się komunikat o błędzie:

ORA-00923: FROM keyword not found where expected

(ORA-xxxx mówi ci, że korzystasz z Oracle). Aby dowiedzieć się, która konkretna wersja, spróbuj:

SELECT banner as "oracle version" from v$version

Otrzymasz odpowiedź w rodzaju:

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

Jeśli korzystasz z MS SQL Server , odpowiedź będzie również błędem i będzie wyglądać następująco:

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

W takim przypadku możesz spróbować:

SELECT @@version ;

W odpowiedzi otrzymasz coś w stylu:

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

Jeśli korzystasz z bazy danych SQLite , podczas próby SELECT version():

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

W takim przypadku możesz spróbować:

 SELECT sqlite_version()

Odpowiedź będzie wyglądać następująco:

3.14.0

dzięki za odpowiedź, ale niestety nic nie działa na tej stronie w3schools
yoyo_fun

Wypróbuj ostatnią:, SELECT sqlite_version()a otrzymasz odpowiedź.
joanolo

1
Wygląda na to, że wersja, którą faktycznie mają, działa w przeglądarce . Spójrz na github.com/kripken/sql.js
joanolo

czy jest jakiś sposób, aby upewnić się, że tak jest. Czy ta wersja języka SQL w przeglądarce ma jakiś sposób na sprawdzenie jego wersji, czy to w rzeczywistości ten silnik SQL?
yoyo_fun

7

Ten internetowy edytor SQL korzysta z internetowej bazy danych SQL , co oznacza, że ​​SQL jest osadzony w przeglądarce. Łatwo jest rozpoznać, jeśli spojrzysz na ich kod źródłowy JS pod adresem http://www.w3schools.com/w3Database.js i porównasz wywołania API ze specyfikacją W3C Web SQL, na przykład jak otwierają bazę danych:

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

Więc nie ma serwera bazy danych, to naprawdę przeglądarka wykonuje SQL, z silnikiem SQL, którego przeglądarka zdecydowała się użyć (zakładając, że ma on możliwość uruchamiania SQL), co sqlitema sens.

(EDYCJA: nie do końca prawda, ponieważ zgodnie z odpowiedzią Martina Smitha kod przesyłania JS wraca do silnika MS-Jet po stronie serwera, gdy przeglądarka nie obsługuje Web SQL).

Zauważ, że W3C zdecydowało się porzucić koncepcję przeglądarki SQL w 2010 roku, teraz jest przestarzała.


wiesz dlaczego podjęli tę decyzję? Czy jest jakaś różnica między SQL w przeglądarce a SQLite?
yoyo_fun

@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database ma pewne wskazówki. Albo możesz zadać to jako niezależne pytanie na dba.se
Daniel Vérité

to naprawdę bardzo dobry pomysł :)
yoyo_fun

5

Jak stwierdzono w innych odpowiedziach, zależy to od przeglądarki.

Jeśli Twoja przeglądarka nie ma natywnej obsługi Web SQL Database, kończy się przesyłanie z powrotem na serwer.

wprowadź opis zdjęcia tutaj

Używa Jet, jak widać po uruchomieniu

SELECT X FROM Foobar

Aparat bazy danych Microsoft Jet nie może znaleźć tabeli wejściowej ani zapytania „Foobar”. Upewnij się, że istnieje i że jego nazwa jest napisana poprawnie.

co oznacza, że ​​zastrzeżone rozszerzenia dostępu, takie jak TRANSFORMpraca, uzyskują dostęp do strony z przeglądarki Firefox (ale w Chrome nie powiedzie się)

wprowadź opis zdjęcia tutaj


Dziękuję za szczegółową odpowiedź. Czy możesz mi powiedzieć, jak zdobyłeś pierwszy zrzut ekranu? Jakiego edytora używasz? Czy to rozszerzenie do przeglądarki internetowej?
yoyo_fun

@yoyo_fun narzędzia programistyczne wbudowane w Firefoksa
Martin Smith

3

Ta odpowiedź została udzielona, ​​zanim OP dodał odwołanie do w3schools.com


Jeśli możesz uruchomić zapytanie, zacznij od tego:

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, ale niestety polecenia nie działają na stronie w3schools i innych. adres to www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
Spróbuj również Sqlite
David Markודו Markovitz

Sqlite. Sprawdź zaktualizowaną odpowiedź
David Markודו Markovitz

Markovits wynikiem uruchomienia polecenia „select sqlite_version ()” jest „niezdefiniowana funkcja„ sqlite_version ”w wyrażeniu.”
yoyo_fun

1
(Odpowiedź zależy od przeglądarki)
joanolo

2

W konkretnym przypadku silnika SQL używanego przez stronę w W3Schools :

Przeglądarki Safari, Chrome i Opera

Jeśli używasz przeglądarki Safari (przetestowałem na Mac OS X 10.12), strona korzysta z SQLite, który wydaje się być wbudowany w samą przeglądarkę. Po naciśnięciu przycisku „Uruchom SQL” nie korzysta on z żadnych zewnętrznych zasobów. Dalsza inżynieria wsteczna ujawnia, że ​​strona inicjuje bazę danych za pomocą następującego kodu JavaScript:

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

window.openDatabaseoznacza, że ​​kod korzysta z internetowej bazy danych SQL . Zostało to zdefiniowane przez W3C kilka lat temu i zostało zastosowane w praktyce przez Operę, Safari i Chrome (AFAIK), ale nie przez FireFox (lub Explorer). Wygląda na to, że wszystkie trzy przeglądarki wdrożyły „Web SQL Database”, osadzając w sobie różne wersje SQLite.

W tym momencie strona W3C twierdzi:

„Uwaga. Ta specyfikacja nie jest już aktywna w utrzymaniu, a grupa robocza ds. Aplikacji internetowych nie zamierza jej dalej utrzymywać”.

Testowałem przeglądarkę Chrome (wersja 56.0.2924.87, na Windows 10) i wydaje się, że używa SQLite 3.10.2. Opera (wersja 12.15, na Windows 10) używa SQLite 3.7.9.

Opera jest wystarczająco klarowna w swoim „około”:

wprowadź opis zdjęcia tutaj

I Safari Client-Side magazynowe Offline Applications Programming Guide wspomina również, że

Począwszy od Safari 3.1 i iOS 2.0, Safari obsługuje klasę bazy danych HTML5 JavaScript Klasa bazy danych JavaScript oparta na SQLite zapewnia relacyjną bazę danych przeznaczoną do lokalnego przechowywania treści, która jest zbyt duża, aby wygodnie przechowywać w niej pliki cookie (lub jest zbyt ważna, aby zaryzykować przypadkowe usunięcie, gdy użytkownik usuwa swoje pliki cookie).

Nie patrzyłem na Chrome ... ale moje przypuszczenia są jasne.

Przeglądarki FireFox, Edge i Internet Explore

Jeśli używasz przeglądarki FireFox (testowałem na Mac OS X 10.12); ta sama strona W3School zachowuje się w zupełnie inny sposób. Nie wykonuje zapytań w przeglądarce , ale wysyła żądania do swojego serwera . Po stronie serwera, myślę, że faktycznie używa bazy danych MS Access . Jednym ze sposobów sprawdzenia tego jest sprawdzenie (standard) information_schema.

Jeśli wydasz następujące zapytanie (które w bazie danych zgodnej ze standardami dałoby listę tabel dostępną dla użytkownika):

SELECT * FROM information_schema.tables;

Otrzymujesz następującą (zbyt wymowną) odpowiedź na błąd :

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

Jeśli oprogramowanie szuka pliku .MDB, oznacza to, że używa aparatu bazy danych Microsoft Jet (lub czegoś równoważnego) po stronie serwera i korzysta z plików w formacie Access .MDB , które odpowiadają wersjom Access do i w tym 2003. (Access 2007 i nowsze wersje domyślnie używają plików w formacie .ACCDB).

Microsoft Internet Explorer 11 zachowuje się w ten sam sposób (w systemie Windows 10); podobnie jak Edge (w systemie Windows 10).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.