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

SQL Anywhere 11.0.1 (日本語) » Ultra Light データベース管理とリファレンス » Ultra Light データベースの使用 » Ultra Light のデバイスへの配備

 

Ultra Light スキーマのアップグレードの配備

スキーマをアップグレードするには、SQL 文 ALTER DATABASE SCHEMA FROM FILE を使用します。

アップグレード処理
警告

スキーマのアップグレード中にデバイスをリセットしないでください。スキーマのアップグレード中にデバイスをリセットすると、データが失われ、Ultra Light データベースが「不正」としてマークされます。

  1. 新しいデータベース・スキーマと既存のデータベース・スキーマの違いが比較されます。

  2. 既存のデータベースのスキーマは変更されます。

  3. 新しいスキーマに適合しないローは削除されます。次に例を示します。

    • テーブルに一意性制約を追加し、同じ値を持つローが複数ある場合は、1 つのロー以外すべて削除される。

    • カラム・ドメインを変更して変換エラーが発生した場合は、そのローが削除される。たとえば、VARCHAR カラムを INT カラムに変更し、ローの値が ABCD の場合は、このローが削除されます。

    • 新しいスキーマに新しい外部キーがあり、外部ローに一致するプライマリ・ローがない場合は、これらのローが削除される。

  4. ローが削除されると、SQLE_ROW_DROPPED_DURING_SCHEMA_UPGRADE (130) 警告が発生します。

♦  Ultra Light スキーマをアップグレードするには、次の手順に従います。
  1. 新しいスキーマを定義する 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 文のみ。

    • コメントの先頭には、二重ハイフン () を付ける。コメントを指定できるのは、行の先頭のみです。

  2. アップグレードを実行するデータベースをバックアップします。

  3. 新しい文を実行します。次に例を示します。

    ALTER DATABASE SCHEMA FROM FILE 'MySchema.sql';
エラー通知

アップグレード処理時には Ultra Light エラー・コールバックがアクティブなため、変換処理中に発生したエラーが通知されます。たとえば、SQLE_CONVERSION_ERROR は、パラメータに変換されなかったすべての値をレポートします。エラーが発生しても、処理が失敗したわけではありません。この場合、文が返された後の最終的な SQL コードは、130 警告となります。この警告では、変換処理の操作が示されます。この警告によって、アップグレード処理は停止されません。

参照