web-dev-qa-db-ja.com

クエリを実行するためにアクセスするデータベースサーバーにインストールされているデータベースエンジンを確認するにはどうすればよいですか?

アクセス可能なDatasaseサーバーで実行されているSQLのタイプを確認したい。 Webインターフェイスとテーブルのリストにしかアクセスできません。

インターフェイスを介して、リストにあるテーブルに対してクエリを実行できます。

サーバーとサーバーが実行しているバージョンに関する詳細情報を取得するにはどうすればよいですか。サーバーが実行しているIPやポートについてはわかりません。

サーバーがMySQL、Mircosoft SQLサーバー、Oracle SQL、Postgre SQL、またはその他のSQLサーバーかどうかを知りたい。

私が話しているウェブサイトはこれです w3schools.com SQLエディター

編集2:一部のコマンドselect sqlite_version()は私にとっては機能しますが、機能しません。これは応答のスクリーンショットです。

enter image description here

編集3:Chromiumブラウザでは、コマンドは正しく機能しています。ただし、Firefoxブラウザではコマンドは機能しませんでした。

また、私はLinuxを実行していることも述べました。

FirefoxとChromeで異なる結果が得られる理由は何だと思いますか?

11
yoyo_fun

私はあなたのWebインターフェースで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
_
15
joanolo

このオンライン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の回答 によると、ブラウザがWeb SQLをサポートしていない場合、JS送信コードはサーバー側のMS-Jetエンジンにフォールバックするため、厳密には当てはまりません)。

W3Cが2010年にSQL-in-theブラウザーの概念を放棄することを決定したことに注意してください。これは現在廃止されています。

7
Daniel Vérité

他の回答で述べたように、それはあなたのブラウザに依存します。

ブラウザーがWeb SQLデータベースをネイティブでサポートしていない場合、サーバーに送信し直されます。

enter image description here

実行するとわかるように、これはJetを使用しています

SELECT X FROM Foobar

Microsoft Jetデータベースエンジンが入力テーブルを見つけられないか、 'Foobar'をクエリできません。それが存在し、その名前のスペルが正しいことを確認してください。

つまり、Firefoxからページにアクセスするときに TRANSFORM のような独自のAccess拡張機能が機能します(ただし、Chromeでは失敗します)。

enter image description here

5
Martin Smith

この回答は、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 のページで使用されるSQLエンジンの特定のケースの場合:

Safari、ChromeおよびOperaブラウザ

Safari Browserを使用している場合(私は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 Database を使用していることを意味します。これは、数年前にW3Cによって定義され、Opera、Safari、およびChrome(AFAIK)によって実践されましたが、FireFox(またはExplorer)によってではありませんでした。3つのブラウザすべてが異なるバージョンのSQLiteを内部に埋め込むことにより、「Web SQLデータベース」を実装しました。

この時点で、W3Cページは次のように主張しています。

「注意してください。この仕様は現在アクティブなメンテナンスが行われておらず、Webアプリケーションワーキンググループはそれをさらにメンテナンスするつもりはありません。」

Chromeブラウザー(Windows 10では56.0.2924.87バージョン)をテストしましたが、SQLite 3.10.2を使用しているようです。Opera(Windows 10ではバージョン12.15)、SQLite 3.7.9を使用します。

Operaは「約」で十分明確です。

enter image description here

そして Safariクライアント側ストレージおよびオフラインアプリケーションプログラミングガイド は、

Safari 3.1およびiOS 2.0以降、SafariはHTML5 JavaScriptデータベースクラスをサポートしています。JavaScriptデータベースクラスはSQLiteに基づいており、大きすぎてCookieに保存するには大きすぎる(またはリスクにとって重要すぎる)コンテンツのローカルストレージ用のリレーショナルデータベースを提供しますユーザーが自分のCookieを消去したときに誤って削除した場合)。

私はChromeを調べませんでした...私の推測は明白です。

FireFox、Edge、およびInternet Explorerブラウザ

FireFoxブラウザーを使用する場合(Mac OS X 10.12でテストしました);同じW3Schoolページは根本的に異なる方法で動作します。クエリブラウザ上は実行しませんが、サーバーにリクエストを送信します。サーバー側では、実際にはMS Accessデータベースのように使用していると思います。これを確認する1つの方法は、(標準)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を使用していることを意味します。フォーマットファイル 、これは2003年までのAccessバージョンに対応します(Access 2007以降のバージョンでは、デフォルトで.ACCDBフォーマットファイルが使用されます)。

Microsoft Internet Explorer 11は同じように動作します(Windows 10の場合)。Edge(Windows 10の場合)も同様です。

2
joanolo