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