SQL Anywhere 11.0.1 Mobile Link の推奨 ODBC ドライバ

Mobile Link サーバは、ODBC 3.5 規格を使用して複数のタイプの統合データベースに接続します。 サポートされている一部の統合データベース・タイプでは、専用の iAnywhere Solutions ODBC ドライバを使用する必要があります。その他の統合データベース・タイプについては、データベース・ベンダが供給するドライバの使用をおすすめします。iAnywhere Solutions ODBC ドライバおよび Mobile Link サーバは、SQL Anywhere 11 製品に付属しています。 iAnywhere Solutions からODBC ドライバが提供されていない場合は、別のベンダが提供する ODBC ドライバを使用してください。他のベンダの ODBC ドライバでは、Mobile Link サーバに必要なオプションの ODBC 機能が一部サポートされない場合があります。

ドライバのテスト

弊社では、Mobile Link での ODBC ドライバのテストとして 2 つのタイプを使用します。

最初のタイプのテストは、同期化機能を用いた包括的なリグレッションテストです。いくつかの特定のリグレッションテストに失敗しても、失敗した機能に同期化が依存していないかぎり、そのドライバは引き続き適切である可能性があります。たとえば、失敗した唯一の回帰テストが LONG BINARY データの同期化を対象としている場合は、Mobile Link を使用して LONG BINARY データを同期化していなければ、そのドライバは引き続き適切である可能性があります。

2 番目のタイプのテストは高負荷テストであり、マルチプロセッサ・コンピュータで実行されている Mobile Link サーバと同時に同期している多数のクライアントを含みます。他のベンダのドライバの中には、複数の同時接続で失敗したり、複数のプロセッサの動作中に高負荷の状況下で失敗するものがあることがわかっています。

推奨ドライバ

テストの結果として、バージョン 11.0.1 の Mobile Link サーバでは次の ODBC ドライバの使用をおすすめします。

旧バージョンの Mobile Link で問題が発生している場合は、新しいバージョンへのアップグレードを検討してください。旧バージョンはサポート対象外になっている可能性があります。詳細については、こちらを参照してください。

後続の各セクションでは、さまざまなタイプの統合データベースに対する推奨 ODBC ドライバを示します。一部のケースでは、代替ドライバも示してあります。下記の統合 DBMS タイプのいずれかをクリックすると、そのタイプの DBMS で Mobile Link を使用する場合の推奨ドライバ情報が表示されます

SQL Anywhere (SA) 11

Sybase Adaptive Server Enterprise 12.5 and 15.0

Oracle 10g and 11g

Microsoft SQL Server 2005 and 2008

IBM DB2 8.2 and 9.5

MySQL 5.1

統合データベースの詳細については、こちらを参照してください。

SQL Anywhere (SA) 11

ドライバ SQL Anywhere 11.0
バージョン 11.0.1
ステータス Mobile Linkでの使用を推奨します
クライアントソフト なし
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE 10, SuSE Enterprise Linux 9, 10
kernel/glibcのバージョンが SA Linux サポートマトリックスに記載された範囲はサポート
Solaris 8, 9, 10
プラス面 全てのテストにパス
マイナス面 なし
備考 なし

Sybase Adaptive Server Enterprise 12.5, 15.0

ドライバ Sybase Adaptive Server Enterprise ODBC driver
バージョン 15.0.0.335 (Win32, 64) および 15.0.0.335 (Linux32, 64) – これらのドライバは、ASE 15.0 SDK ESD#16 より使用可能です。
ステータス 警告付きでMobile Linkでの使用を推奨します
クライアントソフト なし
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE 10
プラス面 全てのテストにパス
マイナス面
  1. Linux では、UseCursor=1 を設定すると、同期後に同期テーブルを削除できません。
  2. 32- および 64-bit ASE ネイティブ ODBC ドライバーのバグのため、MLSD feature in the MobiLink サーバーのMLSD機能は現在のところASEでは機能しません。
