This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

Integración de Reporting Services con SharePoint (III)

Hace unos meses (abril del año pasado) mi compañero Pablo Sousa escribía dos posts muy buenos sobre la integración de SQL Server Reporting Services (SSRS) y SharePoint (tanto WSS 3.0 como MOSS). En estos posts, Pablo nos explicaba por una parte los pasos configurar SSRS con el SP2 de SQL Server instalado y que permite la integración de SSRS y SharePoint. Además, en este primer post se detallaba las configuraciones necesarias del servidor de SharePoint. En el segundo de los post, Pablo explicaba como crear informes en el entorno de SharePoint gracias a la infraestructura de content types y features que se crean al instalar los Add-In específicos de SSRS para SharePoint. La idea de este post es ir un poco más allá y mostrar como aparecen implementadas en SharePoint funcionalidades típicas del gestor de informes de SSRS: el Report Manager. En particular, os mostraré como crear suscripciones en el entorno de SharePoint, aspectos relativos a la seguridad y otros. Empecemos.

Tipos de Integración y...un poco de arquitectura

Antes de meternos en materia, no está de más recordar que hay dos tipos de integración entre SSRS y SharePoint:

  • Visualizar informes en modo no integrado mediante las web parts de SSRS para Sharepoint. El problema de estas web parts (que he podido experimentar) es que son las implementadas para WSS 2.0, y aunque en teoría deberían funcionar perfectamente en WSS 3.0 (por aquello de la famosa compatibilidad entre las web parts de ambas versiones), pues resulta que la conexión entre la Report Explorer Web Part y la Report Viewer Web Part peta de lo lindo.
  • Visualización, diseño y creación de informes en modo integrado a partir de la integración entre SSRS y SharePoint que habilita el SP2 de SQL Server: gestión de informes, interacción, modelo de seguridad de WSS 3.0 aplicado a informes, gestión de suscripciones, etc. Sin embargo, en el modo integrado se pierden algunas de las características típicas de SSRS como por ejemplo el modelo de seguridad basado en roles o la posibilidad de definir informes vinculados a partir de un informe origen.

Lógicamente, en este post estamos en todo momento trabajando con el segundo tipo de integración caracterizada entre otros por estos puntos:

  • SharePoint es la interfaz unificada de gestión y visualización
  • Informes guardados en librerías: ofrecen versionado, aplicación de workflows, check-in, check-out, etc.
  • Los informes se guardan en la BD de contenidos de SharePoint y se sincronizan automáticamente con BD de Reporting
  • Las funciones de planificación y suscripciones siguen estando en la BD de Reporting
  • Estructura y seguridad propia de SharePoint
  • Report Viewer Web Part: visor de informes, filtrado…esta web part si está implementada de acuerdo al nuevo modelo de ASP.NET 2.0 en el que se basa WSS 3.0 y es mucho más potente que su precedesora.
image

Lógicamente para que todo esto sea posible, es necesaria una cierta arquitectura de integración entre SSRS y SharePoint. En la misma, SharePoint hace las veces del Report Manager en un escenario no integrado y el servidor de SSRS hace el papel de Report Server, es decir, se encarga de la ejecución, renderizado, etc de informes.

 

Básicamente esta arquitectura aporta las características y prestaciones ya comentadas: Almacenar los elementos y propiedades de un informe en las bases de datos de contenido de SharePoint permite buscar en las bibliotecas de SharePoint tipos de contenido del servidor de informes, proteger elementos con los mismos niveles de permiso y proveedor de autenticación que controla el acceso a otros documentos de la empresa alojados en un sitio de SharePoint, usar las características de colaboración y administración de documentos para proteger y desproteger informes para su modificación, usar alertas para descubrir si se ha modificado algún elemento, e incrustar o personalizar el elemento Web Visor de informes en las páginas y sitios de la aplicación. Si dispone de suficientes permisos en un sitio de SharePoint, también puede generar modelos de informe a partir de orígenes de datos compartidos y usar el Generador de informes para crear informes.

Creación de suscripciones a informes en SharePoint

La gestión de suscripciones a informes se realiza a dos niveles (de acuerdo a como estructura la información SharePoint):

  • A nivel de biblioteca de informes (Report Library).
  • A nivel de informe.

Como ocurre con el Report Manager de SSRS, para poder crear suscripciones a informes de manera que estos se entreguen en una cierta ubicación en un cierto instante de tiempo, es necesario que las credenciales de ejecución (usuario y contraseña) del informe estén almacenadas en la BD de Report Server, en la BD master, en la BD msdb y en la BD dónde están los datos en los que se basa el informe. Estas credenciales las podemos crear directamente y de manera visual a través de SQL Server Management Studio o bien con vía script ejecutando el procedimiento almacenado sp_adduser en la BD master y luego asegurarnos que en cada una de las BD's comentadas estas credenciales tiene permisos de lectura. Si utilizamos sp_adduser:

use master
exec sp_addlogin @loginame='ReportExecution', @passwd='pass@word1'

use rs2005sbsDW
exec sp_adduser @loginame='ReportExecution', @grpname='db_datareader'

Una vez que tenemos almacenadas las credenciales en las BD's comentadas, ya estamos listos para crear nuestra primera suscripción. Para crear una suscripción para un cierto informe, nos vamos a la biblioteca (idealmente una Report Library que hemos configurado con los content types de reporting adecuados) y para un cierto informe veremos que la integración de SSRS con SharePoint nos ofrece entre otras opciones la de Manage Subscriptions, la seleccionamos y seremos redirigidos a una nueva pantalla que nos permite añadir una suscripción a través de Add Subscription, la pulsamos y sorpresa...nos sale un mensaje de error en el que se nos informa (al igual que ocurre en un escenario típico de SSRS con el Report Manager) que: No es posible crear suscripciones puesto que las credenciales no están almacenadas. Proporcione credenciales para el report data source o contacte con el administrador

image image image

...aparentemente, el mensaje anterior no tiene sentido puesto que si que hemos creado unas credenciales almacenadas de manera segura en la BD...pero, el mensaje es correcto puesto que no hemos especificado que el data source en el que se basa el informe utilice dichas credenciales para la generación del informe...pues nada, vuelta atrás a la biblioteca de formularios y en este caso pulsamos sobre la opción Manage Data Sources que nos llevará al listado de data sources vinculados al informe. En este caso, sólo tenemos uno, lo pulsamos y seremos redirigidos a la página de detalle del data source en la que podremos especificar que las credenciales de ejecución estén almacenadas en la BD y el valor de las mismas (por defecto, el data source tiene la configuración de ejecución especificada en su creación y que en este caso es Windows Authentication):

image image image

En este caso hemos especificado para las credenciales:

  • La opción Stored Credentials y especificamos:
    • User Name: ReportExecution.
    • Contraseña: pass@word1.

Tras pulsar OK, el informe se ejecutará utilizando las credenciales de acceso a datos que están guardados en la BD. Solucionado el problema de las credenciales, volvemos a la pantalla de Manage Suscriptions. Ahora al pulsar Add Subscription se debería abrir la página de configuración de suscripciones. En dicha pantalla especificamos los parámetros:

  • Delivery Type: Sharepoint Document Library. Podréis comprobar, que se admiten al menos otras dos posibilidades: Null Delivery Provider (para informes que se ejecutan con datos de caché) y File Share Provider (entregarlos en una cierta carpeta compartida). Si además en la configuración de SSRS hemos especificado un servidor SMTP válido, aparecerá la opción de entrega en una cuenta de correo electrónico.
  • Document Library: seleccionamos Shared Documents.
  • Output Format: por ejemplo, TIFF file. Otros posibles formatos de salida son:
  • Delivery Event: pulsamos el botón Configure y especificamos que queremos que el informe se genere de manera diaria y a una hora que sea 5 minutos más tarde que la actual.
image image image

Tras pulsar OK, en el listado de suscripciones aparece la suscripción creada:

image

Si refrescamos la pantalla después de que haya transcurrido el tiempo programado en la suscripción y veremos que su estado habrá cambiado y nos indicará que el informe se ha creado satisfactoriamente en la ubicación especificada. Finalmente, comprobamos en la librería Shared Documents que se ha generado el informe en formato TIFF...como veis, crear una suscripción en SharePoint implica los mismos paso que en el Report Manager.

El modelo de seguridad de informes en SharePoint

Aunque ya lo he comentado, el modelo de seguridad que se aplica a los informes en la integración de SSRS con SharePoint no es el propio de SSRS (basado en roles), sino que se pierde y adopta el modelo propio de SharePoint: seguridad basada en niveles de permisos que a su vez son un conjunto de permisos individuales definidos por defecto en SharePoint (lectura, escritura, etc). A su vez, lo habitual es que definamos grupos de usuarios cada uno de los cuales tendrá un cierto nivel de permisos...por lo tanto, la filosofía a seguir a la hora de securizar la visualización y ejecución de informes es la propia de SharePoint para cualquier otro tipo de documentos o elemento de una lista...en este post ya se comentaron algunas buenas prácticas a seguir a la hora de definir grupos de usuarios en SharePoint.

Otras cosas que permite la integración de SSRS y SharePoint

Aparte de las características propias de la integración en cuanto a creación de data models y reports (bien mediante Report Builder o Visual Studio 2005), y lo comentado en cuanto a creación de suscripciones, nos encontraremos con que muchas de las funcionalidades propias del Report Manager están presentes en SharePoint:

  • Manage Parametes, que nos permitirá especificar valores por defecto para los parámetros del informe (si los tiene)o decidir que parámetros ocultar porque no nos interesa que el usuario los utilice para visualizar los resultados.
  • Manage Processing Options, que nos permite especificar el origen de los datos del informe: directamente de la BD (live data), de caché (están almacenados en vistas en la Temp DB de reporting) o bien en base a un snapshot...lógicamente las dos últimas opciones de procesado están pensadas para no penalizar la visualización de informes en escenarios con una alta concurrencia. Además, podremos especificar el timeout permitido y otros parámetros específicos relativos a la ejecución del informe en base a snapshots.
  • View Report History, en el que podremos ver el histórico de ejecución de informes cuando hemos definido que la opción de procesamiento sea snapshot. Desde esta pantalla podremos crear nuevos snapshots o borrar alguno de los existentes.
image

image
image image

Por supuesto, ante cualquier cambio realizado con estas opciones podremos visualizar el informe y comprobar el resultado.

image

Y para finalizar, os voy a comentar otra funcionalidad existente en el Report Manager y que también aparece en la integración de SSRS con SharePoint: Managed Shared Schedules, es decir, la opción de poder definir planificaciones compartidas entre distintos informes. Esta opción está disponible en las Site Settings del sitio de SharePoint y en la sección Reporting Services (creada al activarse la feature de Reporting Services):

image image image

Como vemos, y tal y como sucedía al crear una suscripción y especificar el momento de ejecución, para una planificación podremos especificar la frecuencia de la misma, la hora y fecha de inicio, cada cuantas semanas se repite, etc. De hecho, es precisamente al programa una suscripción cuando podemos utilizar estas planificaciones compartidas (opción On a shared schedule).

Y hasta aquí llega el tercer post de la serie de integración de SSRS con SharePoint. Esperamos que el post os haya resultado de utilidad.

Published 3/1/2008 21:54 por Juan Carlos González Martín

Comparte este post:

Comentarios

# re: Integración de Reporting Services con SharePoint (III)@ Friday, January 4, 2008 11:56 AM

Hola,

1º felicitaros por vuestro blog. Todos los post son muy interesantes y prácticas, además de que están perfectamente documentados y explicados.

Sólo quería comentaros que, al menos a mí, no cargan las imágenes de los 2 primeros posts de esta serie (Reporting Services).

Saludos

Serval

# re: Integración de Reporting Services con SharePoint (III)@ Friday, January 4, 2008 12:05 PM

Hola Serval!

Gracias....no eres el único al que le pasa el problema con las imágenes de los dos primeros posts...los puedes visualizar también en el portal de SharePoint de Gustavo Vélez:

www.gavd.net/.../spsv3_item.aspx

www.gavd.net/.../spsv3_item.aspx

Saludos

JC's

Juan Carlos González Martín

# re: Integración de Reporting Services con SharePoint (III)@ Monday, February 25, 2008 2:43 PM

Como configuro las busquedas en wss 3.0 mbaezag@hotmail.com

Gracias...

Marco

# re: Integración de Reporting Services con SharePoint (III)@ Tuesday, February 26, 2008 5:20 PM

Muy buenas Marco,

Para configurar las búsquedas en WSS 3.0 no tienes muchas opciones con la funcionalidad OOB. Desde un sitio de Services, Site Aactions ->Site Settings y luego Site Administration -> Search Visibility... y esto es lo que hay. Si quieres más potencia, sin duda necesitar Microsoft Search Server, para el que hay una versión Express y que se integra perfectamente con SharePoint y te da muchas más posibilidades de configuración de búsquedas: crawling, definición de scopes, resultados más manejables, etc.

Un saludo

JC's

Juan Carlos González Martín

# re: Integración de Reporting Services con SharePoint (III)@ Wednesday, November 5, 2008 7:22 PM

hola a todos este es uno de los portales que mas me a ayudado en el tema de configuracion de la integracion y todas las opciones disponible, ahora bien cuando trato de calendarizar una ejecucion de un reporte y que luego de esta ejecucion este se envie automaticamente por mail obtengo el siguiente error:

Failure sending mail: An error occurred within the report server database.

This may be due to a connection failure,

timeout or low disk condition within the database.

Mail will not be resent.

para mas detalles el job del SQL 2008 se ejecuta perfectamente y SMTP server tambien ya esta configurado tanto a nivel del SharePoint como a nivel del Reporting Server

espero sepan de alguna solucion desde ya muchisimas gracias

Pedro Coronel