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

 

SQL Anywhere の動作の変更

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

  • 新しいデータベースでチェックサムがデフォルトで有効   新しいデータベースを作成すると、グローバルチェックサムはデフォルトで有効になっています。グローバルチェックサムは、データベースページの読み込みまたは書き込みが行われるたびに計算、検証され、データベースページがディスク上で変更されているかどうかを確認するために使用されます。初期化ユーティリティの -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 データベースサーバオプション通信プロトコルオプションの考慮事項を参照してください。

  • 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 データベースオプションを参照してください。

    次の 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) 接続パラメータを参照してください。

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

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

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

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

  • OPENXML 演算子   OPENXML 文字列演算子は、dbo データベースユーザによって所有されなくなりました。OPENXML 演算子を使用して dbo. で名前を修飾するクエリは 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 句を参照してください。