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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere 11 - 変更点とアップグレード » バージョン 8.0.0 の新機能 » バージョン 8 での動作の変更

 

Adaptive Server Anywhere の動作の変更

ここでは、これまでのバージョンとは異なる動作について説明します。

新たに廃止予定の機能およびサポートが終了した機能のリストについては、廃止予定機能とサポート終了機能を参照してください。

  • データベース内の Java は、別途ライセンスが必要   この結果、データベース作成時のデフォルト動作では、データベース内の Java のサポートが除外されます。

    Ultra Light ジェネレータが外部 Java 仮想マシンを使用するように変更されているので、データベース内の Java は、Ultra Light リファレンス・データベースで必要ではなくなりました。

    詳細については、SQL Anywhere 11 のコンポーネントを参照してください。

  • 集合関数と外部参照   Adaptive Server Anywhere のバージョン 8 は、サブクエリでの集合関数の使用法を明確に規定した新しい SQL/99 標準に準拠しています。この変更は、Adaptive Server Anywhere の以前のバージョン用に記述された文の動作に影響を与えます。以前は正しかったクエリでエラー・メッセージが生成され、結果セットが変わる可能性があります。

    詳細については、集合関数と外部参照を参照してください。

  • ユーザが提供する選択性推定   Adaptive Server Anywhere では、アクセス・プランの選択を支援する選択性推定を明示的に指定できます。これらの推定は、ソフトウェアが選択したアクセス・プランが不適切な場合のパフォーマンス問題を回避するときに最も有効でした。新しい user_estimates 接続オプションは、ユーザが提供した選択性推定をオプティマイザが使用するか無視するかを制御します。

    パフォーマンス問題を回避するために選択性推定を使用している場合は、明示的な推定が不正確になり、オプティマイザが不適切なプランを選択する可能性があるので、user_estimates オプションの設定を OFF にすることをおすすめします。今回のバージョンでは、内部ジョイン・アルゴリズムなどのクエリ処理の強化が追加されているため、クエリのパフォーマンスが大幅に向上しています。

    ユーザが提供する選択性推定の詳細については、user_estimates オプション [データベース]明示的な選択性推定を参照してください。

  • ローの順序   バージョン 8.0 では、クエリ処理の向上による副作用として、ローの順序の確定性が低下しています。ORDER BY 句がない場合は、Adaptive Server Anywhere が最も効率のよい順序でローを返します。これは、結果セットの提示が、最後にアクセスしたローとその他の要因によって変化する可能性があることを意味します。特定の順序でローが返されるようにする唯一の方法は ORDER BY を使用することです。

    LIST 関数は、この変更によって特に影響を受ける関数の 1 つです。

  • アクセス・プランの変更   Adaptive Server Anywhere の今回のリリースで選択されるアクセス・プランは、以前のリリースほどインデックスを使用しない傾向があります。テーブル・スキャンの効率を向上させ、アクセス・プランのコスト比較時に選択の幅があるコスト・モデルを使用することによって、インデックスの利便性をこれまでのバージョンよりも正確に評価できるようになりました。

  • カーソルの変更   カーソルの強化の副効用として、このバージョンのカーソルは、定義された規格に以前よりも近い動作をするようになりました。このため、Adaptive Server Anywhere が ODBC やその他のインタフェースの要求に合致する動作を行うように、一部のカーソルの反応が変更される場合があります。たとえば、Embedded SQL の SCROLL カーソルではプリフェッチが実行できなくなったため、値の変更がカーソルに反映されます。

    この変更は、SQL_SUCCESS へのリターン・コードのみをチェックし、SQL_SUCCESS_WITH_INFO のチェックはしていない既存のアプリケーションに影響します。SQL_SUCCESS_WITH_INFO に対してチェックを行うアプリケーションでは、カーソルの動作が要求された動作と異なる場合は、警告を受け取ります。この警告は、SQLCODE=121、SQLSTATE 01S02 です。

    insensitive カーソルは更新できません。

    詳細については、insensitive カーソルを参照してください。

  • ストアド・プロシージャの格納   ストアド・プロシージャは、書かれたとおりに格納されるようになりました。Adaptive Server Anywhere は、ストアド・プロシージャの内部表現を作成し、これをプロファイリングに使用します。

  • 挿入時の OPEN CURSOR はサポート対象外   INSERT 文でカーソルを開く機能は削除されました。更新可能なカーソルは、業界標準と同じように SELECT 文を使用して開くことができます。

  • ユーザ定義関数   ユーザ定義関数のパラメータと戻り値は、キャッシュされるようになりました。SQL 文の中で関数が複数回使用される場合は、キャッシュされたパラメータ値は、関数を再評価するのではなく、使用されたキャッシュ済みの結果になります。以前のリリースでは、ユーザ定義関数が必要になるたびに再評価されていました。この新しい動作によってパフォーマンスが向上し、さらに一貫性のある結果が得られますが、以前のリリースのソフトウェアと比較すると結果が異なっている場合があります。

  • NUMBER(*) 関数の変更   NUMBER 関数は、不確定な動作を回避するために使用を制限されています。NUMBER は、クエリの選択リストの中で、結果セットのローに連番を振ることを目的としていますが、この使い方はまだ許可されています。

    NUMBER 関数は、-1 の値を使用して絶対フェッチを実行した後にカーソルを逆向きに移動するなどの動作を行った場合に、以前のバージョンでは発生しなかった負の値を戻すことがあります。この新しい動作は、ISO/ANSI フェッチ・オフセットに対応しています。

    NUMBER 関数を WHERE 句または HAVING 句など、多くの状況で使用すると、エラーが発生するようになりました。

    詳細については、NUMBER 関数 [その他] を参照してください。

  • カスタム照合の変更   以前は、照合ユーティリティの -d オプションは 3 つのパラメータを受け付けていましたが、現在使用できるパラメータは 2 つだけになりました。cust-map-file パラメータは、現在は受け付けられません。

    さらに、現在はスクリプト・ファイル collsqmp.sqlcustmap.sql は存在しないため、それぞれ組み込み照合とカスタム照合で使用できません。

    新しく作成されたデータベースでは、SYSCOLLATIONMAPPINGS テーブルに照合マッピングを持つローが 1 つだけ格納されます。Adaptive Server Anywhere の以前のバージョンで作成されたデータベースでは、このテーブルに組み込み照合のためのローが格納されています。

  • トリガ名の変更   トリガ名は、データベース全体でユニークなものにする必要はなくなりました。ユニークである必要があるのは、トリガが適用されるテーブルの中だけです。したがって、DROP TRIGGER と COMMENT ON TRIGGER の構文が変更され、テーブルも指定した場合には所有者だけを指定できるようになりました。つまり、所有者だけでトリガを修飾する古いスクリプトでは、「テーブルが見つかりません」のエラーが発生します。

  • サンプル・データベース内のアドレスの変更   Adaptive Server Anywhere 9.0 のサンプル・データベース内のアドレスは、以前のリリースのものとは異なります。

  • 内部 JDBC ドライバの JAR ファイル名の変更   内部 JDBC ドライバのクラスは ASAJDBC ではなく ASAJRT という名前の JAR ファイルでインストールされるようになりました。

  • RESTORE DATABASE 文のパーミッション   RESTORE DATABASE 文を実行するのに、ユーティリティ・データベースに接続する必要はなくなりました。RESTORE DATABASE 文を実行するために必要なパーミッションは、-gu コマンド・ライン・オプションによって制御されます。

    詳細については、RESTORE DATABASE 文を参照してください。

  • TDS 接続では空文字列を NULL 文字列で返す   tds_empty_string_is_null オプションは、TDS 接続でサーバが空文字列を返す場合、ブランク文字 1 文字を含む文字列または NULL 文字列のどちらで返すかを制御します。

    詳細については、tds_empty_string_is_null オプション [データベース]を参照してください。

  • COMMENT 文の変更   以前は、COMMENT ON INDEX の構文には、インデックスの所有者名がオプションで含まれていました。インデックス名に所有者とテーブルをオプションで入れることができるようになりました。COMMENT ON INDEX の構文は次のとおりです。

    COMMENT ON INDEX [ [ owner.]table.]index-name IS comment

    詳細については、COMMENT 文を参照してください。

  • 文字セット変換がデフォルトで有効   Adaptive Server Anywhere の以前のバージョンでは、文字セット変換はデフォルトで無効に設定され、有効にするには、-ct コマンド・ライン・オプションを指定する必要がありました。文字セット変換はデフォルトで有効になりましたが、-ct- コマンド・ライン・オプションを使用すると無効にできます。

    サーバが接続の文字セットとデータベースの文字セットが異なると判断すると、サーバはその接続との間で送受信されるすべての文字列に対して文字セット変換を適用します。

    サーバがデータベースと接続の文字セットが等しいと判断すると、サーバはその接続に対する文字セット変換を無効にします。

    ほとんどの場合、文字セット変換は有効に設定しておいてください。設定を無効にするのは、バイナリ・データがデータベースに挿入され、文字データとしてフェッチされた場合 (あるいはその逆の場合) です。サーバは文字データに対してのみ文字セット変換を適用するため、このような場合には、入力されたとおりのデータが返されないことがあります。この問題を回避するには、アプリケーションでバイナリ型を使って文字データの送信やフェッチを行わないようにします。

  • CONVERT、timestamp_format、date_format   timestamp_format または date_format オプションを使用するときに、大文字と小文字の混在する文字記号 (Mmm など) を指定すると、Adaptive Server Anywhere は使用されている言語に適切な大文字または小文字を選択します。また、CONVERT 関数は、使用されている言語に適切な大文字または小文字に文字日付を変換するようになりました。たとえば、英語では May、フランス語では mai が正しい大文字と小文字の用法です。

    詳細については、date_format オプション [データベース]timestamp_format オプション [互換性]CONVERT 関数 [データ型変換]を参照してください。

  • 3 値的ブール論理への変更   2 値的ブール論理は、expr = NULL の場合にのみ適用されます。ここで、expr はベース・カラムまたはベース・カラムについての式を指します。それ以外の場合は、3 値的論理が適用されます。ansinull オプションは、クエリの WHERE 句のこの特別なケースにのみ影響するようになりました。

  • Sybase Central と Interactive SQL が COMMLINKS 接続パラメータを受け入れる   Adaptive Server Anywhere の以前のバージョンでは、Sybase Central と Interactive SQL (dbisql ユーティリティ) は、COMMLINKS 接続パラメータを無視していました。Sybase Central と Interactive SQL は、このパラメータを受け入れるようになりました。

    この変更により、一部の接続文字列の動作が、Adaptive Server Anywhere の以前のバージョンでの動作とは異なる場合があります。具体的には、COMMLINKS=tcpip を指定しないと、Interactive SQL と Sybase Central はネットワーク上のサーバを探しません。

    詳細については、CommLinks 接続パラメータ [LINKS] を参照してください。

  • クライアントは SQLLOCALE 環境変数を無視する   クライアントは CharSet 接続パラメータを使用して接続に使用する文字セットを指定できます。Adaptive Server Anywhere の以前のバージョンでは、CharSet 接続パラメータの指定がない場合、クライアントのデフォルト文字セットの変更には、SQLLOCALE 環境変数の CHARSET パラメータが使用されていました。クライアントはこの SQLLOCALE 環境変数を無視するようになりました。

  • サポートされない文字セットを使用すると接続が失敗する   クライアントは CharSet 接続パラメータを使用して接続に使用する文字セットを指定できます。ただし、サーバが要求された文字セットをサポートしていないと、接続は失敗します。Adaptive Server Anywhere の以前のバージョンでは、クライアントがサポートされていない文字セットを要求すると、警告は表示されましたが、接続は確立されました。クライアントが文字セットを指定せず、サーバがクライアントのローカル文字セットをサポートしていない場合、接続は確立されますが、文字セットがサポートされていないことを知らせる警告が表示されます。

    この動作は、バージョン 6.x、バージョン 7.x、バージョン 8 データベース・サーバに接続するバージョン 8 クライアントで発生します。

  • デフォルト・パケット・サイズの変更   クライアント/サーバ通信のデフォルト・パケット・サイズが、1024 バイトから 1460 バイトに変更されました。

    パケット・サイズの詳細については、CommBufferSize 接続パラメータ [CBSIZE]-p サーバ・オプションを参照してください。

  • dbdsn ユーティリティが管理するのは Adaptive Server Anywhere データ・ソースのみ   Adaptive Server Anywhere ODBC データ・ソースを管理する dbdsn ユーティリティは、Adaptive Server Anywhere データ・ソースのみを管理するように明示的に制限されるようになりました。

  • login_procedure オプションには DBA 権限が必要   login_procedure オプションは、DBA 権限を持つユーザだけが設定できます。Adaptive Server Anywhere の以前のバージョンでは、このオプションは DBA 権限を持たなくても設定できました。DBA 権限を持つユーザは、他のユーザの設定も変更できますが、DBA 権限を持たないユーザは自分の設定の変更もできません。この変更により、DBA は、必要に応じて、ユーザの接続時に確実に共通のプロシージャを実行することができます。

    詳細については、login_procedure オプション [データベース]を参照してください。

  • ESTIMATE_SOURCE が返す新しい値   ESTIMATE_SOURCE 関数は、以前よりも詳細な値を返します。

    詳細については、ESTIMATE_SOURCE 関数 [その他] を参照してください。

