对象命名(Analysis Services - 多维数据)
对象名称、ID 和引用
一般情况下,每个主要对象都包含有以下属性:
Name 通常,同级对象的名称在父集合的范围内是唯一的。 例如,两个不同的 Database 对象可能具有相同的 Dimension 名称。 但在这两个 Database 中,Dimension 名称都是唯一的。 有关此规则的例外情况将稍后介绍。 例如,Measure 名称在 Cube 级别需要是唯一的,但在父 MeasureGroup 级别却不需要是唯一的。
ID 应用于 Name 属性的唯一性限制也适用于 ID 属性。 此外,ID 属性不可更改。ID 属性是在创建时由用户或应用程序分配的,当然也可由服务器自动分配(当未指定该属性时)。 如果由服务器分配 ID 属性,则服务器会将 ID 属性设置为对象的初始名称。
Description
对象引用
对象是通过它们的 ID 属性进行引用的。 ID 属性的命名约定规定,该属性名称以基于目标类型的名称开头,需要添加后缀“ID”,同时还可添加一个提供对象所充当角色的其他信息的前缀。 例如,如果对象为 Cube 中使用的默认度量值, 则其目标类型为 Measure。 您可以向此目标类型名称添加后缀“ID”和前缀“Default”。 这样就可生成 ID 属性名称 DefaultMeasureID,如以下代码中所示:
<Cube>
<DefaultMeasureID>Amount</DefaultMeasureID>
…
<Cube>
如果需要包含多个 ID 的限定名称(例如,CubeID 和 MeasureID 都引用另一个 Cube 中的度量值),则可引入外部元素,以包含 ID 元素集。
引用异常
由单个点 (.) 组成的 DataSource 引用 可引用当前 OLAP 服务器的当前数据库。 例如,下面的 XML 片段指向当前 OLAP 服务器实例的当前 Database:
<DataSourceID>.</DataSourceID>
对 DataSourceView (DSV) 元素的引用是引用规则的例外情况。 Microsoft .NET Framework 中的 DataSet 对象对 DSV 的架构进行了介绍。 在该架构中,DSV 对象具有 Name,但没有不变的 ID。 因此,对 DSV 对象的引用需要使用 Name 标识机制。 例如,引用 ColumnBinding.TableID 就不包含 ID, 而包含相应表的 Name。
命名规则
对于 Name 和 ID 属性的大小写和空格问题,ASSL 将应用与 DSO 8.0 中所用规则相同的规则:
Name 和 ID 的唯一性检查不区分大小写。 因此,同一数据库中不可同时拥有名为“sales”和“Sales”的两个 Cube。
Name 或 ID 属性可包含嵌入空格,但却不能有前导空格或尾随空格。 前导空格和尾随空格将会被隐式删除。 此规则既适用于对象的 Name 和 ID,也适用于引用该 Name 和 ID 的元素的值。
以下规则也适用于 Name 和 ID 属性。 这些规则与 DSO 8.0 中的规则类似。
最大字符数为 100。
对标识符的第一个字符没有特殊要求。 第一个字符可为任意有效字符
不可使用以下保留名称:
AUX
CLOCK$
COM1 到 COM9(COM1、COM2、COM3 等)
CON
LPT1 到 LPT9(LPT1、LPT2、LPT3 等)
NUL
PRN
XML 内的任何字符串的字符都不可为 NULL
下表列出了特定对象的无效字符。
对象 |
无效字符 |
---|---|
Server |
此名称必须遵循计算机名称规则。 (IP 地址无效。) |
DataSource |
: / \ * | ? " () [] {} <> |
Level 或 Attribute |
. , ; ' ` : / \ * | ? " & % $ ! + = [] {} < > |
Dimension 或 Hierarchy |
.,, ; ' ` : / \ * | ? " & % $ ! + = () [] {} <,> |
所有其他对象 |
. , ; ' ` : / \ * | ? " & % $ ! + = () [] {} < > |
本地化的名称
客户端可见的对象标题(例如,Dimension、层次结构和 Level)可本地化为不同的语言。 通过命令方式定义的对象标题(例如,计算度量值和命名集)作为对象的 MDX 定义的一部分提供。
属性的绑定还允许向不同语言提供属性名称的不同源(例如不同的源列)。
不可本地化对象的名称。