2012-09-13 8 views
6

Sto cercando e provando per ore per ottenere una query che mi dà tutte le sottoscrizioni correnti da un serv SSRS con parametri e relativi valori, in modo che possano essere ricreati su un nuovo server (dopo la potatura).Query per ottenere l'elenco di tutte le sottoscrizioni SSRS con parametri

Per esempio un semplice report potrebbe essere HoursByDepartment che prende tre params:

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

Quello che voglio ottenere è qualcosa in questo senso (o qualcosa che mi permette di creare un rapporto)

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 

sono abbastanza buono con XSL, quindi se ho potuto ottenere qualcosa di lik e, potrei lavorare con questo:

<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> 

risposta

4

Questo script dovrebbe farti iniziare bene. Questa query restituirà una riga per ciascun parametro per ciascuna sottoscrizione di report o solo una riga per le sottoscrizioni che non utilizzano parametri. Potrebbe essere necessario rielaborare lo script per ottenerlo in formato xml se preferisci trasformarlo.

Questo deriva da Listing Subscribed SSRS Reports including Parameters & their Values (non so quanto l'originale ho cambiato, se non altro.)

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; 

Tuttavia, se questo è un aggiornamento da 2005 al 2008, si può prendere in considerazione using this tool . Se si rimuove SSRS da questo server e si passa a un server diverso con la stessa versione, è possibile che sia meglio spostare l'intero server dei report e i database reportservertempdb come explained by Microsoft here.

+0

grazie dev_etter, la query è molto potente per gli abbonamenti ssrs, continua a modificare i parametri ... ma grazie ancora ... – Bharat

+0

@Bharat Hai capito la query da utilizzare per ottenere l'elenco di parametri con i valori come in la domanda . Sto anche cercando lo stesso e sarebbe bello se lo condividessi come risposta qui [poiché questa discussione non ha ancora alcuna risposta] –

+0

@JibinMathew: Sì, ma ho un requisito limitato in quel momento, trova la mia risposta qui: https://stackoverflow.com/questions/36495578/how-to-get-all-ssrs-subscription-data-using-stored-procedure/36495756#36495756 – Bharat

Problemi correlati