SQL Server Reporting Services 1/3

Tak ako v prípade relačnej databázy SQL Server 2008, inovácia neobišla ani Reporting Services 2008. V tejto časti nášho seriálu sa pokúsime odpovedať na otázku, či túto inováciu môžeme považovať za zásadnú alebo či sa jedná len o tzv. facelifting.

Škálovateľná architektúra
Jedným z problémov predchádzajúcej verzie Reporting Services bola nedostatočná škálovateľnosť pri generovaní reportov obsahujúcich väčšie množstvo dát – ak report pozostával zo stoviek strán, tak jeho rendering trval príliš dlho. Navyše pri väčšom množstve nasadených reportov často dochádzalo k problémom s nedostatkom pamäte Report servra, ktorý obsadil celú dostupnú pamäť servera na úkor ostatných aplikácií. A administrátori neboli práve najšťastnejší z nutnosti inštalácie Internet Information Servra len pre potreby Reporting Services.
Aj tieto nedostatky sú adresované v novej verzii Reporting Services, ktorá prináša od základu prepracovanú architektúru Report Servra – od natívnej podpory ASP.NET a HTTP.SYS, konsolidácie všetkých aplikácií Report Servera (web services Report Servra, Report Manager a ostatné úlohy bežiace na pozadí) do jednej služby, pridanie autentikačnej vrstvy, možnosť konfigurácie pamäte a end-to-end logovanie.


Obr. č.1 Architektúra Reporting Services 2008

Natívna podpora HTTP.SYS a ASP.NET
Požiadavka na odstránenie závislosti od webového servra IIS bola realizovaná implementovaním http listenera, ktorý odchytáva požiadavky prichádzajúce požiadavky smerované na HTTP.SYS, ktorý je súčasťou operačného systému. HTTP listener odchytené požiadavky presmeruje na autentikačnú vrstvu. Ak budete teda chcieť využívať Reporting Services 2008 bez Internet Information Services, tak budete musieť používať operačný systém so zabudovaným HTTP.SYS (Windows Server 2003 a vyšší).

Konsolidácia web služieb Reporting Services
Report Server pozostáva z nasledovných aplikačných komponentov –web služba samotného Report Servera určená pre interaktívne procesovanie reportov, Report Manager a úlohy, zabezpečujúce rendering a doručovanie reportov na pozadí. Všetky tieto komponenty sú teraz implementované ako Windows service, a teda sú spúšťané v rámci jedného procesu, zdieľajú kontext jedného užívateľského účtu, používajú tie isté konfiguračné súbory a pristupujú k jednej konfiguračnej databáze. Tieto aplikačné komponenty sú prevádzkované v samostatných aplikačných doménach, čiže je možné každú komponentu konfigurovať zvlášť a je možné nevyužívané komponenty vypnúť. Na druhej strane ale konfigurácia památe je spoločná pre celý Windows service. V prípade potreby je možné každý komponent nainštalovať do samostatnej inštancie a potom konfigurácia pamäte Windows service v každej inštancii zodpovedá konfigurácii príslušného aplikačného komponentu Report Servra.

Autentikácia
Nakoľko bola odstránená závislosť na IIS, bolo potrebné pre verifikovanie identity užívateľov dopracovať autentikačnú vrstvu priamo do Reporting Services. Autentikačná vrstva podporuje nasledovné spôsoby autentikácie:
•        Windows Integrated Security
•        NTLM
•        Basic
•        Forms
•        Custom authentication
•        Anonymous (podporovaná jedine prostredníctvom rozšírenia custom authentication)

Spôsob autentikácie sa nastavuje v konfiguračnom xml súbore RSReportServer.config:

<Authentication>
        <AuthenticationTypes>
                <RSWindowsNegotiate/>
        </AuthenticationTypes>
        <EnableAuthPersistence>
                true
        </EnableAuthPersistence>
</Authentication>

Konfigurácia pamäte
V prechádzajúcej verzii Report Server využíval celú dostupnú pamäť servera – Reporting Services 2008 umožňujú nastaviť veľkosť pamäte pre Report Server, a to dokonca nielen po jednotlivých aplikačných doménach (v prípade využívania viacerých inštancií), ale máme k dispozícii aj možnosť nastavenia spôsobu odozvy Report Servra na nedostatok pamäte. Nastavenie pamäte sa definuje v konfiguračnom súbore RSReportServer.config:

        <MemorySafetyMargin>80</MemorySafetyMargin>
        <MemoryThreshold>90</MemoryThreshold>
        <WorkingSetMaximum>4000000</WorkingSetMaximum>
        <WorkingSetMinimum>2400000</WorkingSetMinimum>

Parametrami WorkingSetMinimum a WorkingSetMaximum definujeme veľkosť pamäte, ktorú môže využívať Report Server. V našom prípade je minimum 2,4 GB a maximum 4 GB.


Obr. č.2 Konfigurácia pamäte Report Servera

Parametrami MemorySafetyMargin a MemoryThreshold môžeme definovať spôsob odozvy Report servera na nedostatok pamäte. Report Server sa správa podľa nasledovných pravidiel:



















Využitie pamäte
Spôsob odozvy Report Servera
Low
Existujúce požiadavky sú procesované, nové požiadavky sú väčšinou akceptované, požiadavkam na background processing je znížená priorita
Medium
Existujúce požiadavky sú procesované, nové požiadavky môžu byť akceptované, požiadavkam na background processing je znížená priorita. Veľkosť pamäte pre všetky aplikačné komponenty je redukovaná, najviac však pre background processing
High
Veľkosť pamäte je všetkým aplikačným komponentom ďalej redukovaná, ďalšie požiadavky aplikácií Report servera na pridelenie pamäte sú zamietnuté. Procesovane existujúcich požiadaviek je spomalené a nové požiadavky sú odmietnuté. Report Server môže swapovať dáta z pamäte na disk.



End-to-end logovanie

Všetky HTTP požiadavky smerované na Report Server (teda na všetky jeho aplikačné komponenty – Report Server web service, Report Manager, background processing) sú zaznamenávané do jedného logovacieho súboru ReportServerService_<timestamp>.log, ktorý je ekvivalentom IIS log súboru. Okrem toho je k dispozícii Report Server Execution Log uložený v databáze Report Servera, Report Server Service Trace Log obsahujúci detailné informáce použiteľné len pre prípadnú diagnostiku, Windows apliačný log, Windows Performance Log pre monitorovanie výkonnosti Report Servera a pre riešenie prípadných inštalačných problémov aj Setup log súbory.
V ďalšej časti sa pozrieme bližšie na tvorbu a nové možnosti procesovania reportov.