标识符 (DMX)

MicrosoftSQL ServerAnalysis Services 中的所有对象都必须有标识符。服务器、数据库和数据库对象(如数据源、数据源视图、多维数据集、维度、挖掘模型等)都具有标识符。

定义对象时会创建一个对象标识符。对象的名称便是它的标识符。然后,可使用该标识符来引用对象。

数据挖掘扩展插件 (DMX) 中有两类标识符:

  • 常规标识符

  • 分隔标识符

不论采用哪种标识符类型,标识符包含的字符数必须小于或等于 100。

常规标识符

“常规标识符”是符合 Analysis Services 在标识符格式方面的规则的名称。在 DMX 中,常规标识符不需要分隔符。下面是一个 DMX 语句示例,其中使用了不带分隔符的常规标识符:

SELECT * FROM Clustering.CONTENT

在此示例中,“Clustering”既是挖掘模型的名称,也是其标识符。由于该标识符不包含任何空格或其他特殊字符,所以它是一个常规标识符且无需括在方括号中。

常规标识符规则

下面是有关常规标识符格式的规则:

  1. 常规标识符的第一个字符必须是下列字符之一:

    • Unicode 标准 2.0 定义的字母,包括从 a 到 z 和从 A 到 Z 的拉丁字符以及其他语言的字母字符。

    • 下划线 (_)。

  2. 后续字符可以是:

    • Unicode 标准 2.0 定义的字母。

    • 基本拉丁字符或其他国家/地区字符中的十进制数字。

    • 下划线 (_)。

  3. 标识符必须不能是 DMX 保留字。DMX 中的保留字不区分大小写。有关详细信息,请参阅保留关键字 (DMX)

  4. 标识符不能包含嵌入的空格或特殊字符。

如果某个标识符不符合这些规则,在 DMX 语句中使用该标识符时,必须将其括在方括号内。

分隔标识符

“分隔标识符”是括在方括号 ([ ]) 中的标识符。下面是一个带有分隔标识符的 DMX 语句示例。

SELECT * FROM [Marketing_Clusters].CONTENT

在此示例中,挖掘模型的标识符为 [Marketing_Clusters]。尽管该名称符合常规标识符的条件,但仍用方括号将其括起来。许多人都认为对标识符使用方括号是一种不错的做法,这样既可以明确表达,又可以尽量避免执行代码维护和迁移时出现的问题,即便方括号并不是必需的。

不符合常规标识符格式规则的任何标识符都必须使用分隔符。下面是一个 DMX 语句示例,其中的分隔标识符包含一个空格:

SELECT * FROM [Targeted Mailing].CONTENT

必须始终在下列情况下使用分隔标识符:

  • 将保留关键字用作对象名或对象名的一部分时。

    建议您不要将保留关键字用作对象名。在由早期版本的 Analysis Services 升级的数据库中可能包含这样的标识符,其中包括在早期版本的 Analysis Services 中未保留,但在后续版本中保留的关键字。只有在使用分隔标识符引用此类对象后,才能更改对象的名称。

  • 使用未按常规标识符规则定义的字符时。

    在 Analysis Services 中,可以在分隔标识符中使用当前代码页中的任何字符。但是,在对象名称中使用特殊字符将使 DMX 语句难以阅读和维护。例如,如果有客户端应用程序无法使用代码页,该应用程序的用户则无法查看特殊字符。最佳做法是,应使用从您或您的用户可能需要使用的任意客户端都可以阅读和输入的标识符。

    注意注意

    将早期版本的 Analysis Services 数据库升级到 SQL Server 2008 版本的数据库时,可以修改某些对象名称以保持唯一性。有关详细信息,请参阅 SQL Server 2008 中 Analysis Services 功能的重大更改

分隔标识符规则

以下是分隔标识符的格式规则:

  1. 分隔标识符可以包含与常规标识符相同的字符数:1 到 100 个,不包括分隔符本身。

  2. 标识符的主体可以包含当前代码页内所用字符(包括分隔符本身)的任意组合。如果标识符的主体本身包含分隔符,则需进行特殊处理:

    • 如果标识符的主体包含左方括号 ([),则无需进行额外处理。

    • 如果标识符的主体包含一个右方括号 (]),则必须指定两个右方括号 (]]),以表示分隔符内的单个右方括号。

分成多个部分的标识符

使用限定对象名称时,可能要分隔组成对象名的多个标识符。必须分别分隔每个标识符。以下示例演示了包含多个分隔标识符的限定对象名称。

[AdventureWorks DW 2008].[Targeted Mailing DT]