Analysis Services 个性化设置扩展

SQL Server Analysis Services 个性化设置扩展是实现插件体系结构想法的基础。在插件体系结构中,您可以动态地开发新的多维数据集对象和功能,并可以与其他开发人员方便地共享。这样,Analysis Services 个性化设置扩展提供的功能可以令您实现:

  • 动态设计和部署   在设计和部署 Analysis Services 个性化设置扩展后,用户在下一个用户会话开始时就立即可以访问这些对象和功能。

  • 接口独立   不论您使用哪个接口创建 Analysis Services 个性化设置扩展,用户都可以使用任意接口访问对象和功能。

  • 会话上下文   Analysis Services 个性化设置扩展不是现有基础结构中的永久对象,不需要重新处理多维数据集。在用户连接到数据库时,它们将公开并为该用户创建,并在整个用户会话期间保持可用。

  • 快速分布   与其他软件开发人员共享 Analysis Services 个性化设置扩展,而无需查看有关查找此扩展功能的位置和方式的详细规范。

Analysis Services 个性化设置扩展具有多种用途。例如,您的公司的销售涉及到多种货币。您可创建一个计算成员,以本地货币返回访问此多维数据集的人员的总销售额。首先要此成员创建为个性化设置扩展。然后,将此计算成员与一组用户共享。共享后,这些用户一连接到服务器就可以立即访问该计算成员。即使用户使用的接口不是用于创建该计算成员的接口,也可以访问该计算成员。

Analysis Services 个性化设置扩展是对现有托管程序集体系结构的简单而有效的修改,在整个 Analysis ServicesMicrosoft.AnalysisServices.AdomdServer 对象模型、多维表达式 (MDX) 语法和架构行集中公开的。

逻辑体系结构

Analysis Services 个性化设置扩展的体系结构以托管程序集体系结构以及以下四个基本元素为基础:

  • [PlugInAttribute] 自定义属性
    当启动服务时,Analysis Services 会加载所需的程序集,并确定哪个类具有 PlugInAttribute 自定义属性。

    注意注意

    .NET Framework 将定义自定义属性作为描述代码及影响运行时行为的方式。有关详细信息,请参阅 MSDN 上的 .NET Framework 开发人员指南中的主题“Attributes Overview(属性概述)”。

    对于具有 PlugInAttribute 自定义属性的所有类,Analysis Services 会调用其默认构造函数。在启动时调用所有构造函数会提供一个共用位置,从该位置可不受任何用户活动干扰地生成新对象。

    除了生成创作和管理个性化设置相关信息的少量缓存,类构造函数通常会订阅 SessionOpenedSessionClosing 事件。未能订阅这些事件可能会导致将类错误地标记为由公共语言运行时 (CLR) 垃圾收集器进行清理。

  • 会话上下文
    对于基于个性化设置扩展的那些对象,Analysis Services 会在客户端会话期间创建执行环境,并在此环境中动态地生成大多数对象。与其他任何 CLR 程序集一样,此执行环境还可以访问其他函数和存储过程。当用户会话结束时,Analysis Services 会删除动态创建的对象,并关闭执行环境。

  • 事件
    对象创建是由会话事件 On-Cube-OpenedCubeOpened 和 On-Cube-ClosingCubeClosing 触发的。

    客户端与服务器之间的通信是通过特定事件发生的。这些事件使客户端了解会导致生成客户端对象的情况。客户端环境是使用两种事件动态创建的:会话事件和多维数据集事件。

    会话事件与服务器对象关联。当客户端登录到服务器时,Analysis Services 会创建会话,并触发 SessionOpened 事件。当客户端结束服务器上的会话时,Analysis Services 会触发 SessionClosing 事件。

    多维数据集事件与连接对象关联。连接到多维数据集会触发 CubeOpened 事件。关闭到多维数据集的连接(通过关闭多维数据集或更改到其他多维数据集)将触发 CubeClosing 事件。

  • 可跟踪性和错误处理
    使用 SQL Server Profiler 可跟踪所有活动。未处理的错误会报告给 Windows 事件日志。

所有对象的创作和管理都是独立于此体系结构,是对象的开发人员的唯一责任。

基础结构基础

Analysis Services 个性化设置扩展基于现有组件。下面简要列出了提供个性化设置扩展功能的增强功能和改进功能。

程序集

可以将自定义属性 PlugInAttribute 添加到自定义程序集,用以标识 Analysis Services 个性化设置扩展类。

对 AdomdServer 对象模型的更改

Microsoft.AnalysisServices.AdomdServer 对象模型中的下列对象已得到增强或已添加到模型。

新增 AdomdConnection 类

AdomdConnection 类是新增的,并通过属性和事件公开多个性化设置扩展。

属性

  • SessionID,只读字符串值,表示当前连接的会话 ID。

  • ClientCulture,对与当前会话关联的客户端区域性的只读引用。

  • User,对表示当前用户的标识接口的只读引用。

事件

上下文类中的新增属性

Context 类具有两个新增属性:

新增服务器类

Server 类是新增的,并通过类属性和事件公开多个性化设置扩展。

属性

  • Name,表示服务器名称的只读字符串值。

  • Culture,对与服务器关联的全局区域性的只读引用。

事件

AdomdCommand 类

MDX 扩展和增强功能

通过 caption 属性、display_folder 属性和 associated_measure_group 属性对 CREATE MEMBER 命令进行了增强。

添加 UPDATE MEMBER 命令是为了在求解计算丢失优先顺序时需要更新的情况下避免重新创建成员。更新无法更改计算成员的作用域,无法将计算成员移动到其他父级,也无法定义其他 solveorder。

通过 caption 属性、display_folder 属性和新 STATIC | DYNAMIC 关键字对 CREATE SET 命令进行了增强。“静态”表示仅在创建时计算该集。“动态”表示每次在查询中使用该集时都会计算该集。如果省略关键字,默认值则为 STATIC。

在 MDX 语法中增加了 CREATE KPI 和 DROP KPI 命令。可以从任意 MDX 脚本动态创建 KPI。

架构行集扩展

在 MDSCHEMA_MEMBERS 上,增加了 scope 列。作用域值如下:MDMEMBER_SCOPE_GLOBAL=1、MDMEMBER_SCOPE_SESSION=2。

在 MDSCHEMA_SETS 上,增加了 set_evaluation_context 列。将计算上下文值设置为:MDSET_RESOLUTION_STATIC = 1、MDSET_RESOLUTION_DYNAMIC = 2。

在 MDSCHEMA_KPIS 上,增加了作用域列。作用域值如下:MDKPI_SCOPE_GLOBAL=1、MDKPI_SCOPE_SESSION=2。