Nie wiem jak Ty ale strasznie nie lubie momentu, gdy przychodzę rano do firmy i dostaję na twarz informację. „Weź coś zrób bo [coś…] nam nie działa”.

Też tak masz?

Niestety jakiś czas temu taka sytuacja u mnie miała miejsce. Dotyczyło to raportów na usłudze Reporting Services. Pierwsze reakcja to wywołałem adres Reports Managera. Pewnie Cię to nie zaskoczy, nie było z tym najmniejszego problem. Czyli standardowo „U mnie działa”. Jednak była to prawda tylko w połowie.

Dlaczego w połowie?

Usługa raportująca w tym przypadku działa w trybie Scale-Out i składa się z dwóch instancji Reporting Services oraz load balancera (NLB). Po prostu kwestia szczęścia, trafiłem akurat na serwer na którym Reporing Services działał poprawnie.

Usług Reporting Services obsługuje skalowalny model wdrażania. tzw. Scale-Out Deployment . Umożliwia uruchamianie wielu instancji Reporting Services, które współużytkują pojedynczą bazę danych raportów.

Tego typu wdrożenia są używane w celu obsługi większej liczby jednoczesnych użytkowników i większych obciążeń związanych z wykonywaniem raportów. Może również służyć do dedykowania określonych serwerów do przetwarzania interaktywnych lub zaplanowanych raportów.

Ważne, tryb Scale-Out nie jest dostępny dla edycji Standard.

Pierwsze co zrobiłem to odłączenie na balancerze problematycznej instancji. Pozwoliło to na bez błędne dostarczanie usługi i spokojne szukanie gdzie tkwi problem.

Gdzie tkwił problem?

The version of the report server database is either in a format that is not valid, or it cannot be read. The found version is ‚165’. The expected version is ‚163’. (rsInvalidReportServerDatabase) Get Online Help

Powodem oczywiście nie było cannot be read. Przyczyną były instalacje poprawek a konkretniej Service Packa który spowodował podniesienie schematu bazy danych usługi Reporting Services. Jednak instalacja została wykonana tylko na jednym serwerze, drugi został pominięty.

Poniżej skrypty który przyda się do sprawdzenia zgodności wersji pomiędzy instancjami Reporting Services. Najważniejsza jest wartość Version, która musi być identyczna pomiędzy instanacjami Reporting Services.

Po zdiagnozowaniu brakujących poprawek, wykonałem ich instalacje. To rozwiązało problem i pozwoliło, że mogłem wrócić z usługą Reporting Services poprzez włączenie serwera z powrotem do clustra na balancerze (NLB).

Poniżej kilka przydatnych linków jeśli chcesz wiedzieć więcej na temat Reporting Services w trybie Scale-Out:
Configure a Native Mode Report Server Scale-Out Deployment
Scaling out Reporting Services & changes in SQL Server 2016
SCALE-OUT SSRS (A BRAIN DUMP)

Mateusz Nadobnik

Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.

read more