Share via


Extensiones de personalización de Analysis Services

Se aplica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server SQL Server Analysis Services las extensiones de personalización son la base de la idea de implementar una arquitectura de complemento. En una arquitectura de este tipo se pueden desarrollar de forma dinámica nuevos objetos y funcionalidad de cubo, y compartirlos fácilmente con otros programadores. Por lo tanto, SQL Server Analysis Services extensiones de personalización proporcionan la funcionalidad que permite lograr lo siguiente:

  • Diseño e implementación dinámicos Inmediatamente después de diseñar e implementar SQL Server Analysis Services extensiones de personalización, los usuarios tienen acceso a los objetos y la funcionalidad al principio de la siguiente sesión de usuario.

  • Independencia de la interfaz Independientemente de la interfaz que use para crear las extensiones de personalización de SQL Server Analysis Services, los usuarios pueden usar cualquier interfaz para acceder a los objetos y la funcionalidad.

  • El contexto de sesión SQL Server Analysis Services las extensiones de personalización no son objetos permanentes en la infraestructura existente y no requieren que se vuelva a procesar el cubo. Se exponen y se crean para el usuario en el momento en que este se conecta a la base de datos, y permanecen disponibles durante esa sesión de usuario.

  • Distribución rápida Comparta SQL Server Analysis Services extensiones de personalización con otros desarrolladores de software sin tener que ir a especificaciones detalladas sobre dónde o cómo encontrar esta funcionalidad extendida.

SQL Server Analysis Services las extensiones de personalización tienen muchos usos. Por ejemplo, supongamos que su compañía tiene ventas que implican monedas diferentes. Crea un miembro calculado que devuelve las ventas consolidadas en la moneda local de la persona que está teniendo acceso al cubo. Crea este miembro como una extensión de personalización. A continuación, comparte este miembro calculado con un grupo de usuarios. Una vez compartido, esos usuarios tienen acceso inmediato al miembro calculado en cuanto se conectan al servidor. Tienen acceso aunque no usen la misma interfaz que la que se usó para crear el miembro calculado.

SQL Server Analysis Services las extensiones de personalización son una modificación simple y elegante de la arquitectura de ensamblado administrada existente y se exponen a lo largo de la SQL Server Analysis Services modelo de objetos Microsoft.AnalysisServices.AdomdServer, la sintaxis de expresiones multidimensionales (MDX) y conjuntos de filas de esquema.

Arquitectura lógica

La arquitectura de SQL Server Analysis Services extensiones de personalización se basa en la arquitectura de ensamblado administrado y en los cuatro elementos básicos siguientes:

El atributo personalizado [PlugInAttribute]
Al iniciar el servicio, SQL Server Analysis Services carga los ensamblados necesarios y determina qué clases tienen el atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute.

Nota:

.NET Framework define atributos personalizados como una manera de describir el código y afectar al comportamiento en tiempo de ejecución. Para obtener más información, vea el tema "Información general sobre atributos" en la Guía del desarrollador de .NET Framework en MSDN.

Para todas las clases con el atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, SQL Server Analysis Services invoca sus constructores predeterminados. La llamada a todos los constructores en el inicio proporciona una ubicación común desde la que se pueden generar nuevos objetos y que es independiente de cualquier actividad del usuario.

Además de crear una pequeña memoria caché de información sobre la creación y administración de extensiones de personalización, el constructor de clase normalmente se suscribe a los eventos Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened y Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing. Si no se produce la suscripción a estos eventos, es posible que el recolector de elementos no utilizados de Common Language Runtime (CLR) marque de forma inadecuada la clase para la limpieza.

Contexto de la sesión
Para aquellos objetos basados en extensiones de personalización, SQL Server Analysis Services crea un entorno de ejecución durante la sesión de cliente y compila dinámicamente la mayoría de esos objetos en este entorno. Como cualquier otro ensamblado de CLR, este entorno de ejecución también tiene acceso a otras funciones y procedimientos almacenados. Cuando finaliza la sesión de usuario, SQL Server Analysis Services quita los objetos creados dinámicamente y cierra el entorno de ejecución.

Eventos
La creación de objetos se desencadena mediante los eventos de sesión On-Cube-OpenedCubeOpened y On-Cube-ClosingCubeClosing.

La comunicación entre el cliente y el servidor se produce a través de eventos concretos. Estos eventos hacen que el cliente conozca las situaciones que conducen a que se generen los objetos del cliente. El entorno del cliente se crea dinámicamente mediante el uso de dos conjuntos de eventos: eventos de sesión y eventos de cubo.