廃止予定機能とサポート終了機能

次に、サポートを終了した機能の中で、既存のアプリケーションに影響する可能性があるものを示します。

  • NetWare 4.10 のサポート終了   Novell NetWare バージョン 4.11 以降は引き続きサポートされています。バージョン 3.x と 4.10 はサポートされていません。

  • NetBIOS のサポート終了   NetBIOS ポートは、サポートされなくなりました。NetBIOS を使用する場合は、TCP/IP または SPX に切り替えてください。

  • IPX のサポート終了   IPX ポートは、サポートされなくなりました。IPX を使用する場合は、SPX または TCP/IP に切り替えてください。

  • 廃止予定の照合   次の照合は、サポートされなくなりました。別の照合に置き換えられた照合は、その旨明記されています。

    廃止された照合

    置き換えられた照合

    437

    437LATIN1

    850

    850LATIN1

    852

    852LATIN2

    860

    860LATIN1

    863

    863LATIN1

    865

    865NOR

    SJIS

    932JPN

    SJIS2

    932JPN

    WIN_LATIN1

    1252LATIN1

    WIN_LATIN5

    1254TRK

    Internal

    850LATIN1

    437EBCDIC

  • -e オプションのサポート終了   データ・ソース・ユーティリティでクライアント/サーバ通信を暗号化するために使用されていた -e コマンド・ライン・オプションと -e オプションは、サポートされなくました。代わりに、-ec オプションが使用されます。サーバ側の -ec simple は、Adaptive Server Anywhere の以前のバージョンの -e と同じ暗号化アルゴリズムを使用します。

  • 廃止予定の None パラメータ   isql_plan オプションの None パラメータは、サポートされなくなりました。クエリ最適化プランは、[結果] ウィンドウ枠の [プラン] タブに表示されるようになりました。[プラン] タブをクリックすると、常にプランが表示されます。以前は、プランは [メッセージ] ウィンドウ枠に表示されていました。

  • 廃止予定の WITH HASH SIZE n 句   WITH HASH SIZE 句は、サポートされなくなりました。

  • 廃止予定の max_work_table_hash_size オプション   max_work_table_hash_size オプションは、サポートされなくなりました。

  • 廃止予定の max_hash_size オプション   max_hash_size オプションは、サポートされなくなりました。

  • 廃止予定の SATMP 環境変数   Adaptive Server Anywhere の UNIX バージョンで使用されていた、テンポラリ・ファイルの保存ディレクトリを示す SATMP 環境変数は、サポートされなくなりました。UNIX では、ASTMP 環境変数を使用してテンポラリ・ファイルの保存場所を示すことができます。

    詳細については、SATMP 環境変数を参照してください。

  • dbtran -id オプションの削除   新しいバージョンでは、dbtran ユーティリティの -id コマンド・ライン・オプションが廃止されました。