アクセス可能なDatasaseサーバーで実行されているSQLのタイプを確認したい。 Webインターフェイスとテーブルのリストにしかアクセスできません。
インターフェイスを介して、リストにあるテーブルに対してクエリを実行できます。
サーバーとサーバーが実行しているバージョンに関する詳細情報を取得するにはどうすればよいですか。サーバーが実行しているIPやポートについてはわかりません。
サーバーがMySQL、Mircosoft SQLサーバー、Oracle SQL、Postgre SQL、またはその他のSQLサーバーかどうかを知りたい。
私が話しているウェブサイトはこれです w3schools.com SQLエディター 。
編集2:一部のコマンドselect sqlite_version()は私にとっては機能しますが、機能しません。これは応答のスクリーンショットです。
編集3:Chromiumブラウザでは、コマンドは正しく機能しています。ただし、Firefoxブラウザではコマンドは機能しませんでした。
また、私はLinuxを実行していることも述べました。
FirefoxとChromeで異なる結果が得られる理由は何だと思いますか?
私はあなたのWebインターフェースでSQLコマンドを発行できると思います。もしそうなら、あなたは使うことができます:
_SELECT version();
_
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データベースを使用している場合、答えは次のようになります。
_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
_
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データベースを使用している場合、SELECT version()
を実行しようとするとエラーメッセージが表示されます。
_ could not prepare statement (1 no such function: version)
_
その場合、あなたは試すことができます:
_ SELECT sqlite_version()
_
そして、応答は次のようになります。
_3.14.0
_
このオンライン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ブラウザーの概念を放棄することを決定したことに注意してください。これは現在廃止されています。
他の回答で述べたように、それはあなたのブラウザに依存します。
ブラウザーがWeb SQLデータベースをネイティブでサポートしていない場合、サーバーに送信し直されます。
実行するとわかるように、これはJetを使用しています
SELECT X FROM Foobar
Microsoft Jetデータベースエンジンが入力テーブルを見つけられないか、 'Foobar'をクエリできません。それが存在し、その名前のスペルが正しいことを確認してください。
つまり、Firefoxからページにアクセスするときに TRANSFORM
のような独自のAccess拡張機能が機能します(ただし、Chromeでは失敗します)。
この回答は、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 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は「約」で十分明確です。
そして Safariクライアント側ストレージおよびオフラインアプリケーションプログラミングガイド は、
Safari 3.1およびiOS 2.0以降、SafariはHTML5 JavaScriptデータベースクラスをサポートしています。JavaScriptデータベースクラスはSQLiteに基づいており、大きすぎてCookieに保存するには大きすぎる(またはリスクにとって重要すぎる)コンテンツのローカルストレージ用のリレーショナルデータベースを提供しますユーザーが自分のCookieを消去したときに誤って削除した場合)。
私はChromeを調べませんでした...私の推測は明白です。
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の場合)も同様です。