Як перевірити, який Database Engine встановлений на сервері DataBase, на якому я маю доступ для запуску запитів?


11

Я хочу перевірити, який тип sql працює на сервері Datasase, до якого я можу отримати доступ. У мене є лише доступ до веб-інтерфейсу та списку таблиць.

Через інтерфейс я можу запускати запити на таблиці, які є в списку.

Як я можу отримати більше інформації про сервер та версію, на якій працює сервер. Я не маю уявлення про IP або ПОРТ, що працює на сервері.

Я хочу знати, чи є сервер MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL або інший сервер sql.

Веб-сайт, про який я говорю, це ось такий: w3schools.com редактор SQL .

EDIT 2: хоча для деяких команд select sqlite_version () для мене працює, це не працює. Це скріншот відповіді.

введіть тут опис зображення

EDIT 3: У браузері Chromium команда працює належним чином. Однак у браузері Firefox команда не працювала.

Я також зазначу, що я працюю на Linux.

Як ви думаєте, що може стати причиною того, що на Firefox та Chrome ви отримуєте різні результати?


Ви можете запустити запит?
David דודו Markovitz

@DuduMarkovitz Так. Я можу запускати запити.
yoyo_fun

Той факт, що це твердження працює для одних, а не для інших, здається, говорить про те, що конкретне середовище має значення. Ймовірно, @joanolo мав рацію, коли сказав, що ці запити працюють у браузері. Різні люди використовують різні веб-переглядачі, в деяких можливо додаткові розширення.
Андрій М

2
"Невизначена функція у виразі." - це повідомлення про помилку доступу, тому схоже, що на стороні сервера вони використовують Jet
Martin Smith

@MartinSmith Що таке Jet в цьому контексті? Де я можу прочитати більше про це?
yoyo_fun

Відповіді:


15

Я припускаю, що ваш веб-інтерфейс дозволяє видавати команди SQL. Якщо так, ви можете використовувати:

SELECT version();

PostgreSQL

Якщо ви перебуваєте в базі даних PostgreSQL , ви отримаєте відповідь, схожу на

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

Якщо ви перебуваєте в базі даних MySQL , відповідь виглядає так

5.7.12-log

Oracle

Якщо ви перебуваєте в базі даних Oracle , ви отримаєте повідомлення про помилку:

ORA-00923: FROM keyword not found where expected

(ORA-xxxx повідомляє вам, що ви в Oracle). Щоб дізнатися, яка саме версія, спробуйте:

SELECT banner as "oracle version" from v$version

Ви отримаєте відповідь на зразок:

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

Якщо ви перебуваєте на MS SQL Server , відповідь також буде помилкою і виглядатиме так:

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

У такому випадку ви можете спробувати:

SELECT @@version ;

І ви отримаєте як відповідь щось таке:

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

Якщо ви перебуваєте в базі даних SQLite , при спробі з’явиться повідомлення про помилку SELECT version():

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

У такому випадку ви можете спробувати:

 SELECT sqlite_version()

І відповідь буде виглядати так:

3.14.0

дякую за відповідь, але, на жаль, нічого не працює на цьому веб-сайті w3schools
yoyo_fun

Спробуйте останнє: SELECT sqlite_version()і ви отримаєте свою відповідь.
joanolo

1
Схоже, версія, яку вони фактично повністю працює, працює у вашому браузері . Подивіться на github.com/kripken/sql.js
joanolo

чи є спосіб переконатися, що це так. Чи є в цій браузерній версії мови SQL який-небудь спосіб перевірити її версію чи це насправді цей двигун SQL?
yoyo_fun

7

Цей онлайн-редактор SQL використовує веб-базу даних SQL , тобто SQL, вбудований у браузер. Це легко розпізнати, якщо ви подивитесь на їх вихідний код JS за адресою http://www.w3schools.com/w3Database.js та порівняйте виклики API з W3C специфікацією веб-SQL, наприклад, як вони відкривають базу даних:

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

Отже, сервера баз даних немає, це справді браузер, який виконує SQL, з двигуном SQL, який ваш браузер вирішив використовувати (якщо припустити, що він має можливість починати SQL), для чого sqliteє багато сенсу.

(EDIT: не зовсім вірно, оскільки згідно з відповіддю Мартіна Сміта , код подання JS повертається до сервера MS-Jet Engine, коли браузер не підтримує Web SQL).

Зауважимо, що W3C вирішив відмовитися від концепції SQL в браузері в 2010 році, вона тепер застаріла.


чи знаєте ви, чому вони прийняли це рішення? Чи є різниця між SQL у браузері та SQLite?
yoyo_fun

@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database має деякі покажчики. Або ви можете задати це як самостійне запитання на dba.se
Daniel Vérité

це справді дуже гарна ідея :)
yoyo_fun

5

Як зазначено в інших відповідях, це залежить від вашого браузера.

Якщо ваш веб-переглядач не має вбудованої підтримки для веб-баз даних SQL, він повертається до сервера.

введіть тут опис зображення

Це використовує Jet, як це можна побачити під час бігу

SELECT X FROM Foobar

Двигун бази даних Microsoft Jet не може знайти таблицю введення або запит "Foobar". Переконайтесь, що воно існує та чи правильно написано його ім'я.

що означає власне розширення доступу, як TRANSFORMробота під час доступу до сторінки з Firefox (але це не вдасться в Chrome)

введіть тут опис зображення


Дякую за детальну відповідь. Чи можете ви сказати мені, як ви отримали перший скріншот? Який редактор ви використовуєте? Це розширення для веб-браузера?
yoyo_fun

@yoyo_fun інструменти для розробників, вбудовані в Firefox
Martin Smith

3

Ця відповідь була надана ще до того, як ОП додала посилання на w3schools.com


Якщо ви можете запустити запит, почніть з цього:

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, але, на жаль, команди не працюють на сайті w3schools та інших. адреса www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
Спробуйте також Sqlite
David דודו Markovitz

Sqlite. Перевірте оновлену відповідь
Девід Marודו Markovitz

Марковить результат запуску команди "select sqlite_version ()" - це "Невизначена функція 'sqlite_version' у виразі".
yoyo_fun

1
(Відповідь залежить від браузера)
joanolo

2

Для конкретного випадку двигуна SQL, який використовується сторінкою у W3Schools :

Браузери Safari, Chrome і Opera

Якщо ви використовуєте браузер Safari (я тестував на Mac OS X 10.12), сторінка використовує SQLite, який, здається, вбудований у сам браузер. Коли ви натискаєте кнопку "Запустити SQL", вона не використовує жодного зовнішнього ресурсу. Подальше зворотне проектування виявляє, що сторінка ініціалізує базу даних за допомогою наступного коду JavaScript:

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

window.openDatabaseозначає, що в коді використовується база даних SQL Web . Це було визначено W3C кілька років тому, і на практиці його застосували Opera, Safari та Chrome (AFAIK), але не FireFox (або Explorer). Всі три браузери, схоже, реалізували "Веб-базу даних SQL", вставивши різні версії SQLite в себе.

На даний момент на сторінці W3C стверджується:

"Обережно. Ця специфікація більше не знаходиться в активному обслуговуванні, і Робоча група з веб-додатків не має наміру підтримувати її далі."

Я протестував браузер Chrome (версія 56.0.2924.87, в Windows 10), і, здається, використовується SQLite 3.10.2. Opera (версія 12.15, у Windows 10), використовує SQLite 3.7.9.

Опера досить чітка у своїх "про":

введіть тут опис зображення

І посібник із програмування програм Safari для зберігання та офлайн-програм також відмічає це

Починаючи з Safari 3.1 та iOS 2.0, Safari підтримує клас бази даних HTML5 JavaScript Клас бази даних JavaScript, заснований на SQLite, забезпечує реляційну базу даних, призначену для локального зберігання вмісту, який є занадто великим, щоб зручно зберігати у файлах cookie (або занадто важливий для ризику випадкове видалення, коли користувач очищає свої файли cookie).

Я не заглядав у Chrome ... але моя здогадка зрозуміла.

Браузери FireFox, Edge та Internet

Якщо ви використовуєте браузер FireFox (я тестував на Mac OS X 10.12); та сама сторінка W3School поводиться докорінно по-іншому. Він не виконує запити в браузері , але надсилає запити на їх сервер . З боку сервера, я думаю, що насправді використовується база даних MS Access . Один із способів перевірити це - перевірити (стандарт) information_schema.

Якщо ви подаєте наступний запит (який у базі даних, що відповідає стандартам, надає список таблиць, доступних користувачеві):

SELECT * FROM information_schema.tables;

Ви отримуєте таку (занадто показову) відповідь на помилку :

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

Якщо програмне забезпечення шукає файл .MDB, це означає, що вони використовують сервер бази даних Microsoft Jet (або щось еквівалентне) на стороні сервера, і вони використовують файли формату Access .MDB , які відповідають версіям Access до і включаючи 2003 р. (Access 2007 та новіші версії за замовчуванням використовують файли формату .ACCDB).

Microsoft Internet Explorer 11 поводиться так само (у Windows 10); і так само Edge (у Windows 10).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.