可寫入維度
維度中的資料通常是唯讀的; 但是在某些狀況下,您可能會希望維度是可寫入的。 在 Microsoft SQL Server Analysis Services 中,可寫入維度讓商務使用者能夠修改維度的內容,並了解變更對維度階層的立即影響。 以單一資料表為根據的任何維度皆可寫入; 在可寫入維度中,商務使用者和管理員可以變更、移動、加入及刪除此維度中的屬性成員。 這些更新統稱為維度回寫。
Analysis Services 支援所有維度屬性上的維度回寫,並修改維度的任何成員。 如果是可寫入的 Cube 或資料分割,會將更新儲存在與 Cube 來源資料表分開的回寫資料表中。 不過,針對可寫入維度,更新會直接記錄在維度的資料表中。 而且,如果可寫入維度是包含在有多個資料分割的 Cube 中,其中部分或全部資料來源具有維度資料表的副本,則在回寫程序中只更新原始維度資料表。
可寫入維度和可寫入 Cube 的功能不同,但可互補。 可寫入維度讓商務使用者有能力更新成員,而可寫入 Cube 則讓他們有能力更新資料格值。 雖然這兩個功能是互補的,但您並不需要將二者組合使用。 維度不一定要包含在 Cube 中,照樣可發生維度回寫。 可寫入維度也可包括於非可寫入的 Cube 中。 使用不同的程序來讓維度和 Cube 可寫入,並維護它們的安全性。
下列限制適用於維度回寫:
建立新的成員時,您必須包含維度中的每個屬性。 您不能插入成員時不指定維度之索引鍵屬性的值。 因此,建立成員時要受到維度資料表上之已定義的任何條件約束 (例如非 Null 索引鍵值)。
只針對星狀結構描述支援維度回寫。 換句話說,維度必須以和事實資料表直接相關的單一維度資料表為基礎。 使維度可寫入之後,當您部署到現有的 Analysis Services 資料庫或建立 Analysis Services 專案時,Analysis Services 會驗證此需求。
您可以修改或刪除回寫維度的任何現有成員。 刪除成員時,刪除動作會串聯到所有子成員。 例如,在包含 CountryRegion、省份、縣 (市) 以及客戶屬性的客戶維度中,刪除某個國家 (地區) 會同時刪除隸屬於該國家 (地區) 的所有省份、縣 (市) 以及客戶。 如果國家 (地區) 只有一個省份,刪除該省份也會同時刪除國家 (地區)。
回寫維度的成員只能在相同層級內移動。 例如,可以將縣 (市) 移動到不同國家 (地區) 或省份的縣 (市) 層級,但不能將縣 (市) 移動到省份或 CountryRegion 層級。 在父子式階層中,所有成員都是分葉成員,因此成員可移至 (All) 層級以外的任何層級。
如果刪除父子式階層的成員,則成員的子系會移至該成員的父系。 在刪除的成員上必須要有關聯式資料表的更新權限,而在移動的成員上則不需要任何權限。 應用程式在父子式階層中移動成員時,應用程式可以在 UPDATE 作業中指定成員的下階是否跟著成員一起移動,或是移到成員的父系。 若要遞迴地刪除父子式階層中的成員,使用者對於該成員和所有成員的下階必須有關聯式資料表的更新權限。
[!附註]
父子式階層中之父屬性的更新,不可包含任何其他屬性 (Property) 或屬性 (Attribute) 的更新。
維度的所有變更會造成維度結構遭到修改。 維度的每個變更會被視為單一交易,需要累加處理來更新維度結構。 可寫入維度與其他任何維度具有相同的處理需求。
[!附註]
連結維度不支援維度回寫。 如需有關連結維度的詳細資訊,請參閱<連結維度>。
安全性
唯一可以更新可寫入維度的商務使用者,是那些在 Analysis Services 資料庫角色中被授權對該維度有讀取/寫入權限的使用者。 針對每個角色,您可以控制哪些成員可以或不可以被更新。 針對要更新可寫入維度的商務使用者,其用戶端應用程式必須支援此能力。 如果是這類使用者,可寫入維度必須包含在該維度上次變更之後處理過的 Cube 中。 如需詳細資訊,請參閱<授與 Analysis Services 多維度資料庫的使用者權限>。
管理員角色中所含的使用者和群組可以更新可寫入維度的屬性成員,即使該維度未包括在 Cube 中也一樣。