Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawa_Ito
Product and Topic Expert
Product and Topic Expert
0 Kudos


このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

この記事のオリジナルは、Glenn Paulley が sybase.com に 2009年3月に掲載したものです。この中で、Glenn は jConnect と SQL Anywhere JDBC ドライバーの違いについて述べています。
最近 jConnect、JDBC、SQL Anywhere の過去の特定のバージョンにおけるサポートについてまとめましたが、versions 12 と 16 の SQL Anywhere JDBC ドライバーでは、 JDBC 4.0 をサポートしていることをここでお伝えしたいと思います。
また、最新の jConnect のバージョンは 7.07 で、こちらも JDBC 4.0 をサポートしています。


 

 

最近、私は Sybase jConnect と、iAnywhere (現 SQL Anywhere) JDBC ドライバーとの違いについて質問を受けました。そこで、ここでポイントをまとめておこうと思います。
いずれテクニカルドキュメントとしてまとめたいと思います。

 

 

概要:


 

2つのJDBC の実装の違いについて、簡単にまとめると以下にとおりです。

  • jConnect は、Type 4 JDBC ドライバです。 一方、iAnywhere (現 SQL Anywhere ) JDBC ドライバは Type 1 で、適切にインストールされた ODBC ドライバーの存在に依存します。

  • jConnect は、Sybase Tabular Data Stream (TDS) ワイヤプロトコル を使用しています。一方、iAnywhere (SQL Anywhere) JDBC ドライバは、CMDSEQ と呼ばれるネイティブでプロプライエタリの SQL Anywhere アプリケーションレベルプロトコルを使用しています。

  • SQL Anywhere は、TCP/IP ネットワークプロトコルでは、TDS のみをサポートしています。それとは異なり、 SQL Anywhere-specific の CMDSEQ プロトコルは、TCP/IP も、同一コンピューター通信用に設計された効率的なシェアードメモリープロトコルも、どちらもサポートしています。

  • アプリケーションが SQL Anywhere に jConnect 経由で接続されると仮定すると、TDSを使うことになり、Sybase ASE の動作を望んでいることになります。そのため、SQL Anywhere のjConnect の実装では、アプリケーションがデータベースに接続するとすぐに ASE 互換の設定セットを設定するようサポートされています(以下参照)。

  • jConnect の様々な動作は、Sybase ASE (現SAP ASE)のネイティブサポートに由来します。これは、jConnect がカーソルと特定のデータタイプ(詳細は後で述べます) をサポートしていることに特に明白です。


 

 

JDBC ドライバータイプ


 

jConnect は、Type 4 JDBC ドライバーで、完全に Java ベースです。反対に、iAnywhere (現 SQL Anywhere) JDBC ドライバーは、Type 1 ドライバーで、ベースとなる実際に SQL Anywhere サーバーと通信する (non-Java) のODBC ドライバーに依存します。iAnywhere (現 SQL Anywhere) JDBC ドライバーも、jConnect 6.0.5 も、JDBC 4.0 準拠です。

 

SQL Anywhere Version 11 では、JDBC 3.0 (JDK 1.4 以降) しかサポートしていません。
SQL Anywhere Version 10 では、JDBC 2.0 と 3.0 の両方をサポートしています。Version 10 で出荷される jodbc.jar は、どちらのサポートも含まれますが、どちらのバージョンが使用されるかは、ドライバーの名前に依存します。

  • iAnywhere.ml.jdbcodbc.idriver は JDBC 2.0 をサポートします。

  • iAnywhere.ml.jdbcodbc.jdbc3.idriver は、JDBC 3.0 をサポートします。


 

Windows CE上の Java アプリケーションを活用したい場合には、jConnect 5.5 の方がベストの選択でしょう。
Windows CE では、Java VM としてベストなのは IBM の J9 VM と「Mobile Database Option」で、(JDK Version 1.3 の) JDBC 2.0 をサポートします。
しかしながら、jConnect 5.5 だけが JDBC 2.0-準拠---jConnect 6.05 と SQL Anywhere 11 は JDBC 3.0 が必要 --- なので、jConnect 5.5 (jconn2.jar) をデバイスにインストールする必要があります。

 

どのプラットフォームでも、SQL Anywhere で jConnect を使うには、データベース内に jConnect の JDBC メタデータスキーマのインストールが必要になります。
デフォルトでは、SQL Anywhere データベースは、jConnect メタデータのサポートで生成されますが、dbupgrad -j で明示的に追加することができます。

 

 

接続オプション


 

jConnect 経由で接続する場合には、SQL Anywhere サーバーは、自動的にいくつかのオプションの設定の値をリセットして、サーバーが ASE の動作をエミュレートできるようにします。
これは、sp_tsql_environment システムプロシージャー内で起こりますが、以下の SET OPTION 文を実行して接続します。

 





  1. SET TEMPORARY OPTION allow_nulls_by_default='Off';

  2. SET TEMPORARY OPTION ansi_blanks='On';

  3. SET TEMPORARY OPTION ansinull='Off';

  4. SET TEMPORARY OPTION chained='Off';

  5. SET TEMPORARY OPTION close_on_endtrans='Off';

  6. SET TEMPORARY OPTION date_format='YYYY-MM-DD';

  7. SET TEMPORARY OPTION date_order='MDY';

  8. SET TEMPORARY OPTION escape_character='Off';

  9. SET TEMPORARY OPTION isolation_level='1';

  10. SET TEMPORARY OPTION on_tsql_error='Continue';

  11. SET TEMPORARY OPTION quoted_identifier='Off';

  12. SET TEMPORARY OPTION time_format='HH:NN:SS.SSS';

  13. SET TEMPORARY OPTION timestamp_format='YYYY-MM-DD HH:NN:SS.SSS';

  14. SET TEMPORARY OPTION tsql_variables='On';




 

接続の初期またはデフォルトの値は、保持されないことに注意してください。
また、TDS 接続のデフォルトの分離レベルは、「1」(READ COMMITED 確定した最新データを常に読み取る ) であることに注意してください。
DBISQL と Sybase Central の古いバージョンでは、SQL Anywhere セマンティクスをできるだけ多く保持するために、データベースサーバーに接続した後にこれらのテンポラリオプション設定を undo にします。
そのため、違いについては気づかないかもしれません。
新しいバージョンの DBISQL と Sybase Central 管理ツール (SQL Anywhere Version 10 以降) では、jConnect 経由での接続はサポートしていません。

 

次は、: jConnect と iAnywhere (現 SQL Anywhere) JDBC ドライバのセマンティックとパフォーマンスの違いについて述べます。

 

(SQL Anywhere では、iAnywhere (現 SQL Anywhere) JDBC ドライバを推奨しています。)

 

 

 

 

過去のブログ記事より