Los eventos de sesión se asocian al objeto de servidor. Cuando un cliente inicia sesión en un servidor, SQL Server Analysis Services crea una sesión y desencadena el evento Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened. Cuando un cliente finaliza la sesión en el servidor, SQL Server Analysis Services desencadena el evento Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing.

Los eventos de cubo se asocian al objeto de conexión. La conexión a un cubo desencadena el evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened. Al cerrar la conexión a un cubo, cerrando el cubo o cambiando a otro cubo, se desencadena un evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing.

Seguimiento y control de errores
Toda la actividad es rastreable mediante SQL Server Profiler. Los errores no controlados se notifican al registro de eventos de Windows.

Toda la creación y administración de objetos es independiente de esta arquitectura y es responsabilidad exclusiva de los programadores de los objetos.

Fundamentos de la infraestructura

SQL Server Analysis Services las extensiones de personalización se basan en componentes existentes. A continuación se muestra un resumen de las mejoras que proporciona la funcionalidad de las extensiones de personalización.

Ensamblados

El atributo personalizado, Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, se puede agregar a los ensamblados personalizados para identificar SQL Server Analysis Services clases de extensiones de personalización.

Cambios del modelo de objetos AdomdServer

Los objetos siguientes en el modelo de objetos Microsoft.AnalysisServices.AdomdServer se han mejorado o agregado al modelo.

Nueva clase AdomdConnection

La clase Microsoft.AnalysisServices.AdomdServer.AdomdConnection es nueva y expone varias extensiones de personalización a través de propiedades y eventos.

Propiedades

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID, un valor de cadena de solo lectura que representa el identificador de sesión de la conexión actual.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture, una referencia de solo lectura a la referencia cultural de cliente asociada a la sesión actual.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User, una referencia de solo lectura a la interfaz de identidad que representa al usuario actual.

Eventos

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing

Nuevas propiedades en la clase Context

La clase Microsoft.AnalysisServices.AdomdServer.Context tiene dos propiedades nuevas:

  • Microsoft.AnalysisServices.AdomdServer.Context.Server, una referencia de solo lectura al nuevo objeto de servidor.

  • Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection, una referencia de solo lectura al nuevo objeto Microsoft.AnalysisServices.AdomdServer.AdomdConnection.

Nueva clase Server

Las propiedades y eventos de clase Microsoft.AnalysisServices.AdomdServer.Server.

Propiedades

  • Microsoft.AnalysisServices.AdomdServer.Server.Name, un valor de cadena de solo lectura que representa el nombre del servidor.

  • Microsoft.AnalysisServices.AdomdServer.Server.Culture, referencia de solo lectura a la referencia cultural global asociada al servidor.

Eventos

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing

Clase AdomdCommand

La clase Microsoft.AnalysisServices.AdomdServer.AdomdCommand ahora admite los siguientes comandos MDX:

Extensiones y mejoras de MDX

El comando CREATE MEMBER se mejora con la propiedad subtítulo, la propiedad display_folder y la propiedad associated_measure_group.

El comando UPDATE MEMBER se agrega para no tener que crear de nuevo los miembros cuando se necesita una actualización con la consiguiente pérdida de prioridad en la resolución de cálculos. Novedades no puede cambiar el ámbito del miembro calculado, mover el miembro calculado a un elemento primario diferente o definir un orden de resolución diferente.

El comando CREATE SET se mejora con la propiedad subtítulo, la propiedad display_folder y el nuevo STATIC | Palabra clave DYNAMIC. Estático significa que el conjunto solo se evalúa en el momento de la creación. Dinámico significa que el conjunto se evalúa cada vez que se usa el conjunto en una consulta. El valor predeterminado es STATIC si se omite una palabra clave.

Los comandos CREATE KPI y DROP KPI se agregan a la sintaxis de MDX. Las KPI se pueden crear dinámicamente a partir de cualquier script MDX.

Extensiones de conjuntos de filas de esquema

En MDSCHEMA_MEMBERS columna de ámbito se agrega. Los valores de scope son los siguientes: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

En MDSCHEMA_SETS columna set_evaluation_context se agrega. Los valores de set evaluation context son los siguientes: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

En MDSCHEMA_KPIS se agrega la columna scope. Los valores de scope son los siguientes: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.