Analysis Services 个性化设置扩展

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server SQL Server Analysis Services 个性化扩展是实现插件体系结构的基础。 在插件体系结构中,可以动态开发新的多维数据集对象和功能,并与其他开发人员轻松共享它们。 因此,SQL Server Analysis Services 个性化扩展提供了可实现以下功能的功能:

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

  • 接口独立性 无论用于创建 SQL Server Analysis Services 个性化扩展的接口如何,用户都可以使用任何接口来访问对象和功能。

  • 会话上下文 SQL Server Analysis Services 个性化扩展不是现有基础设施中的永久性对象,也无需重新处理多维数据集。 用户连接到数据库时,相应的内容会为用户公开并创建,并在用户会话持续期间保持可用。

  • 快速分发 与其他软件开发人员共享 SQL Server Analysis Services 个性化扩展,而无需深入了解有关此扩展功能的位置或方法的详细规范。

SQL Server Analysis Services 个性化扩展有许多用途。 例如,贵公司的销售涉及不同的货币。 创建一个计算成员,用于返回访问多维数据集的人员本地货币的合并销售额。 你创建此成员作为个性化扩展。 然后,将此计算成员共享给一组用户。 共享后,这些用户在连接到服务器后可以立即访问计算成员。 即使它们没有使用与用于创建计算成员的接口相同的接口,它们也具有访问权限。

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

逻辑体系结构

SQL Server Analysis Services 个性化扩展的体系结构基于托管程序集体系结构和以下四个基本元素:

[PlugInAttribute] 自定义属性
启动服务时,SQL Server Analysis Services 将加载所需的程序集,并确定哪些类具有 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 自定义属性。

注释

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

对于具有 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 自定义属性的所有类,SQL Server Analysis Services 调用其默认构造函数。 在启动时调用所有构造函数提供了一个公共位置,可从中生成新对象,并且独立于任何用户活动。

除了生成关于创作和管理个性化扩展的信息的小缓存外,类构造函数通常订阅 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened 和 Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing 事件。 未能订阅这些事件可能导致该类被公共语言运行时(CLR)垃圾回收器错误地标记为需要清理。

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

事件
对象创建由 会话事件 On-Cube-OpenedCubeOpenedOn-Cube-ClosingCubeClosing 触发。

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

会话事件与服务器对象相关联。 当客户端登录到服务器时,SQL Server Analysis Services 将创建一个会话并触发 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened 事件。 当客户端在服务器上结束会话时,SQL Server Analysis Services 将触发 Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing 事件。

多维数据集事件与连接对象相关联。 连接到多维数据集会触发 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened 事件。 关闭与数据立方体的连接可以通过关闭当前数据立方体或切换到另一个数据立方体来实现,此操作会触发 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing 事件。

可跟踪性和错误处理
所有活动都可以使用 SQL Server Profiler 进行跟踪。 未经处理的错误将报告给 Windows 事件日志。

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

基础设施构建基础

SQL Server Analysis Services 个性化设置扩展基于现有组件。 下面是提供个性化扩展功能的增强和改进的摘要。

程序集

可将自定义属性Microsoft.AnalysisServices.AdomdServer.PlugInAttribute 添加到自定义程序集,以标识 SQL Server Analysis Services 个性化扩展类。

对 AdomdServer 对象模型的更改

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

New AdomdConnection 类

Microsoft.AnalysisServices.AdomdServer.AdomdConnection 类是新的,通过属性和事件公开多个个性化扩展。

性能

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

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture,这是对与当前会话关联的客户端文化设置的只读的引用。

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User,它是对表示当前用户的标识接口的只读引用。

Events

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing

Context 类中的新属性

Microsoft.AnalysisServices.AdomdServer.Context 类有两个新属性:

  • Microsoft.AnalysisServices.AdomdServer.Context.Server,这是对新服务器对象的只读引用。

  • Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection,这是对新 Microsoft.AnalysisServices.AdomdServer.AdomdConnection 对象的只读引用。

新的 Server 类

Microsoft.AnalysisServices.AdomdServer.Server 提供类属性和事件。

性能

  • Microsoft.AnalysisServices.AdomdServer.Server.Name,表示服务器名称的只读字符串值。

  • Microsoft.AnalysisServices.AdomdServer.Server.Culture,用于指向与服务器关联的全局文化设置的只读引用。

Events

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing

AdomdCommand 类

Microsoft.AnalysisServices.AdomdServer.AdomdCommand 类现在支持以下 MDX 命令:

MDX 扩展和增强功能

CREATE MEMBER 命令使用 caption 属性、 display_folder 属性和 associated_measure_group 属性增强。

添加了 UPDATE MEMBER 命令,以避免在需要更新时重新创建成员,从而在解决计算时失去优先级。 更新无法更改计算成员的范围,将计算成员移动到其他父级,或定义不同的 求解器

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

CREATE KPI 和 DROP KPI 命令将添加到 MDX 语法。 可以从任何 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。