備考
  1. ASE 12.5 サーバーにはASE 12.5 ESD#1を適用する必要があります。
  2. Linuxでは、UseCursor を常にゼロに設定してください。
  3. ServerInitiatedTransactions は、常にゼロに設定してください。
  4. いずれかのアップロードおよびダウンロード・スクリプトの where 句に “column_name = NULL” が含まれている場合は、AnsiNull を 1 に設定します。
  5. Linux では、SYBASE 環境変数を ASE SDK1500 のインストール先ディレクトリに設定する必要があります。そうしなければ、”Could not load code page for requested charset (要求された文字セットのコード・ページをロードできませんでした)” というエラーが発生します。
  6. Linuxでは、64-bit Mobile Link サーバーと他のODBC ドライバーは、SQLLEN (ODBC データタイプ) を64-bit インテジャーとして定義します。しかし、Sybase ASE ODBC ドライバはSQLLEN を32-bit インテジャーとして定義します。DSN for ASE on UNIX に以下のエントリが含まれる場合には、この違いは、iAnywhere ODBC ドライバーfor UNIXでハンドルします。
    length32=1
    これは、64-bit UNIX Mobile Link サーバーfor ASEで必要です。

 

Oracle 10g and 11g

Oracle 10g

ドライバ iAnywhere Solutions 11 – Oracle ODBC ドライバ
バージョン 11.00.01
ステータス Mobile Linkでの使用を推奨します
クライアントソフト Oracle 10g client
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE 10, SuSE Enterprise Linux 10
Solaris 8, 9, 10
AIX 5.3, 6.1
プラス面 全てのテストにパス
マイナス面 なし
備考
  1. このドライバーを使用する前に、Oracle 10g クライアントをインストールする必要があります。このドライバーをロードするためには、クライアントライブラリを、LD_LIBRARY_PATH ( Linux, Solaris) あるいは LIBPATH( AIX )に設定する必要があります。
  2. WindowsのDSN 設定またはLinux とUnix .odbc.iniにあるSIDは、 $ORACLE_HOME/network/admin/tnsnames.ora に定義されているOracle TNS サービス名です。
  3. Windowsでの「プロシージャは結果を返す」あるいはLinux と UnixProcResults のデフォルト設定は「no」になっています。

 

Oracle 11g

ドライバ iAnywhere Solutions 11 – Oracle ODBC ドライバ
バージョン 11.00.01
ステータス Mobile Linkでの使用を推奨します
クライアントソフト Oracle 11g client
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE 10, SuSE Enterprise Linux 10
Solaris 9, 10
AIX 5.3, 6.1
プラス面 全てのテストにパス
マイナス面 なし
備考
  1. このドライバを使用する前に、 Oracle 11g のクライアントをインストールする必要があります。このドライバをロードするために、 LD_LIBRARY_PATH ( Linux, Solaris) またはLIBPATH( AIX )にOracle クライアント ライブラリを設定する必要があります。
  2. Windows DSN設定またはLinuxとUnixでの .odbc.ini にあるSIDは、 $ORACLE_HOME/network/admin/tnsnames.ora に定義されているOracle TNSサービス名です。
  3. Windowsでの「プロシージャは結果を返す」または、LinuxとUnixでのProcResultsのデフォルト設定は「no」になっています。

 

Microsoft SQL Server 2005 and 2008

重要: SQL Serverのどのバージョンでも、 「SET NOCOUNT ON」を、どのストアドプロシージャーでも最初の文あるいは、ODBC経由で実行されるSQL バッチとして特定する必要があります。このオプションなしでは、「number of rows affected」メッセージが、各分の実行ごとにMobile Linkに送信されます。 比較的大きなインサート、アップデート、セレクトを文中に実行する場合には、これらのメッセージは、ネットワークのバッファーを一杯にして、データが失われたという跡もなくデータが失われてしまいます!

Microsoft SQL Server 2005

ドライバ Microsoft SQL ネイティブクライアント ODBC ドライバー
バージョン 2005.90.xxxx.00
ステータス Mobile Linkでの使用を推奨します
クライアントソフト なし
OS 200x, XP, Vista
プラス面 全てのテストにパス
マイナス面 なし
備考 ODBC を介して実行されるストアド・プロシージャおよびバッチの先頭には、”SET NOCOUNT ON” を必ず置いてください。

 

Microsoft SQL Server 2008

