Media Partners
SQL Server Analysis Services Procedury składowane Grzegorz Stolecki
O mnie Konsultant w JCommerce S.A. Trener w Centrum Szkoleniowym COMARCH S.A. Freelancer Gun for Hire ;-) Microsoft MVP od 2010 roku grzegorz.stolecki@plssug.org.pl
Agenda Możliwości rozszerzania funkcjonalności SSAS Rodzaje procedur składowanych Tworzenie procedury krok po kroku Debugowanie procedur Kiedy stosowad procedury składowane
Rozszerzanie możliwości SSAS Funkcje wbudowane COM (Excel, VBA) Procedury składowane i funkcje COM (niezalecane) Procedury składowane i funkcje.net Plug-Ins
Funkcje wbudowane COM Udostępniają w MDX wiele funkcji znanych z Excel i VBA Pełna lista: https://msdn.microsoft.com/en-us/library/hh510163%28v=sql.110%29.aspx
Przydatne funkcje Funkcje, które ułatwiają przekazywanie parametrów i odbieranie wyników z funkcji VBA i Excel (te ostatnie nie obsługują obiektów SSAS!) MemberToStr TupleToStr SetToStr StrToMember StrToTuple StrToSet StrToArray Generalnie spowalniają wykonywanie zapytao MDX
Procedury składowane.net Kod w języku.net (C# lub VB.NET) Wykorzystanie możliwości.net Framework Kod może zawierad: Funkcje, których można używad we własnych wyrażeniach i zapytaniach MDX Procedury składowane wykonujące np. czynności administracyjne na serwerze Procedury obsługi zdarzeo zachodzących na serwerze (Plug-Ins)
Niezbędne narzędzia Kompilator wybranego języka.net kompilatory C# i VB.NET są dostępne za darmo w ramach dystrybucji.net Framework Visual Studio przydatne do debugowania kodu i wygodniejszej pracy SQL Server Management Studio Zainstalowane komponenty: SQL_AS_ADOMD klient ADOMD, dostęp do metadanych, danych OLAP SQL_AS_AMO Analysis Management Objects (administracja, zarządzanie)
Krok 1 utworzenie projektu w VS Typ projektu Class Library
Krok 2 potrzebne referencje W zależności od tego, co ma realizowad kod należy dodad referencje. Wykorzystanie obiektów AMO:
Krok 2 potrzebne referencje c.d. Klient ADOMD
Krok 2 potrzebne referencje c.d. Tajna referencja! Dostęp do obiektu AdoMdServer (i Context)
Krok 3 kod, kompilacja
Krok 4 przyłączenie biblioteki do serwera SSAS Wymagane uprawnienia administratora.
Krok 4 - Uprawnienia Safe kod nie ma dostępu do zewnętrznych zasobów serwera. Przydatne dla obliczeo i przetwarzania danych w izolacji. External Access kod ma dostęp do zasobów serwera z niewielkimi ograniczeniami. Pełny dostęp do rejestru, sieci, systemu plików. Unrestricted brak ograniczeo w dostępie do zasobów zewnętrznych. Często ten poziom musi byd ustawiony, ze względu na brak zaufania Framework a do kodu Analysis Services.
Krok 4 - Impersonifikacja Konto, na którym jest wykonywany kod. Use a specific Windows user - dokładne określenie poświadczeo. Przydatne do uzyskania dostępu np. do bazy danych. Use the service account użycie konta, na którym działa SSAS. Przydatne do wykonywania czynności administracyjnych. Use the credentials of the current user użycie konta użytkownika wykonującego zapytanie. Przydatne, gdy kod korzysta z danych OLAP. Anonymous dostęp anonimowy. Przydatny gdy kod nie korzysta z żadnych zasobów zewnętrznych. Default zależne od uprawnieo (Safe Service account, pozostałe current user).
Wywołanie Funkcja: należy użyd prefiksu klasy i nazwy funkcji. Procedura: należy użyd polecenia CALL. Uwaga! Procedura składowana może zwracad tabelę. Jest wtedy podobna w działaniu do widoków DMV. W kodzie są konieczne specjalne wywołania metod SSAS.
Przydatne klasy (AdoMdServer) TupleBuilder tworzy krotki ze składników SetBuilder tworzy zestaw składników z krotek Expression wylicza wyrażenie podane w języku MDX MDXValue konwersja pomiędzy różnymi typami MDX Context dostarcza informacji o kontekście w jakim została wywołana procedura (serwer, połączenie, kostka)
Debugowanie Przyłącz VS do procesu serwera SSAS (msmdsrv.exe) opcja Attach. Upewnij się, że zostały załadowane wszystkie symbole debugowania (dla wszystkich modułów) okno Modules (normalnie niedostępne w menu, trzeba dodad opcję do menu). Załaduj kod źródłowy procedury. Ustaw punkt przerwania (breakpoint). Wykonaj polecenie/zapytanie MDX, które wywołuje procedurę.
Analysis Services Personalization Extensions Procedura składowana oznaczona atrybutem *PlugInAttribute]. Obsługuje zdarzenia zachodzące na serwerze SSAS. SessionOpened CubeOpened Przykładowe scenariusze: Śledzenie działao użytkowników SessionClosed CubeClosed Tworzenie zestawów i kalkulacji dopasowanych do konkretnego użytkownika (np. przeliczenie waluty w kraju użytkownika)
Wydajnośd procedur Każde wywołanie procedury składowanej powoduje zakładanie blokad na obiekty SSAS. Przy jednoczesnym wywoływaniu procedur i procesowaniu obiektów może dojśd do zakleszczeo (deadlock) rozwiązaniem jest wykonywanie działania w odrębnym wątku, a w podstawowym kontrolowanie stanu kontekstu serwera. Dobry przykład w ASSP CubeInfo.cs.
Kiedy stosowad procedury składowane? Wykonywanie czynności administracyjnych, uzyskiwanie informacji o stanie obiektów (analogicznie do DMV). Zestawy statyczne, SCOPE, przypisania oraz inne elementy skryptu kalkulacyjnego kostki (wczesne wiązania). Definiowanie zawartości osi wyniku zapytania. Pobieranie metadanych używanych obiektów (bez pobierania wartości komórek kostki!!!). W kalkulacjach, gdzie dobrze działa NEB (wbrew wielu informacjom nadal bywa istotny! Trzeba testowad!). W kalkulacjach bez lub ze słabym NEB, ale tylko wtedy gdy liczba przetwarzanych komórek jest niewielka (np. klauzula WHERE).
Zasoby http://asstoredprocedures.codeplex.com/ - projekt Analysis Services Stored Procedures pełny kod źródłowy, kopalnia wiedzy! http://www.infotoad.com/blog/post/2013/01/13/creating-and-using- MDX-Stored-Procedures-ADOMDNET-Server-Programming.aspx https://bimatters1403.wordpress.com/2008/03/04/analysis-services- 2008-personalization-extensions/ http://johnhennesey.blogspot.com/2010/07/analysis-servicespersonalization.html
Media Partners