スキーマの最初の生成後、SQL Server Data Tools (SSDT) を使用してキューブとディメンションの定義を変更し、スキーマ生成ウィザードを再実行できます。 ウィザードは、サブジェクト領域データベースおよび関連するデータ ソース ビューのスキーマを更新して変更を反映し、再生成するテーブルに現在存在するデータを可能な限り保持します。 最初の生成後にテーブルを変更した場合、スキーマ生成ウィザードでは、可能な限り、次の規則を使用してこれらの変更が保持されます。
ウィザードによってテーブルが以前に生成された場合、テーブルは上書きされます。 ウィザードによって生成されたテーブルが上書きされないようにするには、データ ソース ビューのテーブルの
AllowChangesDuringGeneration
プロパティをfalse
に変更します。 テーブルを制御すると、そのテーブルは他のユーザー定義テーブルと同様に扱われ、再生成中は影響を受けません。 生成からテーブルを削除した後、後でデータ ソース ビューのテーブルのAllowChangesDuringGeneration
プロパティをtrue
に変更し、ウィザードでテーブルを再度開くことができます。 詳細については、「 データ ソース ビューのプロパティの変更 (Analysis Services)」を参照してください。ウィザード以外の方法でテーブルがデータ ソース ビューまたは基になるデータベースに追加された場合、テーブルは上書きされません。
スキーマ生成ウィザードで、サブジェクト領域データベースで以前に生成されたテーブルを再生成するときに、ウィザードでそれらのテーブル内の既存のデータを保持するように選択できます。
データの保持のサポート
一般的な規則として、スキーマ生成ウィザードでは、生成されたテーブルに格納されているデータが保持されます。 さらに、ウィザードによって生成されたテーブルに列を追加すると、そのデータも保持されます。 この機能を使用すると、ディメンションとキューブを追加または変更し、基になるテーブルに格納されているデータを再読み込みすることなく、基になるオブジェクトを再生成できます。
注
区切りテキスト ファイルからデータを読み込む場合は、スキーマ生成ウィザードが再生成中にこれらのファイルとそのファイルに含まれるデータを上書きするかどうかを選択することもできます。 テキスト ファイルは完全に上書きされるか、まったく上書きされません。 スキーマ生成ウィザードは、これらのファイルを部分的に上書きしません。 既定では、これらのファイルは上書きされません。
部分保存
スキーマ生成ウィザードでは、状況によっては既存のデータを保持できません。 次の表は、ウィザードが再生成中に基になるテーブル内のすべての既存のデータを保持できない状況の例を示しています。
データ変更の種類 | 処遇 |
---|---|
互換性のないデータ型の変更 | スキーマ生成ウィザードでは、可能な限り標準の SQL Server データ型変換を使用して、既存のデータをあるデータ型から別のデータ型に変換します。 ただし、属性のデータ型を既存のデータと互換性のない型に変更すると、ウィザードは影響を受ける列のデータを削除します。 |
参照整合性エラー | データを含むディメンションまたはキューブを変更すると、再生成中に参照整合性エラーが発生すると、スキーマ生成ウィザードは外部キー テーブル内のすべてのデータを削除します。 削除されるデータは、外部キー制約違反の原因となった列や参照整合性エラーを含む行に限定されません。 たとえば、ディメンション キーを一意ではないデータまたは null データを持つ属性に変更すると、外部キー テーブル内のすべての既存のデータが削除されます。 さらに、1 つのテーブル内のすべてのデータを削除すると、連鎖的な影響を受け、他の参照整合性違反が発生する可能性があります。 |
削除された属性またはディメンション | ディメンションから属性を削除すると、スキーマ生成ウィザードによって、削除された属性にマップされている列が削除されます。 ディメンションを削除すると、ウィザードによって、削除されたディメンションにマップされているテーブルが削除されます。 このような場合、ウィザードは削除された列またはテーブルに含まれるデータを削除します。 |
スキーマ生成ウィザードでは、データを削除する前に警告が発行されるため、データを失うことなくウィザードをキャンセルできます。 ただし、スキーマ生成ウィザードでは、予想されるデータ損失と予期しないデータ損失を区別できません。 ウィザードを実行すると、削除されるデータを含むテーブルと列がダイアログ ボックスに一覧表示されます。 ウィザードを続行してデータを削除するか、ウィザードをキャンセルしてテーブルと列に加えた変更を変更することができます。
キューブとディメンションの変更のサポート
ディメンションとキューブのプロパティを変更すると、スキーマ生成ウィザードでは、次の表に示すように、基になるサブジェクト領域データベースおよび関連するデータ ソース ビュー内の適切なオブジェクトが再生成されます。
ディメンション、キューブ、属性などのオブジェクトを削除する。
スキーマ生成ウィザードは、削除されたオブジェクトがマップされている基になるオブジェクトを削除します。 ウィザードによって生成されたテーブルに列を追加しても、新しい列ではそのテーブルが削除されません。 オブジェクトを削除すると、基になるオブジェクトに格納されているデータが削除され、参照整合性エラーが発生した場合に他のデータが削除される可能性もあります。
ディメンション、キューブ、属性などのオブジェクトの名前を変更する。
スキーマ生成ウィザードは、名前が変更されたオブジェクトがマップされる基になるオブジェクトの名前を変更します。 また、ウィザードでは、影響を受けるすべてのオブジェクト (主キーなど) の名前も変更されます。 基になるオブジェクトに格納されている既存のデータは保持されます。
オブジェクトを変更する (データ型の変更など)。
スキーマ生成ウィザードは、変更されたオブジェクトがマップされる基になるオブジェクトを変更します。 データベースの基になるオブジェクトに格納されている既存のデータは、新しいデータ型が既存のデータと互換性がない限り保持されます。
ディメンション、キューブ、属性などの新しいオブジェクトを追加する。
スキーマ生成ウィザードは、新しいオブジェクトがマップされる基になるオブジェクトを追加します。
サブジェクト領域データベースにユーザー オブジェクトが存在するため、スキーマ生成ウィザードで必要な変更を行うことができない場合 (データベース エンジンからエラーが返されるため)、スキーマ生成ウィザードは失敗し、データベース エンジンによって返されたエラーが表示されます。 たとえば、ウィザードによってテーブルが生成された後に、テーブルに主キー制約または非クラスター化インデックスを作成した場合、スキーマ生成ウィザードでは制約またはインデックスが作成されないため、そのテーブルは削除されません。
スキーマ変更のサポート
サブジェクト領域データベースまたは関連するデータ ソース ビューのテーブルまたは列のプロパティを変更すると、スキーマ生成ウィザードでは、次の表に示すように変更が処理されます。
スキーマ生成ウィザードによって生成されたテーブルまたは列の削除。
スキーマ生成ウィザードによって生成されたテーブルまたは列を削除すると、削除されたテーブルが再生成されます。 ウィザードでは、削除されたテーブルまたは列が再生成されるという警告は表示されません。
スキーマ生成ウィザードによって生成されるテーブルまたは列のプロパティを変更する。
スキーマ生成ウィザードによって生成されたテーブルまたは列のプロパティを変更すると、変更されたテーブルは変更されずに再生成されます。 たとえば、列のデータ型または null 値の許容、またはスキーマ生成ウィザードによって生成されたテーブルのファイル グループを変更した場合、その変更は再生成後も存続しません。 ウィザードでは、変更されたオブジェクトが変更なしで再生成されるという警告は表示されません。
スキーマ生成ウィザードによって生成されたテーブルに列を追加するか、サブジェクト領域データベースまたはステージング領域データベースにテーブルを追加します。
スキーマ生成ウィザードによって生成されたテーブルに列を追加した場合、ウィザードは再生成中に追加の列とその列に格納されているデータを保持します。 ただし、サブジェクト領域データベースまたはステージング領域データベースにテーブルを追加した場合、スキーマ生成ウィザードには新しいテーブルは組み込まれません。 追加された列または追加されたテーブルは、Analysis Services プロジェクト、Analysis Services データベース、DTS パッケージ、データ ソース ビュー、または生成されるスキーマ内のその他の場所には反映されません。
データ ソースとデータ ソース ビューの変更のサポート
スキーマ生成ウィザードを再実行すると、元の生成に使用したのと同じデータ ソースとデータ ソース ビューが再利用されます。 データ ソースまたはデータ ソース ビューを追加した場合、ウィザードでは使用されません。 最初の生成後に元のデータ ソースまたはデータ ソース ビューを削除する場合は、最初からウィザードを実行する必要があります。 ウィザードの以前の設定もすべて削除されます。 次にスキーマ生成ウィザードを実行すると、削除されたデータ ソースまたはデータ ソース ビューにバインドされた基になるデータベース内の既存のオブジェクトは、ユーザーが作成したオブジェクトとして扱われます。
生成時にデータ ソース ビューに基になるデータベースの実際の状態が反映されていない場合、スキーマ生成ウィザードは、サブジェクト領域データベースとステージング領域データベースのスキーマを生成するときにエラーが発生する可能性があります。 たとえば、データ ソース ビューで列のデータ型が int
に設定されていても、列のデータ型が実際に string
に設定されている場合、スキーマ生成ウィザードでは、外部キーのデータ型がデータ ソース ビューと一致するように int
に設定され、実際のデータ型が string
されるため、リレーションシップの作成時に失敗します。
一方、データ ソース接続文字列を前の世代とは別のデータベースに変更した場合、エラーは生成されません。 新しいデータベースが使用され、前のデータベースは変更されません。
こちらもご覧ください
データ ソース ビューとデータ ソースに対する変更を管理する
スキーマ生成ウィザード (Analysis Services)