SAP SQL Anywhere のプロキシーテーブルにおける制限 (仕様)

 

この記事のオリジナルは、Glenn Paulley が sybase.com に 2012 年 3 月に掲載したものです。Glenn はこの記事で SQL Anywhere のリモートデータアクセス機能に関連する制限について解説しています。

===

プロキシーテーブルは、リモートデータアクセスまたは OMNIと呼ばれることもありますが、全て同じ接続から異なるデータベースのテーブルにクエリを実行したり変更したりするのに便利な方法です。

 

SQL Anywhere のプロキシーテーブルは、ゆるく一対となるマルチデータベースシステムの実装です。基本となるデータベースは、SQL Anywhereである必要はなく、ODBCをサポートするデータソースであれば、何でも構いません。そのため、基本となるプロキシーのベースのテーブルは、Oracle のテーブルでも、Microsoft SQL Server のテーブルでも、あるいは Excel でも構いません。

プロキシーテーブルのスキーマをデータベースのカタログ内に定義すれば、そのテーブルはその他のテーブルと同様にそのデータベース内のローカルテーブルとして定義されているかのようにクエリを実行することができます。

 

これが全体概念ですが、これの実装にはいくつかの注意点があります。特にその中の一つについてここで説明したいと思います。これは、長くSQL Anywhere を使用されているお客様、Frank Vestjens 氏が(旧)NNTP ニュースグループ sybase.public.sqlanywhere.general に以下のSQL バッチについて質問されたことがきっかけです。

 

  1. begin
  2.   declare dd date;
  3.   declare tt time;
  4. declareresultaatnumeric;
  5.   //
  6.   set dd = ‘2012-06-07’;
  7.   set tt = ’15:45:00.000′;
  8.   //
  9.   message dd + tt type info to console;
  10.   //
  11.   select first Id into resultaat
  12.   from p_mmptankplanning
  13.   where arrivalDate + IsNull(arrivaltime,’00:00:00′) <= dd+tt
  14.   order by arrivaldate+arrivalTime,departuredate+departureTime;
  15. end

このバッチは、ローカルテーブル p_mmptankplanning ではうまく機能しますが、テーブルがプロキシーテーブルである場合にはエラーになります。エラーは “Cannot convert 2012-06-0715:45:00.000 to a timestamp” となります。

 

続きはこちら:SAP SQL Anywhere のプロキシーテーブルにおける制限 (仕様)

 

SAPのSAP SQL Anywhere製品ページはこちら