2010-11-01 16 views
10

Estoy buscando una manera de obtener información de versiones de mis informes de SSRS. Tengo varios entornos y me gustaría poder comparar qué versión de informe se implementa en estos entornos. En SSIS, esto es muy fácil porque cada paquete SSIS obtiene una nueva versión cuando se modificó y se protegió. ¿Hay algo similar a los informes?SSRS Reports Versioning

Respuesta

9

Desafortunadamente, actualmente no existe una funcionalidad incorporada similar a una versión de ensamblaje dll para archivos RDL.

La única forma de obtener algún tipo de información sobre la versión es consultar la última fecha de modificación del archivo RDL en el servidor a través de C# o VB.Net. Puede hacer esto usando el servicio web ReportingServices.

También podría implementar una función personalizada que actualice algún campo en su base de datos a la fecha actual cada vez que se modifique el archivo RDL.

El problema con toda la información de archivo modificado: Aún no se sabe qué versión está en qué servidor, solo se sabe cuándo se cargó/modificó.

Consulte las páginas siguientes para obtener algo más de información - por desgracia no hay solución:

+1

Muchas gracias por sus comentarios, me preocupaba que pudiera ser así. A veces es difícil entender por qué MSFT es tan intrascendente en el diseño de sus productos, pero así es la vida. :) – nojetlag

+2

no me inicie - SSRS no es la única creación que no concuerda con las mejores prácticas ;-) –

4

En mis informes, se crea una variable llamada versión y convertirla en una cadena de datos escriba (y muévalo a la parte superior de la lista de variables). Cada vez que cambio un informe, actualizo la variable Versión según Semantic Versioning.

Luego, puedo consultar mi servidor de informes y mirar el campo de parámetros de la tabla ExecutionLog y puedo ver qué versión se ejecutó. Técnicamente, me ocupo de todo esto en un trabajo de SSIS que se escribe en otra tabla, pero eso está un poco fuera del alcance aquí.

+1

En nuestros informes, también creé una variable de versión, pero establecemos su valor en $ Revsion $. CVS o SVN (y creo que GIT) actualizarán automáticamente este valor cada vez que se realice una nueva revisión. Esta es una forma rápida y fácil de identificar la versión de la RDL sin mantenerla manualmente. –

+1

@CorryS, sé cómo usar accesorios automáticos SVN ..¿Pero cómo lo leíste y lo configuraste en una variable? – Nayak

0

Parece que todavía no hay una buena solución. Si crea un Parámetro oculto "Versión" con un valor predeterminado, puede usar una Tarea de compilación para modificar su valor en el archivo .rdl, p. la parte de revisión con el número de conjunto de cambios de control de origen. Lamentablemente es posible que necesite otro Visual Studio Project para colocar esta tarea de compilación ya que el tipo de proyecto de informes no parece ser capaz.

También puede crear un código en línea o un ensamblaje que pueda hacer algunas búsquedas.

alternativa subóptima barato: utilizará la última fecha de modificación forman la base de datos de informe:

Select 
    Name, 
    Path, 
    CreationDate, 
    ModifiedDate, 
    ModUser.UserName AS ModUser, 
    CAST(catalog.parameter as xml).value(/Parameters[1]/Parameter[Name="Version"][1]/Values[1]/Value[1]','NVARCHAR(20)') as Version 
    FROM Reportserver.dbo.Catalog 
    INNER JOIN ReportServer.dbo.Users ModUser on Moduser.UserID = ModifiedByID 
    WHERE Type = 2 

y convertir la fecha a un número de revisión ... ayuda doesen't con versiones a través de diferentes instancias del servidor sin embargo.