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 - 変更点とアップグレード » バージョン 10.0.1 の新機能 » SQL Anywhere

 

動作の変更と廃止予定機能

次に、バージョン 10.0.1 で導入された SQL Anywhere データベースとデータベース・サーバに加えられた変更を、カテゴリごとに示します。

動作の変更
  • クエリ内並列処理を使用するときの変更   クエリ内並列処理は、background_priority が on に設定されている接続には使用されなくなりました。また、現在要求を処理しているサーバ・スレッド数 (ActiveReq サーバ・プロパティ) が、データベース・サーバの使用ライセンスがあるマシンの CPU コア数を最近超えた場合は、クエリ内並列処理は使用されません。クエリ実行時の並列処理を参照してください。

    新しいサーバ・プロパティである ExchangeTasksCompleted は、データベース・サーバの起動後にクエリ内並列処理に使用された内部タスクの総数を返します。データベース・サーバ・プロパティを参照してください。

  • 暗号化の結果は決定的ではなくなった   以前は、ENCRYPT 関数を使用した値の暗号化は決定的でした。2 つの同一な入力文字列と 2 つの同一な暗号化キーを入力すると、同一の出力データ (暗号文) が返されていました。新しい encrypt_aes_random_iv データベース・オプションでは、暗号化が決定的であるかどうかを制御できるようになりました。新しいデフォルトの動作は、非決定的です。

    注意

    このデータベース・オプションのないデータベース・サーバ (バージョン 10.0.0 以前) では、たとえ Off であってもこのオプションが設定されたデータベースからはデータを復号化できません。

  • ALTER DBSPACE RENAME では、DB 領域が開かれていない場合に開こうとする   以前は、DB 領域を使用するデータベースが起動し、そのうちのいずれかの DB 領域が見つからなかった場合、その DB 領域に対して ALTER DBSPACE ...RENAME 文を実行すると、カタログで DB 領域名が更新されましたが、DB 領域の起動は試みられませんでした。今回のリリースでは、カタログの更新後に、データベース・サーバが DB 領域を開こうとするようになりました。ALTER DBSPACE 文を参照してください。

  • CREATE DBSPACE 文、ALTER DBSPACE 文、DROP DBSPACE 文に対する変更   CREATE DBSPACE 文と DROP DBSPACE 文では、事前に定義された DB 領域の名前 (SYSTEM、TEMPORARY、TEMP、TRANSLOG、TRANSLOGMIRROR) を受け入れなくなりました。以前のバージョンの SQL Anywhere データベース・サーバで作成されたデータベースのユーザ DB 領域が、事前に定義された DB 領域のいずれかと名前が同じ場合、データベース・サーバは常にユーザ DB 領域を参照します。事前定義の DB 領域を参照してください。

  • sa_conn_info システム・プロシージャの出力に対する変更   sa_conn_info システム・プロシージャの出力が変更され、接続が待機しているロックに関して詳細な情報が得られるようになりました。LockName フィールドは削除されました。それに代わって、LockRowID と LockIndexID という新しい 2 つのフィールドが追加されました。特定のロー識別子に関連付けられているロックで接続が待機している場合は、LockRowID にそのロー識別子が含まれます。特定のインデックスに関連付けられているロックで接続が待機している場合は、LockIndexID にそのインデックスの識別子が含まれます。sa_conn_info システム・プロシージャを参照してください。

    この機能を使用するには、データベースをアップグレードする必要があります。バージョン 10 以降のデータベースのアップグレードを参照してください。

  • 一部のシステム・プロシージャで DBA パーミッションは不要になった   sa_dependent_views、sa_get_dtt、sa_check_commit、sa_materialized_view_info の各システム・プロシージャでは、DBA パーミッションを必要とせず実行できるようになりました。

  • CREATE DATABASE 文のデフォルトの測定単位の削除   CREATE DATABASE 文を使用してデータベースを作成するときに DATABASE SIZE の値を指定する場合、オプションだった測定単位の指定は必須になりました。CREATE DATABASE 文を参照してください。

  • default_timestamp_increment オプションの新しい最大値   default_timestamp_increment オプションの最大値が 1000000 (1 秒) になりました。default_timestamp_increment オプション [データベース] [Mobile Link クライアント]を参照してください。

  • dbdata10.dll の削除   dbdata10 DLL (Dynamic Link Library) で提供されていた機能は、SQL Anywhere .NET プロバイダ DLL に組み込まれました。その結果、Windows CE では、SQL Anywhere .NET プロバイダ DLL にプラットフォーム固有のバージョンが用意されました。

  • NetWare におけるデフォルト・キャッシュ・サイズの増加   NetWare におけるデータベース・サーバのデフォルト・キャッシュ・サイズが 2 MB から 8 MB に増加されました。-c サーバ・オプションを参照してください。

  • クライアントでの文のキャッシュによる動作の変更   クライアントでの文のキャッシュをサポートした結果、次のような動作の変更が導入されました。

    • 同じ SQL 文で結果セットがないと記述された後になって結果セットが存在するような場合は、不正な記述が発生することがあります。次に例を示します。
      CREATE PROCEDURE p() NO RESULT SET BEGIN ... END
      Prepare, Describe, Drop "call p"
      ALTER PROCEDURE p() RESULT( ... ) BEGIN ... END
      Prepare, Describe, Drop "call p"  // describe returns no result set
    • クライアントでの文のキャッシュが有効で、RememberLastStatement が有効な場合 (-zl サーバ・オプション)、キャッシュされた文を再使用するときの LastStatement プロパティは空の文字列になります。
    • クライアントでの文のキャッシュが有効な場合、sa_get_request_times または sa_get_request_profile を使用して要求レベル・ログを処理する場合、文の実行回数が不正である可能性があります。max_client_statements_cached オプション [データベース]を参照してください。

  • 言語ユーティリティ (dblang) に管理者権限は不要になった   以前のバージョンの SQL Anywhere では、dblang ユーティリティを使用して SQL Anywhere のローカライズされたバージョンの言語設定を変更するために、ユーザは管理者としてログインする必要がありました。この要件はなくなりました。

  • DISH サービス名にスラッシュを使用できなくなった   DISH サービス名が誤って解釈されないように、スラッシュ (/) をサービス名の一部として使用できなくなりました。CREATE SERVICE 文を参照してください。

  • SACommand.UpdateRowSource のデフォルト値の変更   以前は、SACommand.UpdatedRowSource のデフォルト値は UpdatedRowSource.Both でしたが、UpdatedRowSource.OutputParameters に変更されました。UpdatedRowSource プロパティを参照してください。

  • PrefetchRows 接続パラメータのデフォルト値の変更   .NET データ・プロバイダを使用するとき、PrefetchRows 接続パラメータのデフォルト値が 10 から 200 に変更され、パフォーマンスが向上しました。SAConnectionStringBuilder.PrefetchRow のデフォルト値も 200 に変更されました。結果セットに BLOB カラムが含まれる場合、プリフェッチは無効です。PrefetchRows 接続パラメータ [PROWS]を参照してください。

  • 認証アプリケーションで saopts.sql ではなく authenticate.sql を使用するようになった   以前のリリースの SQL Anywhere OEM 版では、データベースの作成、再構築、または更新を行うたびに認証文が適用されるように、認証文をファイル install-dir\scripts\saopts.sql に格納するように推奨されていました。

    今回のリリースでは、認証文字列をファイル install-dir\scripts\authenticate.sql に格納するように推奨されています。認証データベースのアップグレードを参照してください。

  • HP-UX で長いホスト名を使用できるようになった   HP-UX 11i v2 September 2004 Update より、システム管理者はカーネル・パラメータを設定することで 255 バイトのホスト名のサポートを有効にできるようになりました。しかし、長いホスト名のサポートが有効な HP-UX コンピュータ上の SQL Anywhere サーバで、MachineName プロパティと AppInfo HOST キーは最長で 64 バイトのホスト名を返していました。今回のリリースでは、MachineName と AppInfo の両方で、255 バイトのホスト名を返せるようになりました。

  • iAnywhere JDBC ドライバの URL ヘッダ   以前のリリースでは、アプリケーションが iAnywhere JDBC ドライバを使用して SQL Anywhere に接続した場合、JDBC ドライバに渡される URL はヘッダ jdbc:odbc: で始まっていました。今回のリリースでは、jdbc:ianywhere: で始まる URL ヘッダも使用できるようになりました。Sun JDBC-ODBC ブリッジとの競合を避けるため、jdbc:ianywhere: を使用することをおすすめします。ドライバへの URL の指定を参照してください。

  • Remarks 値が 128 文字よりも長い場合の jConnect を使用したテーブル・リストの取得   以前は、JDBC アプリケーションが jConnect を使用して接続し、テーブルのリストを要求した場合、テーブルが存在していたとしても、結果は空になる可能性がありました。string_rtruncation オプションが On に設定され、アプリケーションが DatabaseMetaData.getTables メソッドを使用し、任意のテーブルの Remarks 値が 128 文字より長い場合に、このような状況が発生していました。今回のリリースでは、長すぎる Remarks 値は 128 文字にトランケートされるようになり、テーブルのリストが返されます。この変更を使用するには、jcatalog.sql を実行するか、データベースをアップグレードする必要があります。jConnect システム・オブジェクトのデータベースへのインストールまたはアップグレード・ユーティリティ (dbupgrad)を参照してください。

  • CHAR 値と NCHAR 値の比較   SQL Anywhere 10.0.0 では、CHAR ドメインと NCHAR ドメインを組み合わせると、NCHAR の比較になっていました。しかしこれにより、SQL_C_WCHAR としてバインドされたホスト変数を使用すると、10.0.0 にアップグレードしたアプリケーションでは異なる結果が得られたり、パフォーマンスが低下したりする可能性があります。SQL Anywhere 10.0.0 では、SQL_C_WCHAR としてバインドされた変数は NCHAR として表されます。SQL Anywhere 10.0.1 では新しい推定規則が導入されて、既存のアプリケーションとの互換性が向上し、CHAR ドメインと NCHAR ドメインを組み合わせたときに一貫性のある予測可能な結果を提供するようになりました。CHAR と NCHAR の比較を参照してください。

  • 2.6.12 より前の Linux カーネルで非同期 I/O が無効   2.6.12 より前のLinux カーネルでのバグにより、影響のあるカーネルのいずれかで SQL Anywhere データベース・サーバを実行すると、デフォルトで非同期 I/O が無効になります。非同期 I/O を使用する場合は、カーネルを 2.6.12 以降にアップグレードする必要があります。

  • OEM 版マニュアルの削除   以前のリリースの SQL Anywhere OEM 版では、認証アプリケーションを設定するための手順は、.pdf または .html ファイルに別途記載されていました。今回のリリースでは、この情報は次の場所に記載されています。

  • アンロード・ユーティリティの -e と -t オプションで、大文字と小文字が区別されるデータベースにおけるテーブル名の大文字と小文字の区別は不要になった   以前のリリースでは、dbunload ユーティリティを使用し、-e オプションまたは -t オプションを指定して大文字と小文字が区別されるデータベースをアンロードする場合、これらのオプションには大文字と小文字を区別したテーブル名を指定する必要がありました。今回のリリースでは、テーブル名は大文字と小文字が区別されません。

  • テンポラリ・テーブルへのデータのロード    テンポラリ・テーブルにデータをロードする際の動作が変更されました。ON COMMIT DELETE ROWS と指定して定義された LOCAL TEMPORARY TABLE を除いて、コミットは、テンポラリ・テーブルで LOAD TABLE を実行する前後に自動的に実行されます。ロードに失敗すると、テンポラリ・テーブル内のすべてのロー (ロードの前に存在したローを含む) が削除されるようになりました。

    ON COMMIT DELETE ROWS と指定して定義された LOCAL TEMPORARY TABLE の場合、動作の変更はなく、コミットは実行されません。つまり、ロード中に発生した障害によって部分的になったロードの場合は、この種のテンポラリ・テーブルには、ロードされたローの一部しか含まれず、ロード以前に存在したローが見つからないこともあります。

    また、別のテーブルの外部キーから参照されるローがテーブルに含まれている場合、テンポラリ・テーブルへのロードは失敗します。

    ON COMMIT DELETE ROWS を指定して定義された GLOBAL TEMPORARY TABLE にはロードできません。

  • UCA 照合を使用した日本語のデータベースに対する大文字と小文字の区別のデフォルト設定   日本語のデータベースを作成する場合の UCA 照合では、デフォルトで、大文字と小文字およびアクセント記号が区別されます。日本語のデータベースとは、OS の言語または文字セットが日本語であるコンピュータで作成されたデータベースや、932JPN や EUC_JAPAN などの日本語の CHAR 照合で作成されたデータベースです。

    日本語以外のデータベースを作成する場合の UCA 照合では、デフォルトで、大文字と小文字が区別されません。

    大文字と小文字およびアクセント記号の区別のデフォルト設定は、dbinit の -c と -a (または -c- と -a-) オプションを指定して、それぞれ上書きすることができます。また、照合の適合化構文や、CREATE DATABASE 文の CASE 句と ACCENT 句を使用して上書きすることもできます。初期化ユーティリティ (dbinit)CREATE DATABASE 文を参照してください。

