Sybase SQL Anywhere への接続(FireDAC)
データベース接続(FireDAC) への移動
このトピックでは、Sybase SQL Anywhere への接続方法を説明します。
目次
サポート対象バージョン
FireDAC ネイティブ ドライバでは、Sybase SQL Anywhere バージョン 5 以降をサポートしています。
Windows 版クライアント ソフトウェア
FireDAC を使用するには、以下の Sybase SQL Anywhere x86 または x64 ODBC ドライバのいずれかをワークステーションにインストールする必要があります。
- "Adaptive Server Anywhere" ODBC ドライバ(バージョン 5 ~ 7 に接続する場合)
- "SQL Anywhere N" ODBC ドライバ。N は DBMS のメジャー バージョン番号(たとえば 8、9、10 など)。
推奨されるドライバは "SQL Anywhere N" です。 ODBC ドライバは Sybase SQL Anywhere SDK に含まれています。 また、ここからダウンロードすることもできます。
SQL Anywhere ODBC ドライバが正しくインストールされていない場合は、接続を試みたときに以下の例外が発生します。
[FireDAC][Phys][ODBC][Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
アプリケーションで TFDASABackup などの SQL Anywhere サービス コンポーネントを使用している場合は、ワークステーションに以下の DLL をインストールする必要があります。
- DBTOOL<N>.DLL
- DBLIB<N>.DLL
N はお使いの SQL Anywhere のバージョンです。
macOS クライアント ソフトウェア
FireDAC を使用するには、以下が必要です。
- UnixODBC(libodbc.dylib)x86 ODBC ドライバ マネージャ ライブラリ。
- SQL Anywhere (libdbodbcNN.dylib) x86 ODBC ドライバ。
macOS 版の SQL Anywhere クライアント ソフトウェアはここからダウンロードすることができます。 インストール後、以下を行います。
- 以下を /usr/local/etc/odbcinst.ini に追加します:
[SQL Anywhere 16]
Description=SQL Anywhere v 16
Driver=/Applications/SQLAnywhere12/System/lib32/libdbodbc16_r.dylib
Setup=/Applications/SQLAnywhere12/System/lib32/libdbodbc16_r.dylib
UsageCount=1
- libodbcinst.dylib and libodbcinst.dylib.1 リンクを /Applications/SQLAnywhere12/System/lib32 フォルダから削除します(UnixODBC libodbcinst.dylib と競合するため)。これは、Sybase 開発チームが推奨している処置です。
- /Applications/SQLAnywhere12/System/bin32/sa_config.sh を実行します。
Linux クライアント ソフトウェア
FireDAC を使用するには、以下が必要です。
- UnixODBC(libodbc.so)x64 ODBC ドライバ マネージャ ライブラリ
- SQL Anywhere(libdbodbcNN.so)x64 ODBC ドライバ(さらに)
Linux に SQL Anywhere ODBC をインストールするには、次のコマンドを使用します:
wget http://d5d4ifzqzkhwt.cloudfront.net/sqla16client/sqla16_client_linux_x86x64.tar.gz tar -zxvf sqla16_client_linux_x86x64.tar.gz cd client1600 sudo ./setup -nogui -I_accept_the_license_agreement -silent sudo rm /opt/sqlanywhere16/lib64/libodbcinst.so sudo rm /opt/sqlanywhere16/lib64/libodbcinst.so.1 /opt/sqlanywhere16/bin64/sa_config.sh echo [SQL Anywhere 16] > asa.driver.template echo Description=SQL Anywhere ODBC Driver v 16 >> asa.driver.template echo Driver=/opt/sqlanywhere16/lib64/libdbodbc16_r.so >> asa.driver.template echo Setup=/opt/sqlanywhere16/lib64/libdbodbc16_r.so >> asa.driver.template sudo odbcinst -i -d -f asa.driver.template cd ..
- メモ: Linux ディストリビューションや UnixODBC の構成により、上記コマンドは少しずつ異なります。これらのコマンドは、Ubuntu Linux およびデフォルトの UnixODBC セットアップでテストされています。
ドライバのリンク
ドライバをリンクするには、以下のいずれかを行います。
- [ツール パレット]の[FireDAC Links]ページから TFDPhysASADriverLink コンポーネントをドロップします。
- uses 句に FireDAC.Phys.ASA ユニットを追加します。
接続定義パラメータ
SQL Anywhere DBMS に接続するには、ほとんどのアプリケーションで、DriverID、Server、Database、OSAuthent、User_Name、Password を指定する必要があります(詳細については、「接続の定義(FireDAC)」参照)。
DriverID=ASA
パラメータ | 説明 | 値の例 |
---|---|---|
Server | 接続先となる稼働中のデータベース サーバーの名前を指定します。 | ASASrv |
Database | 既に稼働中のデータベースに接続する場合に接続先となる読み込み済みのデータベースを指定します。 | |
OSAuthent |
認証モードを以下のように制御します。
|
No |
User_Name | OSAuthent=No の場合にデータベースへのログインに使用されるユーザー ID を指定します。 | dba |
Password | OSAuthent=No の場合にデータベースへのログインに使用されるユーザー パスワードを指定します。
'{' と '}' を含むパスワードはサポートされていません。 |
sql |
DatabaseFile | まだ稼働していないデータベースを起動したときに読み込んで接続するデータベース ファイルを指定します。既に稼働しているデータベースに接続する場合は、Database パラメータを使用します。 | |
Compress |
ネットワーク トラフィックの圧縮を以下のように制御します。
|
Yes |
Encrypt | クライアント アプリケーションとサーバーの間で送信されるパケットを、トランスポート層セキュリティか単純な暗号化を使って暗号化します。値は { NONE | SIMPLE | TLS( TLS_TYPE=<暗号>; [ FIPS={ Y | N }; ] TRUSTED_CERTIFICATES=<公開証明書> ) } という構文に従います。 |
|
LoginTimeout | 接続の確立中にアプリケーションがタイムアウトするまでの時間(秒単位)を制御します(0 の場合は無限に待つことを指定します)。 | 30 |
ApplicationName | 管理者が特定のクライアント接続の確立元をデータベース サーバーから特定する際に役に立ちます。確立元の文字列は SELECT CONNECTION_PROPERTY('AppInfo') という SQL 文を使って取得できます。 | AllBooks |
ODBCAdvanced | その他の任意の ODBC 接続パラメータ値を追加で指定することができます。デフォルト値は "CommLinks=ShMem,TCP" です。CommLinks が指定されている場合はサーバーが自動起動しないことに注意してください。 | AutoStart=Yes;CharSet=Windows-1251 |
MetaDefCatalog | デフォルト データベース名。カタログ名が MetaDefCatalog と同じ場合、設計時コードではオブジェクト名からカタログ名が省略されます。 | addemo |
MetaDefSchema | デフォルト スキーマ名です。スキーマ名が MetaDefSchema と同じ場合、設計時コードでは、オブジェクト名からそのスキーマ名が省略されます。 | dba |
使用例
ローカル サーバーを自動起動し、データベース ファイル "C:\sybase\addemo_asa10.db" を開く場合:
DriverID=ASA ODBCAdvanced=AutoStart=Yes DatabaseFile=C:\sybase\addemo_asa10.db User_Name=dba Password=sql MetaDefSchema=dba
- デフォルトのローカル サーバーに接続する場合:
DriverID=ASA User_Name=dba Password=sql MetaDefSchema=dba
- サーバー インスタンス ASASrv で稼働しているデータベース ADDemo に接続する場合:
DriverID=ASA Server=ASASrv Database=ADDemo User_Name=dba Password=sql MetaDefSchema=dba
- 別のネットワーク内のサーバー インスタンス ASASrv で稼働しているデータベース ADDemo に接続する場合:
DriverID=ASA ODBCAdvanced=CommLinks=tcpip(host=227.12.66.1) Server=ASASrv Database=ADDemo User_Name=dba Password=sql MetaDefSchema=dba