Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere 16 変更点とアップグレード » バージョン 11.0.0 の新機能 » SQL Anywhere » SQL Anywhere の新機能

 

プログラミングインタフェース

次に、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 を拡張して実装しています。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 拡張を参照してください。

  • Perl 外部環境のサポート   Perl 外部環境を使用する前に、SQL Anywhere Perl DBD ドライバのバージョンを更新することが非常に重要です。Perl DBD ドライバを更新しなかった場合、サーバ側 Perl は機能しません。

    また、PHP とは異なり、SQL Anywhere には Perl のさまざまなバージョン用の構築済みバイナリは含まれません。SQL Anywhere Perl DBD ドライバのソースコードは %SQLANY11%\SDK\perl にあります。SQL Anywhere Perl DBD ドライバの構築方法については、Perl 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 については、SQLSetConnectAttr 拡張接続属性の 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() メソッドのサポートが追加されました。JDBC 4.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 ドライバはサポートされていません。SQL Anywhere 16 - Oracle ODBC ドライバを参照してください。

  • 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 データプロバイダでサポートされています。分散トランザクションには、大きなパフォーマンスのオーバヘッドがあります。非分散トランザクションにデータベーストランザクションを使用することをおすすめします。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 文 [HTTP Web サービス]CREATE SERVICE 文 [SOAP Web サービス]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 関数 [Web サービス]を参照してください。

    • WSDLC での Web サービスクライアント SOAP プロシージャ生成のサポート   WSDLC では、SQL Anywhere 用の SQL SOAP (Web サービス) クライアントプロシージャの生成がサポートされるようになりました。WSDLC では、WSDL1.1 準拠の URL またはファイルが読み込まれ、WSDL 内に記述された対応する各 SOAP 操作にマッピングする、適切なパラメータと句を持つプロシージャ (または関数) が生成されます。生成された SQL 文は SQL ファイルに書き込まれます。

    • FORMAT 'CONCRETE' 句を指定して定義した HTTP SOAP サービスに EXPLICIT OFF または ON を追加可能   HTTP SOAP サービスを作成するとき、FORMAT 句のデフォルトは EXPLICIT ON です。このため、DISH サービスによって生成される WSDL では、結果セットで返されるカラムごとに明示的な名前とデータ型が指定されます。したがって、結果セットを表すクライアント側のオブジェクトとインタフェースを SOAP クライアントツールキットで自動的に生成でき、カラム値へのネイティブアクセスが可能です。この機能が追加される前は、カラム値は、抽象 XML データ要素としてのみアクセスできました。EXPLICIT OFF を指定すると、この以前の動作を有効にできます。

      EXPLICIT 応答オブジェクトまたは汎用の SimpleDataset の定義方法の詳細については、CREATE SERVICE 文 [SOAP Web サービス]チュートリアル:JAX-WS を使用した SOAP/DISH Web サービスへのアクセスを参照してください。

    • JSON Web サービスのサポート   SQL Anywhere で、JSON 形式の応答を返す Web サービスがサポートされるようになりました。CREATE SERVICE 文 [HTTP Web サービス]を参照してください。

  • Web サービスのクライアントのロギング   データベースサーバで、Web サービスクライアントの接続を出力ファイルにロギングできるようになりました。-zoc サーバオプションを指定するか、WebClientLogFile プロパティと WebClientLogging プロパティを sa_server_option システムプロシージャとともに使用して、ログを制御し、Web サービスクライアントのログファイルの場所を指定できます。-sf サーバオプションを使用してこの機能の使用を無効にすることもできます。次の項を参照してください。