Analysis Services 个性化设置扩展
SQL Server Analysis Services 个性化扩展插件是实现插件体系结构想法的基础。 在插件体系结构中,您可以动态地开发新的多维数据集对象和功能,并可以与其他开发人员方便地共享。 因此,Analysis Services 个性化设置扩展提供了可实现以下目的的功能:
动态设计和部署 设计和部署 Analysis Services 个性化扩展后,用户可在下一个用户会话开始时立即访问对象和功能。
接口独立性 无论用于创建 Analysis Services 个性化扩展的接口如何,用户都可以使用任何接口来访问对象和功能。
会话上下文 Analysis Services 个性化设置扩展不是现有基础结构中的永久对象,不需要重新处理多维数据集。 在用户连接到数据库时,它们将公开并为该用户创建,并在整个用户会话期间保持可用。
快速分发 与其他软件开发人员共享 Analysis Services 个性化扩展,而无需详细了解在何处或如何查找此扩展功能。
Analysis Services 个性化设置扩展有许多用途。 例如,您的公司的销售涉及到多种货币。 您可创建一个计算成员,以本地货币返回访问此多维数据集的人员的总销售额。 首先要此成员创建为个性化设置扩展。 然后,将此计算成员与一组用户共享。 共享后,这些用户一连接到服务器就可以立即访问该计算成员。 即使用户使用的接口不是用于创建该计算成员的接口,也可以访问该计算成员。
Analysis Services 个性化设置扩展是对现有托管程序集体系结构的简单而优雅的修改,在 Analysis Services Microsoft.AnalysisServices.AdomdServer 对象模型、多维表达式 (MDX) 语法和架构行集中公开。
逻辑体系结构
Analysis Services 个性化设置扩展的体系结构基于托管程序集体系结构和以下四个基本元素:
[PlugInAttribute] 自定义属性
启动服务时,Analysis Services 将加载所需的程序集,并确定哪些类具有 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 自定义属性。
注意
.NET Framework将自定义属性定义为描述代码并影响运行时行为的一种方式。 有关详细信息,请参阅 MSDN .NET Framework开发人员指南中的主题“属性概述”。
对于具有 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 自定义属性的所有类,Analysis Services 会调用其默认构造函数。 在启动时调用所有构造函数会提供一个共用位置,从该位置可不受任何用户活动干扰地生成新对象。
除了生成有关创作和管理个性化扩展的小型信息缓存外,类构造函数通常还订阅 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened 和 Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing 事件。 未能订阅这些事件可能会导致将类错误地标记为由公共语言运行时 (CLR) 垃圾收集器进行清理。
会话上下文
对于基于个性化扩展的对象,Analysis Services 会在客户端会话期间创建一个执行环境,并在此环境中动态生成其中的大部分对象。 与其他任何 CLR 程序集一样,此执行环境还可以访问其他函数和存储过程。 用户会话结束时,Analysis Services 会删除动态创建的对象并关闭执行环境。
事件
对象创建是由会话事件 On-Cube-OpenedCubeOpened
和 On-Cube-ClosingCubeClosing
触发的。
客户端与服务器之间的通信是通过特定事件发生的。 这些事件使客户端了解会导致生成客户端对象的情况。 客户端环境是使用两种事件动态创建的:会话事件和多维数据集事件。
会话事件与服务器对象关联。 当客户端登录到服务器时,Analysis Services 会创建一个会话并触发 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened 事件。 当客户端结束服务器上的会话时,Analysis Services 将触发 Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing 事件。
多维数据集事件与连接对象关联。 连接到多维数据集会触发 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened 事件。 通过关闭多维数据集或更改为其他多维数据集来关闭与多维数据集的连接,将触发 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing 事件。
可跟踪性和错误处理
使用 SQL Server Profiler 可跟踪所有活动。 未处理的错误会报告给 Windows 事件日志。
所有对象的创作和管理都是独立于此体系结构,是对象的开发人员的唯一责任。
基础结构基础
Analysis Services 个性化设置扩展基于现有组件。 下面简要列出了提供个性化设置扩展功能的增强功能和改进功能。
程序集
可以将自定义属性 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 添加到自定义程序集,以标识 Analysis Services 个性化扩展类。
对 AdomdServer 对象模型的更改
Microsoft.AnalysisServices.AdomdServer 对象模型中的以下对象已得到增强或添加到模型中。
新增 AdomdConnection 类
Microsoft.AnalysisServices.AdomdServer.AdomdConnection 类是新的,它通过属性和事件公开了多个个性化扩展。
属性
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID*,一个只读字符串值,表示当前连接的会话 ID。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture*,对与当前会话关联的客户端区域性的只读引用。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User*,对表示当前用户的标识接口的只读引用。
事件
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing
上下文类中的新增属性
Microsoft.AnalysisServices.AdomdServer.Context 类具有两个新属性:
Microsoft.AnalysisServices.AdomdServer.Context.Server*,对新服务器对象的只读引用。
Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection*,对新的 Microsoft.AnalysisServices.AdomdServer.AdomdConnection 对象的只读引用。
新增服务器类
Microsoft.AnalysisServices.AdomdServer.Server 类是新的,它通过类属性和事件公开了多个个性化扩展。
属性
Microsoft.AnalysisServices.AdomdServer.Server.Name*,表示服务器名称的只读字符串值。
Microsoft.AnalysisServices.AdomdServer.Server.Culture*,对与服务器关联的全局区域性的只读引用。
事件
AdomdCommand 类
Microsoft.AnalysisServices.AdomdServer.AdomdCommand 类现在支持以下 MDX 命令:
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 添加范围 列。 作用域值如下: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。