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

SQL Anywhere 12.0.1 » SQL Anywhere 12 変更点とアップグレード » バージョン 12.0.0 の新機能

 

SQL Anywhere の動作の変更

次に、バージョン 12.0.0 で導入された SQL Anywhere の動作の変更を示します。サポートされているプラットフォームとバージョンについては、[external link] http://www.ianywhere.jp/tech/1061806-os_components.htmlを参照してください。

  • 新しいデータベースでチェックサムがデフォルトで有効   新しいデータベースを作成すると、グローバルチェックサムはデフォルトで有効になっています。グローバルチェックサムは、データベースページの読み込みまたは書き込みが行われるたびに計算、検証され、データベースページがディスク上で変更されているかどうかを確認するために使用されます。初期化ユーティリティの -s[ + | - ] オプションを使用するか、CREATE DATABASE 文の CHECKSUM 句を使用して、データベースでグローバルチェックサムを有効にするかどうかを制御できます。次の項を参照してください。

  • チェックポイントログの変更   以前のリリースでは、データベースを停止すると、SQL Anywhere はチェックポイントのログを完全にトランケートしました。バージョン 12 では、チェックポイントログの使用履歴がデータベースに格納され、次のセッションのチェックポイントログに適切なサイズを決定するために使用されます。

    セッションにわたってチェックポイントログを格納すると、次回データベースを起動するときにチェックポイント割り当てのオーバーヘッドを防ぎ、ファイルの拡張時に発生する可能性があるファイルの断片化を回避できます。今回のリリースでは、データベース停止時のデータベースファイルは以前のリリースよりも大きくなりますが、次回データベースを再起動するときにチェックポイントログに追加のスペースが再利用されます。チェックポイントログを参照してください。

  • ネットワークデータベースサーバーがワーカーの最大数を割り当てるようになった   以前のリリースでは、ネットワークデータベースサーバーが起動するとき、データベースサーバーのマルチプログラミングレベルに対応する数のワーカーが割り当てられました。バージョン 12 のネットワークサーバーでは、サーバーの最大マルチプログラミングレベルに対応する数のワーカーが割り当てられます。このようにワーカーの数が増加することによって、ネットワークデータベースサーバーでワーカースタック用に必要となるアドレス領域が増加し、データベースサーバーが割り当てることができるデータベースキャッシュの量に影響を及ぼすことがあります。

    たとえば、32 ビットの Windows プラットフォームでは、デフォルトで、各ワーカーにはスタック用に 1 MB のアドレス領域が必要です。Windows で起動するバージョン 11 のネットワークサーバーでは、デフォルトのマルチプログラミングレベルが 20 であるため、ワーカースタック用に 20 MB のアドレス領域が必要となります。ただし、Windows で起動するバージョン 12 のネットワークサーバーでは、デフォルトのワーカーの最大数が 80 であるため、80 MB のアドレス領域が必要となります。この変更は、パーソナルサーバーや Windows Mobile には影響を及ぼしません。SQL Anywhere のスレッド化を参照してください。

  • 古い統計はデータベースの再構築時にロードされない   バージョン 11 以前のデータベースを再構築する場合、LOAD STATISTICS 文は古い文字列統計の新しいデータベースへのロードを通知しないで省略しますが、文字列統計のバージョンはアップグレードされます。LOAD STATISTICS 文を参照してください。

    アップグレードユーティリティを使用してデータベースをアップグレードしても、文字列統計のバージョンはアップグレードされません。

  • 位置付け DELETE 文と UPDATE 文   以前のバージョンでは、位置付け UPDATE 文または DELETE 文で TOP 句または FIRST 句を指定できましたが、これらの句は無視されました。今回のバージョンでは、位置付け UPDATE 文または DELETE 文で TOP または FIRST を指定すると、構文エラーが返されるようになりました。UPDATE (位置付け) 文 [ESQL] [SP]DELETE 文 (位置付け) [ESQL] [SP]を参照してください。

  • JDBC ドライバーは CHAR だけでなく CHAR と VARCHAR をレポートするようになった   以前のバージョンでは、iAnywhere JDBC ドライバーを使用してアプリケーションを接続し、CHAR カラムを含むテーブルまたは結果セットのメタデータを記述しようとすると、メタデータではカラムのタイプ名が CHAR と返されましたが、SQL タイプでは Types.VARCHAR として返されました。JDBC アプリケーションで JDBC ドライバーが CHAR カラムの SQL タイプを Types.CHAR と返すようにするには、アプリケーションで odbc_distinguish_char_and_varchar データベースオプションを設定する必要がありました。今回のバージョンでは、新しい SQL Anywhere JDBC ドライバーと非推奨の iAnywhere JDBC ドライバーで、データベースオプションの設定に関係なく、タイプ CHAR のテーブルと結果セットのカラムに対してタイプ名 CHAR および SQL タイプ Types.CHAR が返され、タイプ VARCHAR のカラムに対してタイプ名 VARCHAR および SQL タイプ Types.VARCHAR が返されるようになりました。

  • CURRENT UTC TIMESTAMP および UTC TIMESTAMP 空間値の変更   CURRENT UTC TIMESTAMP 空間値、およびデフォルト値 UTC TIMESTAMP 空間値の基本となるデータ型は、TIMESTAMP WITH TIME ZONE になりました。これらの値が TIMESTAMP として定義されたカラムで使用された場合、タイムゾーンオフセットはトランケートされ、動作に目立った違いはありません。ただし、これらの値が CHAR または VARCHAR カラムで使用された場合、オフセットは以前とは異なる値が生成されます。CURRENT UTC TIMESTAMP 特別値UTC TIMESTAMP 特別値を参照してください。

  • パーソナルサーバーはデフォルトで TCP/IP を起動しない   デフォルトでは、パーソナルデータベースサーバーは共有メモリプロトコルのみを起動します。TCP/IP プロトコルを使用する場合は、パーソナルデータベースサーバーを起動するとき、-x サーバーオプションを使用して TCP/IP プロトコルを指定する必要があります。-x dbeng12/dbsrv12 サーバーオプション通信プロトコルオプションの考慮事項を参照してください。

  • TCP/IP 接続   TCP/IP を介して接続する場合、HOST 接続パラメーターでホスト名が指定されていれば、データベースサーバー名 (ServerName (SERVER) 接続パラメーターで指定) は必須ではなくなりました。Host 接続パラメーターを参照してください。

  • Host (IP) プロトコルオプション   以前のリリースでは、Host プロトコルオプションによって、データベースサーバーを実行する可能性がある 1 つ以上のホストが示されましたが、このことは、クライアントライブラリへのヒントと見なされました。これらのホストでデータベースサーバーが見つからない場合、データベースサーバーを検出するためにネットワークブロードキャストが実行されました。今回のリリースでは、Host オプションを指定すると、データベースサーバーについて指定したホストのみが検索され、デフォルトでは、クライアントはデータベースサーバーを検出するためにブロードキャストを実行しません。

    この動作は、DoBroadcast プロトコルオプションを Direct に設定した場合と同じです。HOST プロトコルオプションで指定したコンピューター以外のコンピューターでデータベースサーバーが実行されている場合、データベースサーバーは検出されません。前回のリリースと同じように動作させる場合は、接続文字列で DoBroadcast=All を指定します。Host (IP) プロトコルオプション (クライアント側のみ)DoBroadcast (DOBROAD) プロトコルオプションを参照してください。

  • ServerPort (PORT) プロトコルオプション   以前のリリースでは、PORT プロトコルオプションによって、データベースサーバーが受信する可能性がある 1 つ以上のポート番号が示されましたが、このことは、クライアントライブラリへのヒントと見なされました。クライアントライブラリはブロードキャストを送信する場合、PORT プロトコルオプションで指定されたポート番号とデフォルトのポート番号 2638 を使用しました。今回のリリースでは、PORT オプションを指定すると、データベースサーバーを検出するために、指定したポートのみが使用されます。ServerPort (PORT) プロトコルオプションを参照してください。

  • 共有メモリ接続での Idle 接続パラメーターの尊重   Idle 接続パラメーターでは、接続のアイドルタイムアウト時間を指定します。共有メモリ接続でこの接続パラメーターが尊重されるようになりました。共有メモリ接続のデフォルトのアイドルタイムアウトは 0 (アイドルタイムアウトなし) です。Idle 接続パラメーターを参照してください。

  • データベースサーバー名は ServerName (Server) 接続パラメーターで指定した名前と同じでない場合がある   以前のリリースでは、Name データベースプロパティの値は ServerName (Server) 接続パラメーターで指定した値と常に一致していました。ただし、クライアントがデータベースに接続して新しい NodeType (NODE) 接続パラメーターを使用し、異なるデータベースサーバーに接続するようにリダイレクトされた場合、名前は一致しません。NodeType (NODE) 接続パラメーターを参照してください。

  • 代替サーバー名を使用した接続時に一部の操作がサポートされない   以前のリリースでは、クライアントが代替サーバー名を使用してデータベースに接続した場合、クライアントは同じデータベースサーバー上の他のデータベースを作成、停止、削除できました。代替サーバー名を使用して接続した場合、これらの操作はサポートされなくなりました。

  • データベースミラーリングの動作の変更と廃止予定機能   -xp オプションによる監視サーバーの名前、認証文字列、同期実行モードなどのデータベースミラーリングオプションの定義は廃止される予定です。ただし、ミラーリングシステムでデータベースサーバーを使用する場合は、引き続き -xp on を指定する必要があります。-xp dbsrv12データベースオプションを参照してください。

    次の SQL 文を使用してデータベースミラーリング設定を定義できるようになりました。

    今回リリースでは、データベースミラーリングについて、次の動作の変更が導入されています。

    • 以前のリリースでは、ミラーサーバーのステータス情報ファイルの名前は、デフォルトでサーバー名に基づいた名前でした。今回のリリースでは、ステータス情報ファイルの名前を指定する必要があります。
    • 以前のリリースでは、ミラーサーバーに送信された Web サービス要求はプライマリサーバーにリダイレクトされました。今回のリリースでは、Web サービス要求は、受け取ったサーバーによって処理されます。

    今回のリリースでのデータベースミラーリングの強化については、データベースミラーリングの強化を参照してください。

  • Embedded SQL カーソル動作の変更   Embedded SQL カーソルは、READ ONLY のデフォルトになりました。明示的な FOR READ ONLY 句または FOR UPDATE 句は、DECLARE 文ではなく、PREPARE 文で指定することが必要になりました。次の項を参照してください。

  • CREATE OR REPLACE PROCEDURE 文のカーソルは閉じられる   CREATE OR REPLACE PROCEDURE 文を実行する場合、接続が開いた他のカーソルはすべて閉じられます。CREATE PROCEDURE 文を参照してください。

  • 逆引用符識別子デリミター   逆引用符を識別子デリミターとして使用できるようになりました。識別子を参照してください。

  • ロックの動作の変更   同時実行性を最大化するために、ローのキーとキーではない部分を別々にロックできるようになりました。ローを参照する外部ローの挿入と削除を妨げずに、そのローのキーではないカラムを更新できます。ロックの仕組みを参照してください。

  • ODBC ドライバーの動作の変更   ODBC 関数 SQLTables を使用すると、SQL_ALL_SCHEMAS 引数で関数を呼び出して、すべてのスキーマ (ユーザー) のリストを取得できます。以前のバージョンでは、この関数によって返されるユーザーのリストには、テーブルを所有するユーザーのみが含まれていました。新しく初期化したデータベースでは、一部のユーザー、特に DBA ユーザーが除外されました。今回のリリースでは、テーブルを所有しないユーザーを含む、スキーマの完全なリストが返されます。

  • divide_by_zero_error オプション   divide_by_zero_error オプションは、バージョン 11 ではサポートされていませんでした。このオプションはバージョン 12 でサポートされます。マテリアライズドビューを使用している場合は、このオプションを On (デフォルト) に設定して、新しいマテリアライズドビューを作成してください。divide_by_zero_error オプションマテリアライズドビューの制限を参照してください。

  • PrefetchBuffer (PBUF) 接続パラメーター   以前のリリースでは、PrefetchBuffer (PBUF) 接続パラメーターで指定したローをバッファーするためのメモリ量は、すべての接続間で共有されました。今回のリリースでは、この接続パラメーターで指定したメモリ量は、各接続で使用できます。PrefetchBuffer (PBUF) 接続パラメーターを参照してください。

  • 削除されたユーザーの外部ログインは自動的に削除される   データベースからユーザーを削除すると、そのユーザーのすべての外部ログインは自動的に削除されるようになりました。以前のリリースでは、外部ログインを個別に削除する必要がありました。ユーザーをデータベースから削除するを参照してください。

  • データベースクリーナーとデータベース検証は同時に実行されなくなった   以前のリリースでは、データベース検証とデータベースクリーナーを同時に実行し、データベースページへの同時アクセスによるエラーをレポートできました。データベース検証とデータベースクリーナーは、同じデータベース上で同時に実行されなくなりました。検証はデータベースクリーナーの終了を待機し、データベースクリーナーが sa_clean_database を呼び出して開始された場合は、データベースクリーナーが検証の終了を待機します。データベースクリーナーは、テーブル検証またはインデックス検証と同時に実行できます。

  • sa_index_density システムプロシージャー内のカラムに対するデータ型の変更   密度カラムとスキューカラムのデータ型は、numeric(8,6) から double に変更されました。sa_index_density システムプロシージャーを参照してください。

  • DATEDIFF 関数   以前のリリースでは、DATEDIFF 関数は時間とそれ以下の日付の単位に INTEGER を返しました。今回のリリースでは、DATEDIFF はこれらの日付の単位に BIGINT を返すようになりました。DATEDIFF 関数 [日付と時刻]を参照してください。

  • openxml システムプロシージャー   openxml システムプロシージャーは、dbo データベースユーザーによって所有されなくなりました。dbo.でプロシージャー名を修飾する openxml システムプロシージャーを使用するクエリは dbo. を削除するように変更する必要があります。次のような文を実行すると、エラーが返されます。
    SELECT ... FROM dbo.openxml(...)

    以前のリリースでは、openxml システムプロシージャーは NCHAR データを CHAR エンコードに変換し、CHAR フォーマットでデータを解析しました。今回のリリースでは、出力に NCHAR カラムがある場合、NCHAR データは NCHAR エンコードで解析されます。

    以前のリリースでは、WITH 句内の xpath 引数には、リテラル文字列のみを指定できました。今回のリリースでは、リテラル文字列と変数を指定できるようになりました。openxml システムプロシージャーを参照してください。

    バージョン 11 以前からアップグレードされたデータベースには、SYS.SYSPROCEDURE システムビューに openxml のローが含まれますが、その定義はバージョン 12 のデータベースでは使用できません。プロシージャーを次のように使用すると、構文エラーが返されます。

    SELECT * FROM dbo."openxml"(...)

  • sa_text_index_vocab システムプロシージャー   NCHAR テキストインデックスで sa_text_index_vocab を呼び出そうとするとエラーが返されるようになりました。代わりに新しい sa_text_index_vocab_nchar システムプロシージャーを使用します。sa_text_index_vocab_nchar システムプロシージャーを参照してください。

    さらに、次の点が変更されました。

    • tab_owner パラメーターはオプションになりました。

    • CALL 文で sa_text_index_vocab を使用できるようになりました。

    • プロシージャー内の文で sa_text_index_vocab を使用できるようになりました。

    • パラメーター値をホスト変数または式にできるようになりました。

  • Mac OS X のデフォルト照合の変更   以前のリリースでは、Mac OS X に環境変数がない場合、初期化ユーティリティ (dbinit) はデフォルトの CHAR 文字セットに ISO_8859-1:1987 を使用し、CHAR 照合に ISO1LATIN1 を使用しました (Linux と同じ動作)。今回のリリースでは、UTF-8 と UTF8BIN 照合が選択されます。推奨文字セットと照合を参照してください。

  • 予約語   次に、SQL Anywhere バージョン 12.0.0 でデータベースに追加された予約語を示します。

    • datetimeoffset

    • inner

    • openxml

    • spatial

    • treat

    次に、SQL Anywhere バージョン 12.0.0 でデータベースから削除された予約語を示します。

    • index_lparen

    • lock

    • with_cube

    • with_lparen

    • syntax_error

    • with_rollup

  • WITH ( index-hint ) 句の動作変更   以前は、テーブルのプライマリキーインデックス、外部キーインデックス、または標準インデックスの名前が同じであった場合、オプティマイザーによってプライマリーまたは外部キーインデックスの名前に解決されていました。現在では、オプティマイザーによって標準のインデックスの名前に解決されるようになりました。それが存在しない場合、オプティマイザーはまずプライマリーキーの名前に解決し、次いで外部キーに解決します。WITH table-hint 句、FROM 句を参照してください。