Как проверить, какой компонент Database Engine установлен на сервере базы данных, к которому у меня есть доступ для выполнения запросов?

11

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

Через интерфейс я могу выполнять запросы к таблицам, которые присутствуют в списке.

Как я могу получить больше информации о сервере и версии, на которой работает сервер. Я понятия не имею об IP-адресе или ПОРТ, который работает на сервере.

Я хочу знать, является ли сервер MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL или другой сервер SQL.

Веб-сайт, о котором я говорю, - это редактор SQL для w3schools.com .

РЕДАКТИРОВАТЬ 2: хотя для некоторых команда select sqlite_version () у меня работает, это не работает. Это скриншот ответа.

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

РЕДАКТИРОВАТЬ 3: В браузере Chromium команда работает правильно. Однако в браузере Firefox команда не работала.

Я также упоминаю, что я использую Linux.

Как вы думаете, что может быть причиной того, что на Firefox и Chrome я получаю разные результаты?

yoyo_fun
источник
Можете ли вы выполнить запрос?
Дэвид דודו Марковиц
@DuduMarkovitz Да, я могу выполнять запросы.
yoyo_fun
Тот факт, что это утверждение работает для некоторых, а не для других, кажется, предполагает, что конкретная среда имеет значение. Вероятно, @joanolo был прав, когда сказал, что эти запросы выполняются в браузере. Разные люди используют разные браузеры, некоторые возможно с установленными дополнительными расширениями.
Андрей М,
2
"Неопределенная функция в выражении." такое сообщение об ошибке Access, поэтому кажется, что на стороне сервера они используют 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 , вы получите сообщение об ошибке:

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
joanolo
источник
спасибо за ответ, но, к сожалению, на этом сайте ничего не работает w3schools
yoyo_fun
Попробуйте последнее: SELECT sqlite_version()и вы получите ответ.
Жоаноло
1
Похоже, версия, которую они на самом деле полностью работают в вашем браузере . Посмотрите на github.com/kripken/sql.js
Joanolo
Есть ли способ убедиться, что это так. Есть ли в этой версии языка SQL в браузере какой-либо способ проверки его версии или это на самом деле механизм SQL?
yoyo_fun
7

Этот онлайн-редактор SQL использует базу данных Web SQL , что означает SQL, встроенный в браузер. Это легко узнать, если вы посмотрите на их исходный код JS по адресу http://www.w3schools.com/w3Database.js и сравните вызовы API со спецификацией W3C Web SQL, например, как они открывают базу данных:

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

Таким образом, нет сервера базы данных, это действительно браузер, который выполняет SQL, с механизмом SQL, который ваш браузер выбрал для использования (при условии, что он имеет возможность запуска SQL), для чего sqliteесть большой смысл.

(РЕДАКТИРОВАТЬ: не совсем верно, потому что, согласно ответу Мартина Смита , код отправки JS возвращается к серверу MS-Jet на стороне сервера, когда браузер не поддерживает Web SQL).

Обратите внимание, что W3C решил отказаться от концепции SQL-in-the-browser в 2010 году, сейчас она устарела.

Даниэль Верите
источник
Вы знаете, почему они приняли это решение? Есть ли разница между SQL в браузере и SQLite?
yoyo_fun
@yoyo_fun: en.wikipedia.org/wiki/Web_SQL_Database имеет несколько указателей. Или вы можете задать этот вопрос в качестве самостоятельного вопроса на dba.se
Даниэль Верите
это действительно очень хорошая идея :)
yoyo_fun
5

Как указано в других ответах, это зависит от вашего браузера.

Если ваш браузер не имеет встроенной поддержки базы данных Web SQL, он отправляет обратно на сервер.

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

Это использует Jet, как можно увидеть, запустив

SELECT X FROM Foobar

Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос «Foobar». Убедитесь, что он существует и что его имя написано правильно.

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

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

Мартин Смит
источник
Спасибо за подробный ответ. Можете ли вы сказать мне, как вы получили первый скриншот? Какой редактор вы используете? Это расширение для веб-браузера?
yoyo_fun
@yoyo_fun инструменты разработчика, встроенные в Firefox
Мартин Смит
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     
Дэвид Markודו Марковиц
источник
спасибо, но, к сожалению, команды не работают на сайте w3schools и других. адрес: www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun
1
Пожалуйста, попробуйте Sqlite
David דודו Марковиц
Sqlite. Проверьте обновленный ответ
Дэвид דודו Марковиц
Марковиц результатом выполнения команды "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означает, что код использует базу данных Web SQL . Это было определено W3C несколько лет назад и реализовано на практике Opera, Safari и Chrome (AFAIK), но не FireFox (или Explorer). Кажется, что все три браузера реализовали «базу данных Web 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 поддерживает класс базы данных JavaScript HTML5. Класс базы данных JavaScript, основанный на SQLite, предоставляет реляционную базу данных, предназначенную для локального хранения контента, который слишком велик для удобного хранения в файлах cookie (или слишком важен для риска случайное удаление, когда пользователь удаляет свои куки).

Я не смотрел в Chrome ... но мое предположение ясно.

FireFox, Edge и Internet Explore браузеры

Если вы используете браузер 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 Database Engine (или что-то подобное) на стороне сервера и использует файлы формата Access .MDB , которые соответствуют версиям Access вплоть до и включая 2003. (Access 2007 и более поздние версии по умолчанию используют файлы формата .ACCDB).

Microsoft Internet Explorer 11 ведет себя так же (в Windows 10); как и Edge (в Windows 10).

joanolo
источник