瞭解累加產生
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
在初始架構產生之後,您可以使用 SQL Server Data Tools 來變更 Cube 和維度定義,然後重新執行架構產生精靈。 精靈會更新主旨區域資料庫和相關聯數據源檢視中的架構,以反映變更,並盡可能保留數據表中目前存在的數據,以便重新產生。 如果您在初始產生之後變更資料表,[架構產生精靈] 會盡可能使用下列規則來保留這些變更:
如果先前由精靈產生數據表,則會覆寫數據表。 您可以將數據源檢視中數據表的allowChangesDuringGeneration 屬性
變更 為 false ,以防止精靈所產生數據表的數據表遭到覆寫。 當您控制數據表時,會將數據表視為任何其他使用者定義的數據表,而且在重新產生期間不會受到影響。 從產生中移除數據表之後,您稍後可以在數據源檢視中變更數據表的 AllowChangesDuringGeneration 屬性,以 true,然後重新開啟數據表以供精靈變更。 如需詳細資訊,請參閱 數據源檢視中的變更屬性 (Analysis Services)。如果數據表已新增至數據源檢視,或由精靈以外的專案新增至基礎資料庫,則不會覆寫數據表。
當架構產生精靈重新產生先前在主旨區域資料庫中產生的數據表時,您可以選擇讓精靈保留這些數據表中的現有數據。
支援數據保留
一般規則是「架構產生精靈」會保留儲存在所產生數據表中的數據。 此外,如果您將數據行新增至精靈產生的數據表,精靈也會保留該數據。 您可以使用這項功能來新增或修改維度和 Cube,然後重新產生基礎物件,而不需要重載儲存在基礎表中的數據。
注意
如果您要從分隔文本檔載入數據,您也可以選擇架構產生精靈是否會覆寫這些檔案,以及在重新產生期間包含的數據。 文本檔完全覆寫或完全不覆寫。 架構產生精靈不會部分覆寫這些檔案。 根據預設,不會覆寫這些檔案。
部分保留
在某些情況下,架構產生精靈無法保留現有的數據。 下表提供精靈在重新產生期間無法保留基礎表中所有現有數據的情況範例。
數據變更的類型 | 治療 |
---|---|
不相容的數據類型變更 | 架構產生精靈會盡可能使用標準 SQL Server 數據類型轉換,將現有數據從某個數據類型轉換成另一種數據類型。 不過,當您將屬性的數據類型變更為與現有數據不相容的類型時,精靈會卸除受影響數據行的數據。 |
引用完整性錯誤 | 如果您變更包含數據的維度或 Cube,且變更會在重新產生期間造成引用完整性錯誤,則架構產生精靈會卸除外鍵數據表中的所有數據。 卸除的數據不限於造成外鍵條件約束違規的數據行,或包含引用完整性錯誤的數據列。 例如,如果您將維度索引鍵變更為具有非唯一或 Null 數據的屬性,則會卸除外鍵數據表中的所有現有數據。 此外,卸除一個數據表中的所有數據可能會有串聯效果,而且可能會導致其他引用完整性違規。 |
已刪除的屬性或維度 | 如果您從維度中刪除屬性,架構產生精靈會刪除對應至已刪除屬性的數據行。 如果您刪除維度,精靈會刪除對應至已刪除維度的數據表。 在這些情況下,精靈會卸除已刪除數據行或數據表中包含的數據。 |
架構產生精靈會在卸除任何數據之前發出警告,讓您可以取消精靈,而不會遺失任何數據。 不過,架構產生精靈無法區分預期的數據遺失和未預期的數據遺失。 當您執行精靈時,對話框會列出包含要卸載之數據的數據表和數據行。 您可以讓精靈繼續並卸除數據,也可以取消精靈,並修改您對數據表和數據行所做的變更。
支援 Cube 和維度變更
當您變更維度和 Cube 的屬性時,架構產生精靈會重新產生基礎主旨區域資料庫中的適當物件,以及相關的數據源檢視,如下表所述。
刪除物件,例如維度、Cube 或屬性。
架構產生精靈會刪除已刪除物件對應的基礎物件。 如果您將數據行新增至精靈產生的數據表,新的數據行不會防止該數據表遭到刪除。 刪除物件會導致卸除儲存在基礎對象中的數據,而且如果發生引用完整性錯誤,也可能會導致卸除其他數據。
重新命名物件,例如維度、Cube 或屬性。
架構產生精靈會將重新命名的物件重新命名為對應的基礎物件。 精靈也會重新命名所有受影響的物件,例如主鍵。 會保留儲存在基礎物件中的現有數據。
修改物件,例如變更其數據類型。
架構產生精靈會修改已變更對象對應的基礎物件。 除非新的數據類型與現有的數據不相容,否則會保留儲存在資料庫基礎物件中的現有數據。
加入新的物件,例如維度、Cube 或屬性。
架構產生精靈會將新對象對應的基礎物件加入其中。
如果架構產生精靈因為主旨區域資料庫中存在用戶對象而無法進行必要的變更(因為 Database Engine 傳回錯誤),架構產生精靈就會失敗,並顯示 Database Engine 傳回的錯誤。 例如,如果您在精靈產生數據表之後,於數據表上建立主鍵條件約束或非叢集索引,架構產生精靈不會卸除該數據表,因為它未建立條件約束或索引。
支援架構變更
當您在主旨區域資料庫或相關聯的數據源檢視中變更數據表或數據行的屬性時,架構產生精靈會將變更視為下表所述。
刪除架構產生精靈所產生的數據表或數據行。
如果您刪除架構產生精靈所產生的數據表或數據行,精靈會重新產生已刪除的數據表。 精靈不會提供刪除的數據表或數據行將重新產生警告。
變更架構產生精靈所產生的數據表或數據行屬性。
如果您修改架構產生精靈所產生的數據表或數據行的屬性,精靈會重新產生變更的數據表,而不需要變更。 例如,如果您變更數據行的數據類型或可為 Null 性,或架構產生精靈所產生的數據表檔案群組,則變更不會在重新產生時存留。 精靈不會提供任何警告,表示變更的物件不會重新產生,而不需要變更。
將數據行加入至架構產生精靈所產生的數據表,或將數據表加入至主旨區域資料庫或暫存區域資料庫。
如果您將數據行新增至架構產生精靈所產生的數據表,精靈會在重新產生期間保留其他數據行,以及儲存在其中的任何數據。 不過,如果您將數據表新增至主旨區域資料庫或暫存區域資料庫,架構產生精靈不會併入新的數據表。 加入的數據行或已加入的數據表不會反映在 SQL Server Analysis Services 專案、SQL Server Analysis Services 資料庫、DTS 封裝、數據源檢視或任何其他位置中產生的架構中。
支援數據源和數據源檢視變更
重新執行架構產生精靈時,它會重複使用用於原始產生的相同數據源和數據源檢視。 如果您新增數據源或數據源檢視,精靈就不會使用它。 如果您在初始產生之後刪除原始數據源或數據源檢視,則必須從頭開始執行精靈。 精靈中的所有先前設定也會一併刪除。 下一次執行架構產生精靈時,系統會將系結至已刪除數據源或數據源檢視之基礎資料庫中的任何現有對象視為使用者建立的物件。
如果數據源檢視在產生時未反映基礎資料庫的實際狀態,[架構產生精靈] 可能會在產生主旨區域資料庫和暫存區域資料庫的架構時發生錯誤。 例如,如果數據源檢視指定數據行的數據類型設定為 int,但數據行的數據類型實際上設定為 字串,則架構產生精靈會將外鍵的數據類型設定為 int,以符合數據源檢視,然後在建立關聯性時失敗,因為實際數據類型是 字串。
另一方面,如果您將數據源連接字串變更為與上一代不同的資料庫,則不會產生任何錯誤。 會使用新的資料庫,而且不會對先前的資料庫進行任何變更。