SSRS 2008 na W2K8. R2.

Piękny tytuł. Ogólnie chodzi o walkę z konfiguracją i spowodowanie działania SQL Server Reporting Services 2008 (R2) na Windows Server 2008 (również R2). Rozpoznanie bojem – uczymy się usługi i kierujemy się zasadą, że ma najpierw działać, a potem będziemy robić żeby było lepiej. Będzie nadal strzelanie skrótami.

Atak 1. Raport stworzony i działający w BIDS nie chce się osadzić (tak będzie po polsku „deploy”?) na serwerze.

„Nie chce się osadzić” może przyjmować różne znaczenia. U mnie to były:

1) Error „The permissions granted to user ‚…’ are insufficient for performing this operation”.

Na W2K8 nawet jeśli jesteś administratorem, uruchamiaj narzędzia jako administrator. Bo zakładam, że Tobie też wyskoczyło podczas pracy na W2K8.

2) Sypie mi błędami w oknie ‚Output’

Ustaw konfigurację projektu: Project > Properties, sekcja Deployment.

Podaj TargetServerURL w formacie http://NazwaSerwera/reportserver i dodatkowo możesz zaznaczyć nadpisywanie źródeł i zbiorów danych (OverwriteDataSources = True, OverwriteDatasets = True)

Atak 2. Nie ma takiej strony http://NazwaSerwera/reports

U mnie problem powodował zainstalowany IIS. Przekonfigurowanie usług na port 8080 i otwarcie go na firewallu pomogło.

Atak 3. Nie można podejrzeć raportów w IE pracując na serwerze (np. klikając link w Reporting Services Configuration Manager). Za każdym razem pyta o autoryzację, po trzecim razem przestaje i nie działa.

Pracując na serwerze uruchom IE jako administrator. Eskalacja uprawnień i takie tam.

Atak 4. Przestał ciągle pytać, ale mnie nie wpuszcza. Wyskakuje komunikat o braku uprawnień.

Jeśli jest to komunikat „User ‚…’ does not have required permissions. Verify that sufficient permissions have been granted and Windows User Account Control (UAC) restrictions have been addressed.” to musisz nadać użytkownikom uprawnienia. Utwórz grupę użytkowników na serwerze z SSRS i dodaj tych, którym chcesz dać dostęp. Potem wejdź do Report Managera (http://NazwaSerwera/reports) będąc zalogowanym na serwerze (pamiętaj, żeby uruchamiać IE jako administrator) i ustaw odpowiednie uprawnienia grupy do folderu z raportami (Folder Settings).

Atak 5. Nie można podejrzeć raportu w IE logując się z innego komputera. W FF działa

W skrócie: IE próbuje wykorzystać Kerberos do autoryzacji, a powinien NTLM. Wyciąć z konfiguracji fragment <RSWindowsNegotiate/> i zostawić tylko <RSWindowsNTLM/> w węźle Authentication/AuthenticationTypes. Konfiguracja jest w pliku rsreportserver.config.xml w katalogu {X}\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer gdzie {X} oznacza katalog z danymi SQL Servera.

Wszystko dokładnie wyjaśniono tu: http://www.localwisdom.com/blog/2009/10/ssrs-2008-not-authenticating-in-ie-but-works-in-firefox/

Atak 6. Jak zasubskrybować raport?

Jeśli pracujesz na FF, to nie zasubskrybujesz. Nie działają tam listy rozwijane przy raportach. Działa w IE.

Z powodu podejścia „ma działać w IE, a potem się zobaczy” działa tylko w IE. Żeby zadziałało w FF, trzeba edytować plik ReportServer.js, który znajduje się w katalogu {X}\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\js gdzie {X} oznacza katalog z danymi SQL Servera.

Zamieniłem całą zawartość pliku rozwiązaniem ze stackoverflow, przy czym ponieważ zgłaszało błąd po rozwinięciu menu zamieniłem kody funkcji firstChildNoWS(), lastChildNoWS() ich odpowiednikami z rozwiązania Roberta Heiniga II.

Atak 7. Mam parametry na raporcie. Jedna lista i dwa pola daty. Wybieram z listy – odświeża się. Wybieram datę – odświeża się. Po co?

Taka architektura SSRS. W uproszczeniu – parametry są traktowane jako zależne, jeśli dowolny z nich jest wyliczany dynamicznie. Nawet jeśli w parametrze daty jest wyrażenie =Now(). Rozwiązanie – wyliczać potrzebne dane w datasecie i przekazywać jako źródło wartości parametru.

Więcej: http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/6e5c4137-092f-4d54-a1a1-27730744074d

Atak 8. Parametr będący listą wartości powoduje zawieszenie IE (wersja 8) jeśli tych wartości jest dużo (u mnie zaczyna się psuć dla ~2000 wartości). Wiesza się też po wybraniu wartości podczas wczytywania danych.

Ze standardowych porad znalezionych w sieci – być może pomoże uruchomienie IE z wyłączonymi dodatkami, ale nie musi. Co ciekawe wyłączenie wszystkich dodatków spowodowało, że w na stronie innej aplikacji zawierającej kilka list wartości po kilkaset (a nawet kilka tysięcy!) zaczęło działać dobrze, a wcześniej IE wieszał się i powodował zajęcie procesora 98% zanim wczytał połowę. Tam jednak pola <select> były pozbawione stylów CSS, a w SSRS listy rozwijane są stylowane.

Inne wyjście to po prostu zrezygnować z gigantycznych list rozwijalnych.

Więcej np. tu: http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/ced5dbdb-fb75-4f5b-a552-5df32299c22f/
i tu: http://social.msdn.microsoft.com/Forums/hu-HU/sharepoint2010general/thread/72fb22d9-092f-4a44-b0bc-cca388ac55c3

[Dopisane następnego dnia rano] Okazuje się, że jest jednak rozwiązanie. Błąd leży w samym mechanizmie SSRS. Opisuje to Wayne Snyder oraz podaje rozwiązania.

Streszczając: bruździ kontrolka Report Viewera. Można to załatać na dwa sposoby. Pierwszy – ustawić dodatkowy parametr, doklejając do URLa raportu kawałek &rc:Toolbar=False – co w moim przypadku nie zadziałało. Jest jednak ostrzeżenie w oficjalnej dokumentacji, że to zadziała tylko dla adresów z nazwą, a nie po IP. W moim przypadku odwołuję się do adresu http://NazwaSerwera:8080/... i być może numer portu tu trochę przeszkadza.

Drugi sposób – zainstalować aktualizacje. Takie proste.

To tyle, jeśli chodzi o pierwszy dzień z SSRS. Ale w końcu najciekawiej jest jeśli coś nie idzie zgodnie z tutorialem, prawda?

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s