重要
将在下一版本的 sql Server Microsoft中删除此功能。 避免在新开发工作中使用此功能,并计划修改当前使用此功能的应用程序。
维度中的数据通常为只读。 但是,在某些情况下,你可能想要启用维度写入。 在 SQL Server Analysis Services Microsoft中,启用写入功能使业务用户能够修改维度的内容,并查看对维度层次结构的更改的直接影响。 基于单个表的任何维度都可以启用写入。 在启用写入的维度中,业务用户和管理员可以更改、移动、添加和删除维度中的属性成员。 这些更新统称为 维度写回。
Analysis Services 支持对所有维度属性进行维度写回,并且可以修改维度的任何成员。 对于启用写入的多维数据集或分区,更新存储在独立于多维数据集源表的写回表中。 但是,对于启用写入的维度,更新将直接记录在维度的表中。 此外,如果启用了写入的维度包含在具有多个分区的多维数据集中,其中某些或所有数据源都有维度表的副本,则写回过程中只会更新原始维度表。
启用写入的维度和启用写入的多维数据集具有不同的但互补的功能。 启用写入的维度使业务用户能够更新成员,而启用写入的多维数据集可让他们更新单元格值。 虽然这两个功能是互补的,但你不必同时使用这两个功能。 维度不必包含在多维数据集中,才能进行维度写回。 启用写入的维度也可以包含在未启用写入的多维数据集中。 使用不同的过程来编写启用维度和多维数据集,并维护其安全性。
以下限制适用于维度写回:
创建新成员时,必须在维度中包含每个属性。 如果不为维度的键属性指定值,则无法插入成员。 因此,创建成员受维度表上定义的任何约束(如非 null 键值)。
维度写回仅支持星型架构。 换句话说,维度必须基于与事实数据表直接相关的单个维度表。 在编写启用维度后,Analysis Services 会在部署到现有 Analysis Services 数据库或生成 Analysis Services 项目时验证此要求。
可以修改或删除写回维度的任何现有成员。 删除成员后,删除将级联到所有子成员。 例如,在包含 CountryRegion、省、市和客户属性的客户维度中,删除国家/地区将删除属于已删除国家/地区的所有省、市和客户。 如果某个国家/地区只有一个省,则删除该省也会删除国家/地区。
写回维度的成员只能在同一级别内移动。 例如,城市可以移动到不同国家/地区或省的市级,但无法将城市移动到省/自治区或省/自治区级别。 在父子层次结构中,所有成员都是叶成员,因此成员可以移动到级别以外的 (All)
任何级别。
如果删除父子层次结构的成员,则成员的子级将移动到成员的父级。 对于已删除的成员,需要对关系表的更新权限,但移动成员不需要任何权限。 当应用程序移动父子层次结构中的成员时,应用程序可以在 UPDATE作中指定成员的后代是随成员一起移动还是移动到成员的父级。 若要以递归方式删除父子层次结构中的成员,用户必须对成员和所有成员后代的关系表具有更新权限。
注释
父子层次结构中父属性的更新不得包括对任何其他属性或属性的更新。
对维度所做的所有更改都会导致修改维度结构。 对维度的每个更改都被视为单个事务,需要增量处理来更新维度结构。 启用写入的维度具有与任何其他维度相同的处理要求。
注释
链接维度不支持维度写回。
安全
唯一可以更新启用写入的维度的业务用户是已向维度授予读取/写入权限的 Analysis Services 数据库角色中的用户。 对于每个角色,可以控制哪些成员可以且无法更新。 为了使业务用户能够更新启用写入的维度,其客户端应用程序必须支持此功能。 对于此类用户,启用写入的维度必须包含在自上次更改维度以来处理的多维数据集中。 有关详细信息,请参阅授权访问对象和操作(Analysis Services)。
管理员角色中包含的用户和组可以更新启用写入的维度的属性成员,即使维度未包含在多维数据集中也是如此。