Set Up XMLA HTTP Access for SQL Server
En este artículo, le mostraré cómo configurar un servidor SQL que proporcione servicios de análisis y acceso HTTP XMLA a la base de datos de Adventure Works. Al final mostraré una aplicación Silverlight básica que utiliza esta configuración y Infragistics' Silverlight PivotGrid para visualizar los datos.
SQL Server Analysis Service 2008
Comencemos con la instalación de SQL Server. La instalación es muy sencilla. Sólo tienes que seguir las instrucciones en pantalla y todo debería estar bien. Solo hay algunos puntos clave que requerirán atención (el texto en cursiva) y le diré cuáles son a medida que describo cómo debe ir la configuración.
La implementación comienza con la instalación de .NET Framework y las actualizaciones del instalador que es posible que el equipo no tenga. A continuación, se instalan los archivos de soporte.
Una vez finalizados, se le pedirá que ingrese su clave de producto y acepte los términos de la licencia. A continuación, se le presentarán las opciones de selección de funciones. Ahora solo necesitamos unos pocos para admitir el escenario básico de este tutorial, pero es posible que desee instalar más o todos ellos si planea desarrollar aplicaciones más avanzadas o desea combinar esta instalación con otros servicios. El conjunto mínimo de características que debe instalar es el siguiente: Servicios de motor de base de datos, Búsqueda de texto completo, Servicios de análisis BI Estudio de desarrollo, Herramientas de administración básicas y Completas.
BI Development Studio es necesario, ya que es la manera más sencilla de implementar el paquete de base de datos de ejemplo de Adventure Works. Las herramientas de administración son necesarias para poder verificar la instalación del servidor y las bases de datos de muestra y también es posible que desee manipular los datos, las bases de datos y la configuración del servidor SQL.
Cuando esté listo con las características, deberá elegir si desea una instancia predeterminada o con nombre para el servidor SQL. Si no planea tener más de una instancia, el valor predeterminado es correcto.
A continuación, se le preguntará sobre las configuraciones de las cuentas de usuario. Puede seleccionar de forma segura NT AUTHORITY\NETWORK SERVICE USER para todos los servicios y agregar el usuario actual para que tenga permisos administrativos dondequiera que se le solicite (motor de base de datos y configuración de servicios de análisis). Tenga en cuenta que el usuario que agregue para el aprovisionamiento de análisis tendrá que ser el que ejecute la aplicación web, por lo que si desea que otra cuenta cumpla esta función de administración, debe crearla antes de agregarla aquí o agregarla más adelante al rol de administrador en el estudio de administración (se tratará más adelante en el artículo).
Una vez que haya pasado la selección de usuario, la opción de Informe de errores y uso y se hayan verificado las reglas de instalación, se le presentará un resumen y presione Instalar. Una vez finalizado el proceso de instalación, sólo hay que tener en cuenta otro problema si utiliza Windows 7: el software tiene un problema conocido y debe instalar SP1 antes de poder utilizar el servidor SQL.
Para comprobar que la instalación se ha realizado correctamente, vaya al menú de inicio y busque SQL Management Studio. Ábralo e intente conectarse a la instancia local del Analysis Server que acaba de instalar. Si no obtiene ningún error, estamos listos para comenzar.
XMLA HTTP Access
Después de instalar el servidor SQL con servicios de análisis podemos continuar con el acceso HTTP XMLA. Necesitamos un servidor web y para el propósito de este tutorial usaremos IIS 7. La forma más sencilla de instalar IIS es iniciar el módulo Agregar o quitar componentes de Windows de Agregar o quitar programas o Activar o desactivar las características de Windows desde Programas si está utilizando Windows Vista o 7.
Las características que necesitamos instalar se encuentran en la carpeta Internet Information Services. Puede optar fácilmente por solo algunas de las subfunciones, pero instalar todo lo sacará de problemas si desea realizar aplicaciones avanzadas que podrían depender de una característica específica de IIS. Las características obligatorias para nuestro caso son las Herramientas de Administración Web, Extensibilidad .NET, ASP.NET, Extensiones ISAPI, Autenticación Básica y Autenticación Windows. Sin embargo, simplemente instalé todo.
Al pulsar OK, se instalará e iniciará el IIS.
Para configurar IIS necesitamos iniciar la Consola del Administrador de IIS. Puede hacer clic con el botón derecho en Mi PC, presionar Administrar y luego buscar Servicios de información de Internet o simplemente iniciar el InetMgr.exe desde el menú de inicio Ejecutar.
Iniciamos la configuración de IIS creando un grupo de aplicaciones para nuestra aplicación. Haga clic con el botón derecho en Grupos de aplicaciones y presione Agregar grupo de aplicaciones.
En la ventana que se abrió, asigne un nombre al grupo de aplicaciones.
Press OK.
Ahora necesitaremos copiar algunos archivos que serán la base del sitio web que proporciona el acceso HTTP XMLA. Se encuentran en <dondequiera que haya instalado el servidor SQL >\OLAP\bin\isapi. En mi caso esa carpeta es: C:\Archivos de programa\Microsoft SQL Server\MSAS10. ASQL\OLAP\bin\isapi. Copie todos los archivos de esta carpeta y péguelos en una nueva debajo de la raíz del sitio web predeterminado. Para ir a esta carpeta, haga clic con el botón secundario en el nombre del sitio en el administrador de configuración y presione Explorar. Crea una nueva carpeta llamada olap y pega los archivos copiados allí. También debe asegurarse de que el usuario que ejecuta el servicio IIS tiene permiso para leer los archivos de la carpeta. Compruébelo yendo a la sección Seguridad de las Propiedades en la carpeta principal (la raíz web). Si los permisos no son correctos, recibirá un mensaje de error cuando apunte el navegador a ese sitio web, diciendo que es posible que no se encuentren los archivos o que no haya acceso a los archivos que está buscando.
El archivo dll que copiamos es el motor que proporciona el XMLA y el ini es el archivo que apunta el motor al servidor SQL. Si instaló el SQL en un equipo diferente al equipo IIS, deberá modificar este archivo en consecuencia.
Cuando haya creado la carpeta OLAP, vaya de nuevo al administrador de IIS, expanda el sitio web predeterminado y busque la carpeta olap debajo de ella. Es posible que deba presionar actualizar para que aparezca. Cuando lo haga, haga clic con el botón derecho y presione Convertir en aplicación.
En la ventana recién abierta, cambie el grupo de aplicaciones a olap.
Una vez que haya hecho eso, solo hay tres pasos que debe seguir para finalizar esta sección del proceso. El primero de ellos es agregar un controlador para *.dll al sitio web. Seleccione la carpeta olap y, en Configuración de IIS, presione Asignaciones de controladores.
En el lado derecho de la pantalla encontrará un enlace Agregar mapa de script. Púlsalo. En la ruta de acceso de la solicitud, escriba *.dll. Luego, para el ejecutable, proporcione la ruta al archivo msmdpump.dll en la carpeta olap y asígnele el nombre olap.
Cuando presione el botón Aceptar, se le pedirá que agregue una extensión ISAPI y deberá presionar Sí.
Ahora, el segundo paso es ir a la configuración de autenticación de IIS en la carpeta olap. De forma predeterminada, solo está habilitada la autenticación anónima. Para los fines de este tutorial, usaremos solo anónimo, pero tenga en cuenta que existen mecanismos de autenticación más avanzados disponibles. Ahora haga clic con el botón derecho en la autenticación anónima y haga clic en editar. En el cuadro que se abre, haga clic en el botón Establecer e introduzca las credenciales de la cuenta de usuario que agregó como cuenta provisional de análisis en el paso de instalación de SQL. Puede ser el usuario con el que está conectado actualmente, u otro si lo ha creado especialmente para el trabajo. Este es el usuario que creará todas las conexiones al servicio SQL Analysis.
Si aún no ha agregado el rol administrativo en SQL Analysis Service, como se mencionó anteriormente, puede agregar permisos de acceso para el usuario predeterminado que inicia la aplicación olap y no molestarse en crear un usuario de servicio especial. Para ello, deberá dejar el usuario predeterminado (IUSR) en la página Autenticación y esperar hasta que instalemos la base de datos de Adventure Works. Habrá un párrafo que le indicará cómo otorgar los permisos necesarios.
El último paso es ir a la configuración global de IIS (no a la configuración de la carpeta OLAP) y seleccionar las restricciones ISAPI y SGI. Verá que la restricción que se nos pidió crear para el archivo dll msmdpump no tiene nombre. Necesitamos hacer doble clic en él y luego nombrarlo olap.
Para comprobar que lo hemos hecho bien necesitamos apuntar un navegador a http://localhost/olap/msmdpump.dll y observar el resultado. Firefox te mostrará algo similar a esto:
Adventure Works 2008
Ahora que hemos configurado el acceso XMLA al servidor SQL, necesitamos datos para poder acceder desde nuestra demostración. Un conjunto muy popular de datos de ejemplo es el paquete Adventure Works, y vamos a instalarlo ahora.
Los archivos que necesita se encuentran aquí: http://codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx
Después de descargarlos, inicie la instalación y acepte el acuerdo de licencia.
El siguiente paso es seleccionar dónde instalar las muestras. Después de seleccionar la instancia de instalación de SQL Server, puede dejar todo lo demás en los valores predeterminados. Presione Instalar.
Una vez completado el proceso, tendrá instalada una base de datos de Analysis Services. Ahora tiene que configurar la base de datos de Analysis Services. Para ello, vaya a C:\Archivos de programa\Microsoft SQL Server\100\Tools\Samples\AdventureWorks 2008 Analysis Services Project. En función de la versión del servidor SQL, necesita la carpeta enterprise (para versiones enterprise o developer) o la carpeta standard. Hay un archivo de Adventure Works.sln en ellos y debes abrirlo. Tenga en cuenta que debe tener derechos de usuario elevados cuando lo haga.
Cuando se abre el proyecto con el BI Development Studio, solo tiene que hacer clic con el botón derecho en la solución y presionar Implementar. Con esto concluye la instalación de la base de datos de ejemplo.
Si no ha cambiado el usuario predeterminado que inicia la aplicación olap en IIS o ha seleccionado una cuenta que es diferente de la cuenta de aprovisionamiento (la que eligió al instalar el servidor SQL), debe conceder los permisos adecuados en este momento. Para ello, abra SQL Management Studio y conéctese a la base de datos de análisis. Vaya a la base de datos de Adventure Works DW y haga clic con el botón derecho en la carpeta Roles. Seleccione un nuevo rol, asígnele un nombre y establezca el nivel de acceso que desea proporcionar a través del acceso HTTP XMLA.
Después de seleccionar los permisos para este rol, haga clic en Pertenencia y agregue el usuario que desea poder conectar al servicio de análisis. En el caso predeterminado, el usuario que ejecuta la aplicación olap en IIS se denomina IUSR. Agregarlo debería ser suficiente si no lo ha cambiado en la sección Autenticación que se describió anteriormente en este tutorial.
Infragistics PivotGrid demo
Antes de comenzar a construir nuestra aplicación básica con el Infragistics PivotGrid, debemos asegurarnos de que la aplicación Silverlight pueda comunicarse con la interfaz XMLA que hemos creado (el problema entre dominios). Esto está garantizado por la llamada política de acceso de clientes. Puede leer más sobre las restricciones de acceso a la seguridad de la red en Silverlight aquí: http://msdn.microsoft.com/en-us/library/cc645032%28VS.95%29.aspx
La solución al problema de los dominios cruzados es simplemente crear un archivo de texto llamado clientaccesspolicy.xml en la raíz del servidor web. Tenga en cuenta que esta no es la carpeta donde está el motor XMLA, sino la carpeta / (raíz) de todo el servidor web. Ejemplo de su contenido es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Finalmente, cuando tengamos los datos y los medios para acceder a ellos, podemos comenzar a construir nuestra demostración Infragistics PivotGrid.
Cree un proyecto Silverlight. Ni siquiera cree un proyecto ASP host, solo Silverlight. Antes de mostrarle el código, debe agregar tres referencias de ensamblado.
Infragistics.Silverlight.DataVisualization.Olap.Preview.v10.1 Infragistics.Silverlight.DataVisualization.Olap.Xmla.Preview.v10.1 Infragistics.Silverlight.DataVisualization.PivotGrid.Preview.v10.1 Infragistics.Silverlight.DataVisualization.v10.1 Infragistics.Silverlight.DataVisualization.XamWebTree.Preview.v10.1
If you don’t already have them you can download the CTP version from this address: http://es.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Downloads Look for the Betas section and “NetAdvantage for Silverlight Data Visualization CTP (November 2009)”. The downloaded file is a zip and you can find the assemblies under the NetAdvantage_DataVisualization_2010.1\Bin folder.
Cuando hayamos hecho eso, debemos agregar las referencias de espacio de nombres en nuestro XAML.
xmlns:igPivot="clr-namespace:Infragistics.Silverlight.Controls;assembly=Infragistics.Silverlight.DataVisualization.PivotGrid.Preview.v10.1"
xmlns:Olap="clr-namespace:Infragistics.Olap;assembly=Infragistics.Silverlight.DataVisualization.Olap.Preview.v10.1"
xmlns:Xmla="clr-namespace:Infragistics.Olap.Xmla;assembly=Infragistics.Silverlight.DataVisualization.Olap.Xmla.Preview.v10.1"
Finalmente, estamos listos para codificar el cuerpo de nuestra muestra.
<StackPanel x:Name="LayoutRoot" Orientation="Horizontal" >
<StackPanel.DataContext>
<Olap:OlapViewModelCreator>
<Xmla:XmlaConnectionSettings
ServerUrl="http://localhost/olap/msmdpump.dll"
CatalogName="Adventure Works DW" />
</Olap:OlapViewModelCreator>
</StackPanel.DataContext>
<igPivot:XamWebPivotGrid x:Name="pivotGrid"
ViewModel="{Binding ViewModel}"
LayoutData="{Binding ViewModel.Result}" />
<igPivot:XamWebPivotDataSelector Grid.Column="1" ViewModel="{Binding ViewModel}" />
</StackPanel>
Necesitamos agregar una línea al constructor para cargar los datos tan pronto como se cargue la aplicación. Estoy usando la expresión lambda solo para acortar el código.
this.Loaded += (sender, e) => { pivotGrid.ViewModel.LoadCubesAsync(); };
Las cuatro partes clave de este código son las siguientes:
1. Especificamos la configuración de conexión en el DataContext de nuestro LayoutRoot.
2. El control principal de PivotGrid. Sus ViewModel y LayoutData se extraen de DataContext.
3. Un PivotDataSelector nos permite elegir qué datos debe mostrar el PivotGrid.
4. El método LoadCubes carga datos desde el servidor que hemos especificado en la configuración de conexión.
Todo lo que queda ahora es probar nuestra creación. Presione F5, seleccione un cubo para comenzar, arrastre y suelte columnas, filas, medidas y filtros y juegue con PivotGrid 🙂
Espero que este artículo te haya resultado útil y hayas disfrutado de su lectura. Si tiene alguna pregunta o simplemente desea dejar comentarios, no dude en preguntar o dar su opinión. ¡Mucha suerte con tus experiencias con PivotGrid y que tengas un gran día!