versión - ¿Puede PowerShell secuenciar los archivos RDL de SQL Server Reporting Services?
los permisos otorgados al usuario son insuficientes para realizar esta operación rsaccessdenied (4)
PowerShell no proporciona ninguna funcionalidad nativa, PowerShell-esque para esto, no. Puede hacer esto en PowerShell (como se indicó en la respuesta anterior) solo porque PowerShell puede acceder a las clases subyacentes de Framework. Como anotó en su comentario a la respuesta anterior, no es diferente de usar la API en C # o VB.
El equipo de SQL Server aún no ha proporcionado mucho en el camino de cosas específicas de PowerShell. Principalmente se basan en .NET y T-SQL como "lenguajes de scripting".
¿Es posible utilizar PowerShell para crear secuencias de comandos de los archivos rdl de SQL Server Reporting Services en SQL Server 2008? Si es así, ¿alguien puede proporcionar un ejemplo de código para hacer esto? Este sería un reemplazo útil para usar una herramienta de terceros para crear secuencias de comandos de archivos RDL creados por usuarios comerciales fuera de mi departamento de Business Intelligence.
ACLARACIÓN DEL TÉRMINO "SCRIPT OUT"
Al decir "script out", quiero decir que me gustaría generar automáticamente el archivo RDL subyacente para cada informe en el servidor. Por ejemplo, cuando codifica el informe en BIDS, está generando un archivo RDL. Cuando implementa el archivo en el servidor, el archivo se importa de alguna manera en la base de datos de SQL Server ReportServer y ya no es un archivo RDL físico separado. Me gustaría extraer todos los informes del servidor en un formato de archivo RDL.
Utilicé la herramienta RSScripter para extraer los informes como archivos RDL, por lo que sé que es posible usar herramientas que no sean PowerShell. Me gustaría saber específicamente si es posible hacerlo con PowerShell y, de ser así, obtener una muestra del código para hacerlo.
ACLARACIÓN SOBRE POR QUÉ QUIERO GENERAR VERSIONES RDL DE INFORMES
¿Por qué es importante "guiar" los informes a los archivos RDL? Me gustaría registrar los archivos RDL en mi sistema de control de origen una vez por noche para hacer un seguimiento de todos los informes creados por usuarios fuera de mi departamento de Business Intelligence. Ya llevo un registro de todos los informes generados por mi departamento desde que desarrollamos nuestros informes en BIDS, pero no puedo seguir el historial de versiones en los informes creados en la herramienta en línea Creador de informes.
ACLARACIÓN DE POR QUÉ POWERSHELL Y NO ALGO MÁS
Curiosidad. Tengo un problema que sé que se puede resolver por uno de dos métodos (API o RSSCripter) y me gustaría saber si se puede resolver con un tercer método.
Oportunidad de ampliar mi toolbet de solución de problemas a través de PowerShell. Usar PowerShell para resolver este problema puede proporcionar la base para aprender a usar PowerShell para resolver otros problemas que aún no he intentado resolver.
PowerShell es más fácil de entender para mi equipo y para mí. En general, los miembros de mi equipo y yo podemos entender el código de PowerShell más fácilmente que el código .NET. Aunque sé que este problema se puede resolver con algún código .NET utilizando la API (así es como funciona RSScripter después de todo), creo que será más fácil para nosotros codificar y mantener un script de PowerShell. También me doy cuenta de que una secuencia de comandos de PowerShell probablemente usará el código .NET, pero espero que PowerShell ya pueda tratar los informes como objetos de alguna manera, así no tendré que usar la API de Reporting Services para extraer los archivos.
RSScripter aún no es compatible con 2008. En el pasado, he usado RSScript para crear informes de informes. Desafortunadamente, no parece ser compatible con 2008 todavía. Esto significa que tengo que escribir código en contra de la API en este momento, ya que es la única forma en que presento saber cómo extraer los archivos de forma automatizada y sin supervisión.
Me acabo de dar cuenta de que la columna Contenido en el ReportServer.dbo.Catalog contiene la definición en un formato de imagen. Escribí el siguiente código para convertirlo a texto legible:
SELECT CONVERT(VARCHAR(MAX), CONVERT(NVARCHAR(MAX), CONVERT(XML, CONVERT(VARBINARY(MAX), Content))))
FROM [ReportServer].[dbo].[Catalog]
WHERE Type = 2
Con el código anterior, ahora puedo automatizar la escritura de los resultados en un archivo plano y luego importar el archivo en mi sistema de control de versiones.
un poco tarde, pero aquí tienes
Este script de PowerShell: 1. Se conecta con su servidor de informes 2. Crea la misma estructura de carpetas que tiene en su Servidor de informes 3. Descargue todos los archivos de Definición de informes de SSRS (RDL) en sus respectivas carpetas
Cualquier cosa que admita .Net puede hacer esto. Consulte esta publicación de para algunos enlaces a los documentos API. El proceso es bastante sencillo: la API tiene una llamada para cargar o descargar el archivo .rdl.
Los modelos de informes son un poco más complicados. Debe obtener los informes dependientes (nuevamente, una llamada API) y volver a conectar la fuente de datos si carga un nuevo modelo de informe. De nuevo, no terriblemente extenuante.
Powershell debería hacer esto bien. He hecho varias cosas con IronPython y C #. También hay una herramienta llamada rs.exe que toma un script vb.net, lo encabeza y lo combina con algunos includes y compila y lo ejecuta detrás de las escenas.