廃止予定機能とサポート終了機能
  • SQL FLAGGER での SQL/1992 標準サポート   SQL FLAGGER では、SQL:1992 (全レベル) はサポートされなくなりました。

  • dbinit -e オプションの廃止   データベースの作成時に単純暗号化を指定するための dbinit -e オプションは廃止される予定です。単純暗号化を指定するには -ea オプション (実際には -ea simple) を使用してください。初期化ユーティリティ (dbinit)を参照してください。

  • SADbType.oldbit データ型の削除   SADbType.oldbit 列挙定数が SQL Anywhere .NET プロバイダから削除されました。

  • -gx サーバ・オプションの廃止   Windows デスクトップ・プラットフォームでは、データベース・サーバ・スケジューラが CPU キャッシュを使用できるように要求の類似性の維持を試みるようになりました。その結果、可能なかぎり 1 CPU 上で要求が実行されます。また、データベース・サーバが使用するオペレーティング・システム・スレッドの数を指定する -gx サーバ・オプションも廃止される予定です。データベース・サーバではこのオプションは無視されます。

  • CREATE DATABASE 文の CASE 句と ACCENT 句の廃止   CREATE DATABASE 文の COLLATION 句および NCHAR COLLATION 句を使用して照合を適合化できるようになったので、CREATE DATABASE 文の CASE 句と ACCENT 句は廃止される予定です。CREATE DATABASE 文を参照してください。