Wojciech
Gardziński
Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...
Temat: Czy można nadać serwerowi robotę według naszego przepisu?
Kolejna rewolucyjka tutaj, któraż to już?Temat jest taki:
Nasza grupka analityków pichci raporty - duuużo raportów. W tych raportach jest strasznie dużo zapytań do bazy danych - a mamy bazę poważną - SQL Server. informatycy się burzą, że ciągle zapychamy im łącze do tej bazy tysiącami zapytań detalicznych (hehehe, zakładam, że to już umiemy).
Więc, jak zrobić, żebyśmy mieli możliwość tworzenia DOWOLNYCH zapytań detalicznych, przesłali je jakoś zgrabnie na serwer, potem coś uruchomili, żeby serwer nam to policzył (on ma do danych blisko, bo są one na tym samym serwerze, tylko w innej bazie danych), a potem ściągnęli GOTOWE WYNIKI, oczywiście do Excelka?
Ano, wicie-rozumicie, uparłem się żeby to zrobić. Ale serwer NIE DYSPONUJE funkcjonalnością odpowiadania na MOJE pytania. Potrafi dużo rzeczy, ale nie potrafi mi odpowiedzieć na pytanie zadane SQLem w tabeli takich SQLów. A ja takich pytań mam, załóżmy, tysiąc - to taki bardzo, bardzo duży raport, rzadko w praktyce spotykany, ale my tu lubimy przeginać.
Więc pytanko się rodzi - jeżeli serwer nie umie, to JAK GO NAUCZYĆ?
Ano, trzeba mu zrobić procedurę, ale jak?
No tu, przyznaję, trochę się musiałem zmóżdżyć, koledzy SQLSowcy nie bardzo mi chcieli pomóc, więc pouczyłem się T-SQLa, czyli Transact-SQLa, czyli takiego SQLa od procedur, nie od odpytywania bazy. Trochę boli, poważnie, ale, gdy cel jest jasny...
No to mamy tablicę z tysiącem SQLków - wszystkie detaliczne, wszystkie tak napisane, żeby zwracały tylko jedną wartość. Czyli totalny DETAL, jak to w naszych raportach. Gdzie tabela przestawna nie daje rady, tam musi być detal.
1. Tworzę więc taką procedurkę jednym klikiem i więcej już do niej nie wracam, bo, jak serwer się nauczył, to już umie. Taki bystrzaczek.
2. Uruchamiam ową procedurkę. Przelatuje ona przez wszystkie rekordy zapisanej na serwerze tabeli, odczytuje SQLe, czyli moje zapytania detaliczne, oblicza wartości i wpisuje je w pole wartości, obok owych zapytań.
Potem tę tabelkę ściągam do Excela.
Razem wszystko - 15 sekund / 1000 zapytań DETALICZNYCH.
Ilość "kontaktów" z serwerem można policzyć na palcach jednej ręki, więc IT śpi spokojnie.
A my mamy TO, CO CHCEMY, a nie to, co serwer nam łaskawie oferuje. Czad.
Film:
http://afin.net/webcasts/Demo_CreateAndExecSqlsProcExe...