ドライバ Microsoft SQL ネイティブクライアント ODBC ドライバー
バージョン 2007.100.xxxx.xx
ステータス Mobile Linkでの使用を推奨します
クライアントソフト なし
OS 200x, XP, Vista
プラス面 全てのテストにパス
マイナス面 なし
備考 ODBC を介して実行されるストアド・プロシージャおよびバッチの先頭には、”SET NOCOUNT ON” を必ず置いてください。

 

IBM DB2 8.2 および 9.5

重要:

  • Mobile Linkは、Windows, Linux, Unix, z/OS (メインフレーム)版DB2のみサポートしています。DB2 AS/400はサポートしていません。
  • Mobile Link同期に使用されるDB2 Java ストアドプロシージャーは、常に、すぐにOFFに自動コミットします。 例えば getConnection.setAutoCommit(false)を使用するなど。

IBM DB2 8.2

ドライバ IBM DB2 ODBC ドライバー
バージョン 8.01.17.644 (Win32, 64), 8.02.0009 (Linux32, 64)。これらのドライバは、DB2 FixPack 17から入手可能です。
ステータス Mobile Linkでの使用を推奨します
クライアントソフト DB2 UDB Client 8.2
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE Enterprise Linux 9, 10
Solaris 8, 9, 10
AIX 5.3, 6.1
プラス面 全てのテストにパス
マイナス面 なし
備考 サポートOSについては http://www-306.ibm.com/software/data/db2/9/sysreqs.html (このリンクはIBM社によって変更される場合があります)を参照して下さい。

Solarisでは、IBM DB2 ODBC ドライバーは、特定のレベルのOSパッチが必要な場合があります。詳細については、IBM Web サイトをご確認ください。

Linux、Solaris、AIX では、db2profileを入手して DB2 環境変数をエクスポートする必要があります。db2profileは、DB2 インストールのホーム・ディレクトリにあります。

高負荷テストには、LOCKLISTおよびAPPLHEAPSZという 2 つのデータベース設定パラメータを変更する必要があります。LOCKLISTは500、APPLHEAPSZは 1024 に設定してください。

Linux、Solaris、AIX,では、64-bit Mobile Link サーバーと他のODBC ドライバーは、SQLLEN (ODBC データタイプ) を64-bit インテジャーとして定義します。しかし、DB2 ODBC ドライバーversion 8.02.0009 for UNIXは、SQLLEN を32-bit インテジャーとして定義します。DSN for DB2 on UNIX に以下のエントリが含まれる場合には、この違いは、iAnywhere ODBC ドライバーfor UNIXでハンドルします。
length32=1
これは、64-bit Mobile Link サーバー on UNIX for DB2と、DB2 ODBC ドライバーversion 8.02.0009の場合に必要です。

 

IBM DB2 9.5

ドライバ IBM DB2 ODBC ドライバー
バージョン 9.05.201.346 (Win32, 64), 9.05.0002 (Linux32, 64). Tこれらのドライバは、DB2 FixPack 2aから入手可能です。
ステータス Mobile Linkでの使用を推奨します
クライアントソフト DB2 UDB Client 9.5
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE Enterprise Linux 9, 10
Solaris 9, 10
AIX 5.3, 6.1
プラス面 全てのテストにパス
マイナス面 なし
備考 サポートOSについては http://www-306.ibm.com/software/data/db2/9/sysreqs.html (このリンクはIBM社によって変更される場合があります)を参照して下さい。

Solarisでは、IBM DB2 ODBC ドライバーは、特定のレベルのOSパッチが必要な場合があります。詳細については、IBM Web サイトをご確認ください。

Linux、Solaris、AIX では、db2profileを入手して DB2 環境変数をエクスポートする必要があります。db2profileは、DB2 インストールのホーム・ディレクトリにあります。

高負荷テストには、LOCKLISTおよびAPPLHEAPSZという 2 つのデータベース設定パラメータを変更する必要があります。LOCKLISTは500、APPLHEAPSZは 1024 に設定してください。

 

MySQL 5.1

ドライバ MySQL ODBC ドライバー
バージョン 5.01.05 (Win32, 64) and 5.01.05 (Linux32, 64).
ステータス Mobile Linkでの使用を推奨します
クライアントソフト None
OS Windows 200x, XP, Vista
Linux Redhat Enterprise Linux 4, 5
SuSE 10, SuSE Enterprise Linux 9, 10
プラス面 全てのテストにパス
マイナス面 なし
備考 1) ストレージエンジン:

