2010-11-01 15 views
10

Sto cercando un modo per ottenere informazioni sulle versioni dai miei rapporti SSRS. Ho diversi ambienti e vorrei poter confrontare la versione del rapporto distribuita su questi ambienti. In SSIS questo è molto facile perché ogni pacchetto SSIS ottiene una nuova versione quando è stata modificata e protetta. C'è qualcosa di simile ai rapporti?Rapporti SSRS Versioning

risposta

9

Sfortunatamente al momento non esiste alcuna funzionalità integrata simile a una versione di assembly dll per file RDL.

L'unico modo per ottenere una sorta di informazioni sulla versione è di interrogare l'ultima data di modifica del file RDL sul server tramite C# o VB.Net. È possibile farlo utilizzando il servizio web ReportingServices.

È anche possibile implementare una funzione personalizzata che aggiorna alcuni campi nel database alla data corrente ogni volta che il file RDL viene modificato.

Il problema con tutte le informazioni sui file modificati: Non si sa ancora quale versione è su quale server, è sufficiente sapere quando è stato caricato/modificato.

vedere le seguenti pagine per qualche informazione in più - purtroppo nessuna soluzione:

+1

Grazie mille per il vostro feedback, ero preoccupato che potesse essere così. A volte è difficile capire perché MSFT sia così inconsueto nel progettare i loro prodotti, ma questa è la vita. :) – nojetlag

+2

non farmi iniziare - SSRS non è l'unico ingegno che è incoerente con le migliori pratiche ;-) –

4

nei miei rapporti, creo una variabile denominata versione e ne fanno un dati string digita (e spostalo in cima alla lista delle variabili). Ogni volta che cambio un rapporto, aggiorno la variabile Version in base a Semantic Versioning.

Quindi, posso interrogare il mio server di report e guardare il campo Parametro della tabella ExecutionLog e posso vedere quale versione è stata eseguita. Tecnicamente mi prendo cura di tutto questo in un lavoro SSIS che scrive su un'altra tabella, ma qui è un po 'fuori dagli schemi.

+1

Nei nostri rapporti ho anche creato una variabile Version, ma abbiamo impostato il suo valore su $ Revsion $. CVS o SVN (e penso GIT) aggiorneranno automaticamente questo valore ogni volta che viene eseguita una nuova revisione. Questo è un modo semplice e rapido per identificare la versione di RDL senza mantenerla manualmente. –

+1

@CorryS, so come usare i puntelli automatici SVN ..Ma come hai letto e impostato in una variabile? – Nayak

0

Sembra che non ci sia ancora una buona soluzione. Se si crea una "versione" dei parametri nascosti con un valore predefinito, è possibile utilizzare un'attività di compilazione per modificarne il valore nel file .rdl, ad es. la parte di revisione con il numero di changeset del controllo sorgente. Purtroppo potresti aver bisogno di un altro progetto visivo per Studio per posizionare questa attività di compilazione poiché il tipo di progetto di segnalazione sembra non essere in grado.

È inoltre possibile creare codice inline o un assembly che potrebbe eseguire una ricerca.

alternativa economica non ottimale: Utilizzare la data dell'ultima modifica formare la banca dati dei report:

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 

e convertire la data a un numero di revisione ... aiuto doesen't con le versioni attraverso istanze di server diverso però.