쿼리를 실행하기 위해 액세스 한 데이터베이스 서버에 어떤 데이터베이스 엔진이 설치되어 있는지 확인하는 방법은 무엇입니까?


11

액세스 할 수있는 Datasase 서버에서 실행중인 SQL 유형을 확인하고 싶습니다. 웹 인터페이스와 테이블 목록에만 액세스 할 수 있습니다.

인터페이스를 통해 목록에있는 테이블에서 쿼리를 실행할 수 있습니다.

서버 및 서버가 실행중인 버전에 대한 자세한 정보를 얻는 방법 서버가 실행중인 IP 또는 PORT에 대해 전혀 모른다.

서버가 MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL 또는 기타 SQL 서버인지 알고 싶습니다.

내가 이야기하는 웹 사이트는 w3schools.com SQL editor 입니다.

편집 2 : select sqlite_version () 명령이 작동하지만 작동하지 않습니다. 응답의 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

편집 3 : Chromium Browser에서 명령이 올바르게 작동합니다. 그러나 Firefox 브라우저에서는 명령이 작동하지 않았습니다.

또한 Linux를 실행하고 있다고 언급합니다.

Firefox와 Chrome에서 다른 결과를 얻는 이유는 무엇이라고 생각하십니까?


쿼리를 실행할 수 있습니까?
David דודו Markovitz

@ DuduMarkovitz 예, 나는 쿼리를 실행할 수 있습니다.
yoyo_fun 2013

이 진술이 다른 사람들에게는 효과가없고 다른 사람들에게는 효과가 없다는 사실은 특정 환경이 중요하다는 것을 시사하는 것 같습니다. 아마도 @joanolo는 이러한 쿼리가 브라우저에서 실행된다고 말했을 때 옳았습니다. 사람들마다 다른 브라우저를 사용하고 일부는 추가 확장 기능이 설치되어있을 수 있습니다.
Andriy M

2
"표현식에서 정의되지 않은 함수." 인 액세스 오류 메시지가 그래서 그들은 제트를 사용하는 서버 측처럼 보인다
마틴 스미스

@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는 당신이 오라클에 있다고 알려줍니다). 특정 버전을 확인하려면 다음을 시도하십시오.

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 서버 , 응답도 오류, 그리고 다음과 같이 표시됩니다

'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 2012

7

이 온라인 SQL 편집기는 Web SQL Database를 사용 하며 이는 브라우저에 내장 된 SQL을 의미합니다. http://www.w3schools.com/w3Database.js 에서 JS 소스 코드를보고 API 호출을 Web SQL의 W3C 사양 (예 : 데이터베이스를 여는 방법)과 비교하면 쉽게 알 수 있습니다 .

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

따라서 데이터베이스 서버가 없으며 실제로 브라우저가 사용하기로 선택한 SQL 엔진 (시작하는 SQL 기능이 있다고 가정)으로 SQL을 실행하는 브라우저입니다 sqlite.

(편집 : Martin Smith의 답변 에 따르면 JS 제출 코드가 브라우저가 Web SQL을 지원하지 않으면 서버 측 MS-Jet 엔진으로 폴백 하기 때문에 엄격하게 사실 이 아닙니다.)

W3C는 2010 년에 SQL-in-browser 개념을 포기하기로 결정했지만 이제는 더 이상 사용되지 않습니다.


그들이 왜이 결정을 내 렸는지 아십니까? 브라우저의 SQL과 SQLite 사이에 차이점이 있습니까?
yoyo_fun

@yoyo_fun : en.wikipedia.org/wiki/Web_SQL_Database 에는 몇 가지 포인터가 있습니다. 또는 dba.se에서 독립 질문으로 질문 할 수 있습니다.
Daniel Vérité

이것은 실제로 아주 좋은 생각입니다 :)
yoyo_fun 23.12의

5

다른 답변에서 언급했듯이 브라우저에 따라 다릅니다.

브라우저가 Web SQL Database를 기본적으로 지원하지 않으면 서버에 다시 제출하게됩니다.

여기에 이미지 설명을 입력하십시오

이것은 Jet를 사용하여 볼 수 있습니다.

SELECT X FROM Foobar

Microsoft Jet 데이터베이스 엔진이 입력 테이블 또는 쿼리 'Foobar'를 찾을 수 없습니다. 존재하고 이름의 철자가 올바른지 확인하십시오.

이는 TRANSFORMFirefox에서 페이지에 액세스 할 때 작동 하는 독점 액세스 확장을 의미 하지만 Chrome에서는 실패합니다.

여기에 이미지 설명을 입력하십시오


자세한 답변 주셔서 감사합니다. 첫 스크린 샷을 어떻게 얻었습니까? 사용중인 편집기는 무엇입니까? 웹 브라우저의 확장입니까?
yoyo_fun 2019

@yoyo_fun Firefox에 내장 된 개발자 도구
Martin Smith

3

이 답변은 OP가 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     

고맙지 만 불행히도 명령은 w3schools 사이트 및 기타 사이트에서 작동하지 않습니다. 주소는 www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
yoyo_fun

1
또한 Sqlite
David דודו Markovitz를

Sqlite. 업데이트 된 답변을 확인
데이비드 דודו Markovitz

"select sqlite_version ()"명령을 실행 한 Markovits는 "식에서 정의되지 않은 함수 'sqlite_version'"입니다.
yoyo_fun

1
(답은 브라우저에 따라 다릅니다)
joanolo

2

W3Schools 페이지에서 사용하는 SQL 엔진의 특정 경우 :

사파리, 크롬 및 오페라 브라우저

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에 의해 정의되었으며, FireFox (또는 Explorer)가 아닌 Opera, Safari 및 Chrome (AFAIK)에 의해 실제로 구현되었습니다. 세 브라우저 모두 서로 다른 버전의 SQLite를 내장하여 "Web SQL Database"를 구현 한 것으로 보입니다.

이 시점에서 W3C 페이지는 다음을 주장합니다.

"주의하십시오.이 사양은 더 이상 활성 유지 관리가 아니며 Web Applications Working Group은 더 이상 유지 관리하지 않습니다."

Chrome 브라우저 (Windows 10의 경우 56.0.2924.87 버전)를 테스트했으며 SQLite 3.10.2를 사용하는 것 같습니다. Opera (Windows 10의 경우 버전 12.15)는 SQLite 3.7.9를 사용합니다.

오페라는 "약"에서 충분히 명확합니다.

여기에 이미지 설명을 입력하십시오

그리고 사파리 클라이언트 측 스토리지 및 오프라인 응용 프로그램 가이드 프로그래밍 도 있음을 언급

Safari 3.1 및 iOS 2.0부터 Safari는 HTML5 JavaScript 데이터베이스 클래스를 지원합니다. SQLite를 기반으로하는 JavaScript 데이터베이스 클래스는 쿠키에 편리하게 저장하기에 너무 큰 (또는 위험하기에는 너무 중요한) 콘텐츠의 로컬 저장소를위한 관계형 데이터베이스를 제공합니다. 사용자가 쿠키를 지울 때 실수로 삭제).

Chrome을 보지 않았지만 내 추측은 분명합니다.

FireFox, Edge 및 인터넷 탐색 브라우저

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 형식 파일 을 사용하고 있음을 의미합니다. 2003을 포함합니다. Access 2007 이상 버전은 기본적으로 .ACCDB 형식 파일을 사용합니다.

Microsoft Internet Explorer 11 은 동일한 방식으로 작동합니다 (Windows 10에서). Windows 10에서도 Edge도 마찬가지 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.