スキーマをアップグレードするには、SQL 文 ALTER DATABASE SCHEMA FROM FILE を使用します。
スキーマのアップグレード中にデバイスをリセットしないでください。スキーマのアップグレード中にデバイスをリセットすると、データが失われ、Ultra Light データベースが「不正」としてマークされます。
新しいデータベース・スキーマと既存のデータベース・スキーマの違いが比較されます。
既存のデータベースのスキーマは変更されます。
新しいスキーマに適合しないローは削除されます。次に例を示します。
テーブルに一意性制約を追加し、同じ値を持つローが複数ある場合は、1 つのロー以外すべて削除される。
カラム・ドメインを変更して変換エラーが発生した場合は、そのローが削除される。たとえば、VARCHAR カラムを INT カラムに変更し、ローの値が ABCD の場合は、このローが削除されます。
新しいスキーマに新しい外部キーがあり、外部ローに一致するプライマリ・ローがない場合は、これらのローが削除される。
ローが削除されると、SQLE_ROW_DROPPED_DURING_SCHEMA_UPGRADE (130) 警告が発生します。
新しいスキーマを定義する DDL 文の SQL スクリプトを作成します。SQL スクリプト・ファイルの文字セットは、アップグレード対象のデータベースの文字セットに一致している必要があります。
ulinit または ulunload のいずれかを使用して、スクリプトに必要な DDL 文を抽出する必要があります。これらのユーティリティを次のオプションとともに使用して、DDL 文が構文的に正しいことを確認してください。
ulunload を使用している場合は、-n および -s [ file ] オプションを使用する。
ulinit を使用している場合は、-l [ file ] オプションを使用する。
ulunload および ulinit を使用しない場合は、スクリプトで次の事項を確認してください。
テーブル、カラム、およびパブリケーションの名前を変更しない。RENAME 操作はサポートされていません。テーブルの名前を変更すると、DROP TABLE 操作または CREATE TABLE 操作として処理されます。
DDL 文以外の文を含めない。DDL 文以外の文を含めると、想定外の影響が発生する可能性があります。
SQL 文の語はスペースで区切る。
各行に表示されるのは 1 つの SQL 文のみ。
コメントの先頭には、二重ハイフン (–) を付ける。コメントを指定できるのは、行の先頭のみです。
アップグレードを実行するデータベースをバックアップします。
新しい文を実行します。次に例を示します。
ALTER DATABASE SCHEMA FROM FILE 'MySchema.sql'; |
アップグレード処理時には Ultra Light エラー・コールバックがアクティブなため、変換処理中に発生したエラーが通知されます。たとえば、SQLE_CONVERSION_ERROR は、パラメータに変換されなかったすべての値をレポートします。エラーが発生しても、処理が失敗したわけではありません。この場合、文が返された後の最終的な SQL コードは、130 警告となります。この警告では、変換処理の操作が示されます。この警告によって、アップグレード処理は停止されません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |