2012-09-13 14 views
6

He estado buscando e intentando durante horas obtener una consulta que me proporciona todas las suscripciones actuales de un servidor SSRS con parámetros y sus valores, para que puedan recrearse en una nuevo servidor (después de la poda).Consulta para obtener la lista de todas las suscripciones a SSRS con los parámetros

Por ejemplo, un simple informe podría ser HoursByDepartment que tiene tres parametros:

@From =Today - 7 days (Default) 
@To = Today (Default) 
@Dept = 2 (part of subscription) 

Lo que quiero conseguir es algo a lo largo de estas líneas (o algo que me deja crear un informe)

Report   ParamName ParamValue Default 
HoursByDepartment From  Today-7days True 
HoursByDepartment To   Today   True 
HoursByDepartment Dept  2    False 

O

Report    Param1Name Param1Value Param1Def Param2Name Param2Value Param2Def  
HoursByDepartment From   Today-7days True  To   Today   True 

soy bastante bueno con XSL, por lo que si podría conseguir algo lik E, que podía trabajar con él:

<subid> 
    <report> 
     <ParameterValues> 
      <ParameterValue> 
       <Name>MinAvailable</Name> 
       <Value>10000</Value> 
      </ParameterValue> 
      <ParameterValue> 
       <Name>OwnerIDs</Name> 
       <Value>0</Value> 
      </ParameterValue> 
      <ParameterValue> 
       <Name>ShowCosts</Name> 
       <Value>False</Value> 
      </ParameterValue> 
      <ParameterValue> 
       <Name>MinValue</Name> 
       <Value>0</Value> 
      </ParameterValue> 
     </ParameterValues> 
    </report> 
</subid> 

Respuesta

4

Este script se debe bajar a un buen comienzo. Esta consulta arrojará una fila para cada parámetro para cada suscripción de informe, o solo una fila para las suscripciones que no utilizan parámetros. Puede que tenga que volver a trabajar el script para obtenerlo en formato xml si prefiere transformarlo.

Esto se deriva de Listing Subscribed SSRS Reports including Parameters & their Values (No está seguro de qué parte de la original que he cambiado, en todo caso.)

WITH 
[Sub_Parameters] AS 
(
SELECT 
[SubscriptionID], 
[Parameters] = CONVERT(XML,a.[Parameters]) 
FROM [Subscriptions] a 
), 
[MySubscriptions] AS 
(
SELECT DISTINCT 
[SubscriptionID], 
[ParameterName] = QUOTENAME(p.value('(Name)[1]', 'nvarchar(max)')), 
[ParameterValue] = p.value('(Value)[1]', 'nvarchar(max)') 
FROM 
[Sub_Parameters] a 
CROSS APPLY [Parameters].nodes('/ParameterValues/ParameterValue') t(p) 
), 
[SubscriptionsAnalysis] AS 
(
SELECT 
a.[SubscriptionID], 
a.[ParameterName], 
[ParameterValue] = 
(SELECT 
STUFF(( 
SELECT [ParameterValue] + ', ' as [text()] 
FROM [MySubscriptions] 
WHERE 
[SubscriptionID] = a.[SubscriptionID] 
AND [ParameterName] = a.[ParameterName] 
FOR XML PATH('') 
),1, 0, '') 
+'') 
FROM [MySubscriptions] a 
GROUP BY a.[SubscriptionID],a.[ParameterName] 
) 
SELECT 
a.[SubscriptionID], 
c.[UserName] AS Owner, 
b.Name, 
b.Path, 
a.[Locale], 
a.[InactiveFlags], 
d.[UserName] AS Modified_by, 
a.[ModifiedDate], 
a.[Description], 
a.[LastStatus], 
a.[EventType], 
a.[LastRunTime], 
a.[DeliveryExtension], 
a.[Version], 
e.[ParameterName], 
LEFT(e.[ParameterValue],LEN(e.[ParameterValue])-1) as [ParameterValue], 
SUBSTRING(b.PATH,2,LEN(b.PATH)-(CHARINDEX('/',REVERSE(b.PATH))+1)) AS ProjectName 
FROM 
[Subscriptions] a 
INNER JOIN [Catalog] AS b 
ON a.[Report_OID] = b.[ItemID] 
LEFT OUTER JOIN [Users] AS c 
ON a.[OwnerID] = c.[UserID] 
LEFT OUTER JOIN [Users] AS d 
ON a.MODIFIEDBYID = d.Userid 
LEFT OUTER JOIN [SubscriptionsAnalysis] AS e 
ON a.SubscriptionID = e.SubscriptionID; 

Sin embargo, si se trata de una actualización de 2005 a 2008, es posible que desee considerar using this tool . Si está eliminando SSRS de este servidor y se está mudando a un servidor diferente utilizando la misma versión, es mejor que mueva todas las bases de datos de reportserver y reportservertempdb como explained by Microsoft here.

+0

gracias dev_etter, la consulta es muy potente para las suscripciones de SSRS, siendo la modificación de los parámetros ... pero gracias de nuevo ... – Bharat

+0

@Bharat ¿Ha descubierto la consulta que se utilizará para obtener la lista de parametros con los valores que en la pregunta . También estoy buscando lo mismo y sería bueno si lo compartes aquí como respuesta [ya que este hilo no tiene ninguna respuesta] –

+0

@JibinMathew: Sí, pero tengo requisitos limitados en ese momento, encuentra mi respuesta aquí: https://stackoverflow.com/questions/36495578/how-to-get-all-ssrs-subscription-data-using-stored-procedure/36495756#36495756 – Bharat

Cuestiones relacionadas