MySQL は、MySQL サーバーの中にストレージエンジン一式を備えていますが、ストレージエンジンは、ACID 準拠のものもあれば、準拠でないものもあります。Mobile Link サーバーにはACID準拠のストレージエンジンが必要です。例えば、InnoDB, Falconなどです。デフォルトのストレージエンジンがACID準拠のものであることを確認してください。 デフォルトのストレージエンジンがACID準拠のものでない場合、 全てのall the MobiLink サーバーのシステム・テーブルが、ACID準拠のストレージエンジンを使用して生成されていることを確認してください。

2) ストアドプロシージャー:

MySQL ODBC ドライバーは、ストアドプロシージャーの呼び出しのinout やout パラメーターをサポートしていません。そのため、inoutのパラメーターが必要なプロシージャーは、全て、out valueを返す機能として書かれている必要があります。

Mobile Linkサーバーのinout パラメーターを必要とするイベントは、例えば、authenticate_user, handle_error, modify_userなどは、セレクト文を使用して実行される機能として搭載されている必要があります。例えば:
select function_name( ?, ?, ?, … )
{ call function_name( ?, ?, ?, … ) }ではなく。
これにより、Mobile Linkサーバーは、返された値を適切に受けることができます。

Mobile Linkサーバーのスクリプトがネームドパラメーターを使用する場合には、スクリプトの実行後は、パラメーターは変更されません。
ユーザー定義のネームドパラメーター、 例 {ml u.my_var} は、サポートしていません。

3) カーソルスクリプト:

upload_fetch, download_cursor, download_delete_cursor のイベントは、セレクト文として書かれている場合があります。Mobile Linkサーバーは、セレクト文の実行には、リードコミット アイソレーションレベルを使用します。しかしながら、リードコミット アイソレーションでは、 MySQL ODBCドライバーは、 driver may allow the Mobile Linkサーバーがコミットしていないオペレーション(インサート、アップデート、デリート)を読むことを許してしまう場合もあります。そのため、この動作の場合には、同期データは、統合データベースとリモートデータベースで一貫しないこともあります。この問題は、MySQLへは報告済みです。

この問題のワークアラウンドとしては、全セレクト文のupload_fetch, download_cursor, download_delete_cursorイベントは「lock in share mode」文を含んでいる必要があります。例えば、download_cursorスクリプトは、これがセレクト文であれば、以下のように書かれている必要があります:
select col1, col2, …, coln from a_sync_table where last_modified > ? … lock in share mode
「lock in share mode」文では、セレクト文は、同じテーブルの他の接続によるコミットされないオペレーションでブロックされてしまいます。そのため、アップロードの更新とダウンロードのデータは、統合データベースとリモートデータベースで、一貫しています。

4) UNIX プラットフォーム:

UNIX上のODBC設定ファイルの特定方法には2種類あります:

a) ODBC.INI (ファイル名はアッパーケース)ファイルあるいは、symbolic link ODBC.INI を現在のユーザーのホームディレクトリーに置きます;
b) 環境変数 ODBCINI を生成し、実際のODBC設定ファイルにポイントアウトし、この環境変数を設定します。

UNIX プラットフォームでは、64-bit Mobile Link サーバーと他のODBC ドライバーは、SQLLEN (ODBC データタイプ) を64-bit インテジャーとして定義します。しかし、MySQL ODBCドライバーは、SQLLEN を32-bit インテジャーとして定義します。DSN for MySQL on UNIXに以下のエントリが含まれる場合には、この違いは、iAnywhere ODBC ドライバーfor UNIXでハンドルします。
length32=1
64-bit Mobile Link サーバー on UNIX for MySQLではこれが必要です。.

UNIX上のMySQLのDNSのサンプルは
[a_mysql_dsn]
Driver=full_path/libmyodbc5.so
server=host_name
uid=user_name
pwd=user_password
database=database_name
length32=1

5) QAnywhere サポート:

QAnywhere は、MySQL サーバー上で稼動している統合データベースはサポートしていません。