次に、SQL Anywhere バージョン 11.0.0 でのプログラミング・インタフェースの強化を示します。
新しい SQL Anywhere C API SQL Anywhere C アプリケーション・プログラミング・インタフェース (API) により、PHP、Perl、Python、Ruby など、複数のインタプリタ型プログラミング言語での C や C++ ラッパ・ドライバの作成が簡単になります。SQL Anywhere C API は DBLIB ライブラリの上層に位置し、Embedded SQL で実装されています。
DBLIB に代わるものではありませんが、この API は、C や C++ によるアプリケーションの作成を簡単にします。SQL Anywhere C API を使用するのに、Embedded SQL に関する高度な知識は必要ありません。SQL Anywhere C API リファレンスを参照してください。
新しい Python データベース API (sqlanydb) 新しい Python データベース API (sqlanydb) を使用すると、Python で作成されたスクリプトから SQL Anywhere データベースにアクセスできるようになります。sqlanydb モジュールは、Python データベース API 仕様バージョン 2.0 を拡張して実装しています。SQL Anywhere Python データベース・サポートを参照してください。
外部環境 SQL Anywhere で、Java、Perl、PHP、CLR、Embedded SQL、ODBC の 6 つの外部ランタイム環境がサポートされるようになりました。これまで SQL Anywhere では、C または C++ で記述されたコンパイル済みネイティブ関数を呼び出すことができました。ただし、これらのプロシージャがサーバで実行されるとき、ダイナミック・リンク・ライブラリまたは共有オブジェクトが常にデータベース・サーバによってロードされ、ネイティブ関数への呼び出しがデータベース・サーバによって行われていました。この方法には、ネイティブ関数が原因で障害が発生した場合、データベース・サーバがクラッシュするというリスクがあります。データベース・サーバの外部環境でコンパイル済みネイティブ関数を実行できると、サーバへのこれらのリスクをなくすことができます。SQL Anywhere 外部環境のサポートを参照してください。
この新機能を使用するには、データベースをアップグレードする必要があります。SQL Anywhere のアップグレードを参照してください。
PHP 外部環境のサポート SQL Anywhere 11.0.0 には、5.1.1 ~ 5.1.6 と 5.2.0 ~ 5.2.6 を含むさまざまな PHP バージョン用の構築済みバイナリが含まれます。このいずれかのバージョンをサーバ・コンピュータにインストールしてある場合は、PHP 外部環境を自分で構築しないで SQL Anywhere の構築済みバイナリを使用してください。Linux と Solaris 用には、32 ビットと 64 ビットの両方のバージョンのバイナリが用意されています。Windows とその他のシステム用には、32 ビットのバージョンだけがあります。
上記とは異なる PHP バージョンをインストールしてある場合は、ソフトウェアを構築するか、PHP バージョンを、SQL Anywhere の構築済みバージョンと同じバージョンに切り替える必要があります。SQL Anywhere PHP モジュールの構築方法については、SQL Anywhere PHP APIを参照してください。
Perl 外部環境のサポート Perl 外部環境を使用する前に、SQL Anywhere Perl DBD ドライバのバージョンを更新することが非常に重要です。Perl DBD ドライバを更新しなかった場合、サーバ側 Perl は機能しません。
また、PHP とは異なり、Perl のさまざまなバージョン用の構築済みバイナリは含まれません。SQL Anywhere Perl DBD ドライバのソース・コードは install-dir\SDK\perl にあります。SQL Anywhere Perl DBD ドライバの構築方法については、SQL Anywhere Perl DBD::SQLAnywhere DBI モジュールを参照してください。
Web サーバでの UTF-8 URL のサポート これまでは、要求 URL (または要求の本文内の application/x-www-form-urlencoded データ) 内のパーセント記号 (%) でコード化されたデータが、Web サーバによってデータベースの文字セットに復号化されていました。このリリースでは、パーセント記号 (%) でコード化されたデータの内容で、UTF-8 シーケンスの有無がテストされ、最大エクステントに基づいてデータベースの文字セットに変換されるようになりました。UTF-8 以外でコード化されたデータは、復号化され、すでにデータベースの文字セットになっているかのように処理されます。
クライアント HTTP アプリケーションではパーセント記号 (%) でコード化された UTF-8 データを排他的に送信する必要があります。ASCII は UTF-8 でそのまま表されます。たとえば、スペースは %20 とコード化されます。
新しいクライアント・コールバック API クライアント側でデータのロードとアンロードを実行する新しい機能のサポートのために、新しいクライアント・コールバック API が追加されました。Embedded SQL については、db_register_a_callback 関数の「DB_CALLBACK_VALIDATE_FILE_TRANSFER」を参照してください。ODBC については、SQL Anywhere の接続属性の「SA_REGISTER_VALIDATE_FILE_TRANSFER_CALLBACK」を参照してください。
SQL_ATTR_CONNECTION_DEAD による切断された接続の検出の高速化 ODBC の SQLGetConnectAttr 呼び出しを使用して SQL_ATTR_CONNECTION_DEAD 属性を取得すると、接続が切断されていた場合、切断後にサーバに要求が送信されていなくても、値 SQL_CD_TRUE が取得されるようになりました。接続が切断したかどうかの確認は、サーバに要求を送信しないで行われ、切断された接続は数秒以内に検出されます。接続が切断されるのには、アイドル・タイムアウトなどの複数の理由があります。この変更の前は、SQL_ATTR_CONNECTION_DEAD で値 SQL_CD_TRUE が取得されたのは、接続が明示的に切断されたか、接続が切断された後に、SQLExecDirect を呼び出すなどして ODBC ドライバからサーバに要求が送信された場合だけでした。接続属性の取得を参照してください。
JDBC ドライバでの ResultSet.getBlob().getBinaryStream() のサポート iAnywhere JDBC ドライバでは、現在 ResultSet.getBlob() メソッドがサポートされています。このメソッドは、JDBC 仕様ではオプションです。オプションの ResultSet.getBlob().getBinaryStream() メソッドのサポートが追加されました。iAnywhere JDBC 3.0 API のサポートを参照してください。
iAnywhere JDBC ドライバで URL ヘッダとして jdbc:odbc に加えて jdbc:ianywhere を許可 これまでは、URL ヘッダ jdbc:odbc を使用するアプリケーションでは、この URL への接続時に JDBC ドライバ・マネージャで iAnywhere JDBC ドライバが使用されると見なすことができました。しかし、Java VM の最近のバージョンでは JDBC ドライバとして Sun JDBC-ODBC ブリッジが登録されるようになり、Sun JDBC-ODBC ブリッジでは jdbc:odbc で始まる URL も許可されるので、アプリケーションに iAnywhere JDBC ドライバではなく Sun JDBC-ODBC ブリッジが使用される可能性が高くなりました。JDBC ドライバ・マネージャで、Sun JDBC-ODBC ブリッジではなく iAnywhere JDBC ドライバが確実に使用されるようにするには、アプリケーションで URL ヘッダ jdbc:ianywhere を使用してください。JDBC クライアント・アプリケーションからの接続を参照してください。
ODBC ドライバ・マネージャでの driver=iAnywhere Solutions 11 - Oracle の許可 UNIX ODBC ドライバ・マネージャで driver=iAnywhere Solutions 11 - Oracle が許可されるようになりました。また、アプリケーションがスレッド化されている場合は、スレッド化された Oracle 用 iAnywhere ODBC ドライバがロードされます。アプリケーションがスレッド化されていない場合、ドライバはロードされません。スレッド化されていない Oracle 用 iAnywhere ODBC ドライバはサポートされていません。iAnywhere Solutions Oracle ドライバを参照してください。
ODBC ドライバ・マネージャでの driver=UltraLite 11 の許可 UNIX ODBC ドライバ・マネージャでは、driver=SQL Anywhere 10 が許可され、SQL Anywhere ODBC ドライバがロードされます (アプリケーションに応じて、スレッド・バージョンまたは非スレッド・バージョン)。UNIX ODBC ドライバ・マネージャでは driver=SQL Anywhere 11 と driver=UltraLite 11 も許可されるようになりました。Ultra Light ドライバの場合、ドライバ・マネージャでは Ultra Light ODBC ドライバのスレッド・バージョンだけがロードされます。このドライバはスレッド・バージョンだけが存在します。
TDS 接続の強化 SQL Anywhere データベース・サーバで、Open Client のログイン・サーバ名がデフォルト・データベースの名前と一致しなくてもデフォルト・データベースへの TDS 接続が可能になりました。ただし、接続文字列でデータベースを起動していないこと
(DBF=...
がないこと)、またデータベース・サーバでデータベースが 1 つだけ実行されていること、という条件を満たしている必要があります。
管理ツールのランチャの再配備の簡素化 データベース・ツール (Sybase Central、DBISQL、DBConsole、ML Monitor) のランチャ実行プログラムの再配備が簡単になりました。JAR ファイルの場所に関するレジストリのエントリやセット・ディレクトリ構造が不要になりました。各実行プログラムには、ツールのロード方法を詳細に示す (実行ファイルと同じ名前の) .ini ファイルが、実行ファイルと同じディレクトリに必要です。管理ツールの配備を参照してください。
SQL Anywhere の .NET データ・プロバイダでの分散トランザクションのエンリストのサポート .NET 2.0 フレームワークで、トランザクション・アプリケーションを記述するためのクラスが含まれる新しいネームスペース System.Transactions が導入されました。クライアント・アプリケーションで 1 つまたは複数の参加者が存在する分散トランザクションを作成し、そのトランザクションに参加できます。クライアント・アプリケーションでは、TransactionScope クラスを使用して、暗黙的にトランザクションを作成できます。接続オブジェクトでは、TransactionScope によって作成されたアンビエント・トランザクションの存在を検出し、自動的にエンリストできます。クライアント・アプリケーションでは、CommittableTransaction を作成し、EnlistTransaction メソッドを呼び出してエンリストすることもできます。
この機能は SQL Anywhere .NET 2.0 データ・プロバイダでサポートされています。分散トランザクションには、大きなパフォーマンスのオーバヘッドがあります。非分散トランザクションにデータベース・トランザクションを使用することをおすすめします。Transaction 処理を参照してください。
SQL Anywhere .NET データ・プロバイダでの名前付きパラメータのサポート SQL Anywhere プロバイダで、SACommand の名前付きパラメータがサポートされるようになりました。ユーザがすべてのパラメータ名を指定すると、コマンドの実行時にプロバイダによってパラメータ値がマッピングされます。名前付きパラメータを使用するとき、パラメータの順序が、ホスト変数の順序と一致している必要はありません。
SACommand cmd = new SACommand( "UPDATE MyTable SET name = :name WHERE id = :id", conn ); SAParameter p1 = new SAParameter( "id", SADbType.Integer ); p1.Direction = ParameterDirection.Input; p1.Value = 1; cmd.Parameters.Add( p1 ); SAParameter p2 = new SAParameter( "name", SADbType.Char, 40 ); p2.Direction = ParameterDirection.Input; p2.Value = "asdasd"; cmd.Parameters.Add( p2 ); cmd.ExecuteNonQuery(); |
Web サービスの強化 このリリースでは、次の Web サービスが強化されています。
HTTP:POST タイプの Web クライアント・サービス・プロシージャの拡張によるユーザ定義の本文の許可 CREATE PROCEDURE 文と CREATE FUNCTION 文の TYPE 句が拡張され、MIME タイプを指定できるようになりました。CREATE FUNCTION 文 [Web サービス]またはCREATE PROCEDURE 文 [Web サービス]を参照してください。
Web サービス・クライアント・プロシージャの拡張による PUT、DELETE、HEAD HTTP の各メソッドのサポート Web サービス・クライアントのプロシージャと関数で PUT、DELETE、HEAD HTTP の各メソッドがサポートされるようになりました。CREATE PROCEDURE 文と CREATE FUNCTION 文の TYPE 句が拡張され、これらのメソッドがサポートされるようになりました。POST メソッドと同様に、PUT では TYPE 句内に Content-Type の拡張を必要とし、1 つの (非代入) パラメータだけが許可されています。CREATE SERVICE 文、CREATE FUNCTION 文 [Web サービス]、CREATE PROCEDURE 文 [Web サービス]を参照してください。
sa_http_php_page システム・プロシージャと sa_http_php_page_interpreted システム・プロシージャ 新しい Web サービス・システム・プロシージャ sa_http_php_page と sa_http_php_page_interpreted は、PHP インタプリタを経由して渡された PHP スクリプトの結果を返します。sa_http_php_page システム・プロシージャとsa_http_php_page_interpreted システム・プロシージャを参照してください。
HTTP_BODY システム関数 Web サービスの新しい関数が追加されました。HTTP_BODY 関数は、HTTP 要求の本文をバイナリ形式で返します。HTTP_BODY 関数 [HTTP]を参照してください。
WSDLC での Web サービス・クライアント SOAP プロシージャ生成のサポート C# と JAVA 用の QAnywhere クライアントサイド SOAP インタフェースの生成に加えて、WSDLC では、SQL Anywhere 用の SQL SOAP (Web サービス) クライアント・プロシージャの生成がサポートされるようになりました。WSDLC では、WSDL1.1 準拠の URL またはファイルが読み込まれ、WSDL 内に記述された対応する各 SOAP 操作にマッピングする、適切なパラメータと句を持つプロシージャ (または関数) が生成されます。生成された SQL 文は SQL ファイルに書き込まれます。iAnywhere WSDL コンパイラの使用を参照してください。
FORMAT 句を指定して定義した HTTP SOAP サービスに EXPLICIT OFF または ON を追加可能 HTTP SOAP サービスを作成するとき、FORMAT 句のデフォルトは EXPLICIT ON です。このため、DISH サービスによって生成される WSDL では、結果セットで返されるカラムごとに明示的な名前とデータ型が指定されます。したがって、結果セットを表すクライアント側のオブジェクトとインタフェースを SOAP クライアント・ツールキットで自動的に生成でき、カラム値へのネイティブ・アクセスが可能です。この機能が追加される前は、カラム値は、抽象 XML データ要素としてのみアクセスできました。EXPLICIT OFF を指定すると、この以前の動作を有効にできます。
EXPLICIT 応答オブジェクトまたは汎用の SimpleDataset の定義方法の詳細については、CREATE SERVICE 文とチュートリアル:JAX-WS でのデータ型の使用を参照してください。
JSON Web サービスのサポート SQL Anywhere で、JSON 形式の応答を返す Web サービスがサポートされるようになりました。CREATE SERVICE 文を参照してください。
Web サービスのクライアントのロギング データベース・サーバで、Web サービス・クライアントの接続を出力ファイルにロギングできるようになりました。-zoc サーバ・オプションを指定するか、WebClientLogFile プロパティと WebClientLogging プロパティを sa_server_option システム・プロシージャとともに使用して、ログを制御し、Web サービス・クライアントのログ・ファイルの場所を指定できます。-sf サーバ・オプションを使用してこの機能の使用を無効にすることもできます。次の項を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |