前述の手順は、ローカルとリモートの両方の、すべてのクエリに実行されます。
以降の手順は、SQL 文の型と、作業に関わるリモート・サーバの機能によって異なります。
SQL Anywhere では、各リモート・サーバに機能が定義されています。これらの機能は、ISYSCAPABILITIES システム・テーブルに格納され、リモート・サーバへの最初の接続の間に初期化されます。
一般的なサーバ・クラスである odbc は、ODBC ドライバから返される情報から厳密にリモート・サーバの機能を判別します。db2odbc などのその他のサーバ・クラスには、リモート・サーバ・タイプの機能情報についてより詳細な情報があり、その情報を使用して、ドライバから返される情報を補います。
ISYSCAPABILITIES にサーバが追加されると、以後、そのリモート・サーバの機能情報はそのシステム・テーブルから取り出されるようになります。
リモート・サーバは特定の SQL 文の全機能をサポートしているとはかぎらないので、SQL Anywhere では、クエリがリモート・サーバに対応できるようになるまで、文を単純なコンポーネントに分割する必要があります。リモート・サーバに渡されない SQL 機能は、SQL Anywhere 自身が評価します。
たとえば、あるクエリに ORDER BY 文があるとします。リモート・サーバが ORDER BY を実行できない場合、ORDER BY を除いて、文がリモート・サーバに送信されます。SQL Anywhere は、結果が返されると、ORDER BY を実行してから結果をユーザに返します。その結果、ユーザは SQL Anywhere がサポートする全範囲の SQL を、特定のバックエンドの機能を考慮することなく使用できます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |