次に、バージョン 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 オプションを参照してください。
dbdata10.dll の削除 dbdata10 DLL (Dynamic Link Library) で提供されていた機能は、SQL Anywhere .NET プロバイダー DLL に組み込まれました。その結果、Windows CE では、SQL Anywhere .NET プロバイダー DLL にプラットフォーム固有のバージョンが用意されました。
NetWare におけるデフォルトキャッシュサイズの増加 NetWare におけるデータベースサーバーのデフォルトキャッシュサイズが 2 MB から 8 MB に増加されました。-c dbeng12/dbsrv12 サーバーオプションを参照してください。
クライアントでの文のキャッシュによる動作の変更 クライアントでの文のキャッシュをサポートした結果、次のような動作の変更が導入されました。
同じ 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 文 [SOAP Web サービス]を参照してください。
SACommand.UpdateRowSource のデフォルト値の変更 これまで SACommand.UpdatedRowSource のデフォルト値は UpdatedRowSource.Both でしたが、UpdatedRowSource.OutputParameters に変更されました。SACommand.UpdatedRowSource プロパティ [SQL Anywhere .NET]を参照してください。
PrefetchRows 接続パラメーターのデフォルト値の変更 .NET データプロバイダーを使用するとき、PrefetchRows 接続パラメーターのデフォルト値が 10 から 200 に変更され、パフォーマンスが向上しました。SAConnectionStringBuilder.PrefetchRow のデフォルト値も 200 に変更されました。結果セットに BLOB カラムが含まれる場合、プリフェッチは無効です。PrefetchRows (PROWS) 接続パラメーターを参照してください。
認証アプリケーションでの saopts.sql から authenticate.sql の使用への変更 以前のリリースの SQL Anywhere OEM 版では、データベースの作成、再構築、または更新を行うたびに適用されるように、認証文をファイル %SQLANY10%\scripts\saopts.sql に格納するように推奨されていました。
今回のリリースでは、認証文字列をファイル %SQLANY10%\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 文を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |