2010-11-01 21 views
10

Szukam sposobu na usunięcie informacji o wersji z moich raportów SSRS. Mam kilka środowisk i chciałbym móc porównać, która wersja raportu jest wdrożona w tych środowiskach. W SSIS jest to bardzo łatwe, ponieważ każdy pakiet SSIS otrzymuje nową wersję, gdy została zmodyfikowana i zabezpieczona. Czy jest coś podobnego do raportów?Raporty SSRS Versioning

Odpowiedz

9

Niestety, obecnie nie ma wbudowanej funkcjonalności podobnej do wersji zestawu dll dla plików RDL.

Jedynym sposobem uzyskania informacji o wersji jest zapytanie o ostatnią datę modyfikacji pliku RDL na serwerze za pośrednictwem C# lub VB.Net. Możesz to zrobić za pomocą usługi sieci ReportingServices.

Można również zaimplementować funkcję niestandardową, która aktualizuje niektóre pola w bazie danych do bieżącej daty za każdym razem, gdy plik RDL jest modyfikowany.

Problem ze wszystkimi zmodyfikowanymi informacjami o pliku: Nadal nie wiesz, która wersja jest na jakim serwerze, po prostu wiesz, kiedy została załadowana/zmodyfikowana.

zobacz następujące strony na trochę więcej informacji - niestety żadnego rozwiązania:

+1

Wielkie dzięki za opinię, martwiłem się, że może tak być. Czasami trudno zrozumieć, dlaczego MSFT jest tak niekonsekwentny w projektowaniu swoich produktów, ale takie jest życie. :) – nojetlag

+2

nie zaczynaj mnie - SSRS nie jest jedynym pomysłem, który jest niezgodny z najlepszymi praktykami ;-) –

4

W moich raportach utworzyć zmienną o nazwie Wersja i uczynić z niego dane ciąg wpisz (i przenieś do góry listy zmiennych). Za każdym razem, gdy zmieniam raport, aktualizuję zmienną Wersja na podstawie Semantic Versioning.

Następnie mogę zapytać mój serwer raportów i spojrzeć na pole parametru tabeli ExecutionLog i widzę, jaka wersja została uruchomiona. Technicznie zajmę się tym wszystkim w pracy SSIS, która zapisuje do innej tabeli, ale to trochę poza zakresem tutaj.

+1

W naszych raportach stworzyłem także zmienną Wersja, ale ustawiliśmy jej wartość na $ Revsion $. CVS lub SVN (i myślę, że GIT) automatycznie zaktualizuje tę wartość za każdym razem, gdy zostanie zatwierdzona nowa wersja. Jest to szybki i łatwy sposób zidentyfikowania wersji RDL bez ręcznego jej utrzymywania. –

+1

@CorryS, Wiem, jak używać rekwizytów Auto SVN ..Ale skąd właściwie to przeczytałeś i ustawiłeś w zmiennej? – Nayak

0

Nadal nie ma dobrego rozwiązania. Jeśli utworzysz ukryty parametr "Wersja" z wartością domyślną, możesz użyć zadania kompilacji, aby zmodyfikować jego wartość w pliku .rdl, np. część rewizyjną z numerem zestawu zmian kontroli źródła. Niestety może być potrzebny inny projekt Visual Studio, aby umieścić to zadanie kompilacji, ponieważ typ projektu raportowania nie jest w stanie.

Można także utworzyć kod wbudowany lub zespół, który może wykonać wyszukiwanie.

Tanie suboptimal alternatywa: Użyj ostatnia data modyfikacji tworzą bazę danych raportu:

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 

i konwertować datę do numeru wersji ... doesen't pomoc w różnych wersjach instancji serwera chociaż.