Extensiones de personalización de Analysis Services
Las extensiones de personalización de SQL ServerAnalysis Services constituyen el fundamento 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 tanto, las extensiones de personalización de Analysis Services proporcionan una funcionalidad que permite lograr lo siguiente:
Diseño e implementación dinámicos Inmediatamente después de diseñar e implementar las extensiones de personalización de Analysis Services, los usuarios tienen acceso a los objetos y a la funcionalidad al comenzar la siguiente sesión de usuario.
Independencia de la interfaz Independientemente de la interfaz que use para crear las extensiones de personalización de Analysis Services, los usuarios pueden utilizar cualquier interfaz para tener acceso a los objetos y a la funcionalidad.
Contexto de la sesión Las extensiones de personalización de Analysis Services 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 las extensiones de personalización de Analysis Services con otros desarrolladores sin tener que entrar en especificaciones detalladas sobre dónde o cómo buscar esta funcionalidad extendida.
Las extensiones de personalización de Analysis Services 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.
Las extensiones de personalización de Analysis Services son una modificación simple y elegante de la arquitectura de ensamblado administrado existente y se exponen en el modelo de objetos Microsoft.AnalysisServices.AdomdServer de Analysis Services, en la sintaxis de Expresiones multidimensionales (MDX) y en los conjuntos de filas de esquema.
Arquitectura lógica
La arquitectura de las extensiones de personalización de Analysis Services se basa en la arquitectura de ensamblado administrado y en los cuatro elementos básicos siguientes:
El atributo personalizado [PlugInAttribute]
Cuando se inicia el servicio, Analysis Services carga los ensamblados necesarios y determina qué clases tienen el atributo personalizado PlugInAttribute.[!NOTA]
.NET Framework define los atributos personalizados como una manera de describir el código e influir en el comportamiento en tiempo de ejecución. Para obtener más información, consulte el tema "Attributes Overview", de .NET Framework Developer's Guide en MSDN.
Para todas las clases con el atributo personalizado PlugInAttribute, Analysis Services llama a 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 generar una pequeña memoria caché de información sobre la creación y administración de las extensiones de personalización, el constructor de clase se suscribe normalmente a los eventos SessionOpened y 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 los objetos que se basan en extensiones de personalización, Analysis Services crea un entorno de ejecución durante la sesión del cliente y genera dinámicamente la mayor parte 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 la sesión de usuario finaliza, Analysis Services quita los objetos creados dinámicamente y cierra el entorno de ejecución.Eventos
Los eventos de sesión On-Cube-OpenedCubeOpened y On-Cube-ClosingCubeClosing desencadenan la creación de objetos.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, Analysis Services crea una sesión y desencadena el evento SessionOpened. Cuando un cliente finaliza la sesión en el servidor, Analysis Services desencadena el evento SessionClosing.
Los eventos de cubo se asocian al objeto de conexión. La conexión a un cubo desencadena el evento CubeOpened. El cierre de la conexión a un cubo, ya sea cerrándolo o cambiando a un cubo diferente, desencadena un evento CubeClosing.
Seguimiento y control de errores
Toda la actividad puede ser objeto de seguimiento mediante el uso de 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
Las extensiones de personalización de Analysis Services 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, PlugInAttribute, se puede agregar a los ensamblados personalizados para identificar las clases de extensiones de personalización de Analysis Services.
Cambios del modelo de objetos AdomdServer
Los objetos siguientes del modelo de objetos Microsoft.AnalysisServices.AdomdServer se han mejorado o se han agregado al modelo.
Nueva clase AdomdConnection
La clase AdomdConnection es nueva y expone varias extensiones de personalización a través de propiedades y eventos.
Propiedades
SessionID, un valor de cadena de solo lectura que representa el identificador de sesión de la conexión actual.
ClientCulture, una referencia de solo lectura a la referencia cultural del cliente asociada a la sesión actual.
User, una referencia de solo lectura a la interfaz de identidad que representa al usuario actual.
Eventos
Nuevas propiedades en la clase Context
La clase Context tiene dos propiedades nuevas:
Server, una referencia de solo lectura al nuevo objeto de servidor.
CurrentConnection, una referencia de solo lectura al nuevo objeto AdomdConnection.
Nueva clase Server
La clase Server es nueva y expone varias extensiones de personalización a través de propiedades y eventos de clase.
Propiedades
Name, un valor de cadena de solo lectura que representa el nombre del servidor.
Culture, una referencia de solo lectura a la referencia cultural global asociada al servidor.
Eventos
Clase AdomdCommand
La clase AdomdCommand admite ahora los comandos MDX siguientes:
Extensiones y mejoras de MDX
El comando CREATE MEMBER se mejora con las propiedades caption, display_folder y 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. Las actualizaciones no pueden cambiar el ámbito del miembro calculado, mover el miembro calculado a un elemento primario diferente o definir un solveorder distinto.
El comando CREATE SET se mejora con las propiedades caption y display_folder, y la nueva palabra clave STATIC | DYNAMIC. Static significa que el conjunto solamente se evalúa en el momento de la creación. Dynamic significa que el conjunto se evalúa cada vez que se usa 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 se agrega la columna scope. Los valores de scope son los siguientes: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.
En MDSCHEMA_SETS se agrega la columna set_evaluation_context. 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.