Nowy rok – nowy blog

Postanowienie noworoczne padło – chcę w tym roku być aktywniejszy w blogowaniu. Niestety, mój ulubiony edytor zawartości bloga – Windows Live Writer – odmówił współpracy z blogiem sqlgeek.pl. Ten fakt oraz potrzeba wniesienia powiewu świeżości spowodowały, że napocząłem nowy byt internetowy – blog.sqlgeek.pl. Nowy blog nadal bazuje na silniku WordPress, ale tym razem wygląd jest ascetyczny do maksimum, a lista plug-in’ów została ograniczona do najbardziej potrzebnych.

Od dzisiaj to tam będą lądowały moje nowe wpisy i przemyślenia. Zapraszam serdecznie do lektury.

Podsumowanie roku 2013

Jak co roku przyszedł czas na podsumowanie ostatnich 12 miesięcy życia mojego i bloga SQLGeek.pl. O ile w moim życiu działo się sporo, o tyle zdaję sobie sprawę, że blog doznał swego rodzaju stagnacji. W tym miejscu kładę uszy po sobie, bo to oczywiście moja zasługa/wina :-)

2013 u mnie

Na początek, co się działo u mnie. Przede wszystkim znalazłem sobie nową pasję – bieganie. Bieganie głównie dla zdrowia i kondycji fizycznej (i psychicznej). Ale oczywiście przy okazji ma miejsce swoista wewnętrzna rywalizacja z samym sobą, łamanie kolejnych barier (głównie w mojej głowie). Zacząłem biegać jeszcze w zeszłym roku (po wakacjach). Ale było to raczej dreptanie – na początek po 4-5 km w tempie ok. 7 min/km. Nie próbowałem od razu biegać długo i codziennie, raczej co drugi dzień i bez szaleństw. Dzisiaj mogę napisać, że to był dobry pomysł. Stopniowo wydłużałem biegi i zwiększałem tempo. Pierwszym istotnym celem było przebiegnięcie Półmaratonu Warszawskiego (marzec 2013). Udało się – zszedłem poniżej 2h (1:58:35). Rozpierała mnie duma i kontynuowałem bieganie, które dawało mi coraz większą radość. Zacząłem eksperymentować z planami treningowymi i różnymi długościami wybiegań. Szybko okazało się, że bieganie ma dobry wpływ na moje życie…

Przez nieco ponad rok z wagi wyjściowej 110 kg zszedłem poniżej 90 kg. Bez żadnej diety, wyłącznie dzięki bieganiu. Nie muszę nikogo przekonywać, że taka zmiana wpłynęła pozytywnie na wiele aspektów mojego życia (przede wszystkim lepiej się czuję i łatwiej mi się biega). Oczywiście, zaszły też znaczne zmiany w garderobie ;-)

Aktualnie biegam po 50-60 km tygodniowo (cały 2013 rok to ponad 2500 km), a tempo podróżne to 5:20-5:30 min/km. W takim tempie jestem w stanie przebiec pewnie i maraton :-) Kilka miesięcy temu zacząłem intensywnie pracować nad techniką biegu. Obecnie ląduję na śródstopiu, robię mniejsze kroki (za to zwiększyłem kadencję) i dbam o sylwetkę w czasie nawet najintensywniejszych treningów :-) Udało mi się też wyśrubować kilka prywatnych rekordów (wszystkie nieoficjalne i osiągnięte w czasie treningów):

5 km – 22:13
10 km – 45:02
Półmaraton – 1:42:34
Maraton – 3:55:26

Dodatkową motywację, oprócz stałego progresu wyników, dawały mi gadżety ;-) Nie ma to jak nowa para butów do biegania czy nowy element stroju w nagrodę z ciężki wysiłek na treningach. W porównaniu do początków mojego biegania, dzisiaj moja aktywność fizyczna jest w pełni monitorowana. Wiele osób pytało mnie o to, z jakim sprzętem biegam, więc “here you go”: biegam z zegarkiem Garmin FR310xt, z czujnikiem rytmu serca (na zmianę – raz HR z zestawu Garmina, raz z zestawu adidas miCoach), czujnikiem tempa i kadencji z zestawu adidas miCoach. Nieodłącznym towarzyszem mojego biegania jest też muzyka :-)

Ale mój rok 2013 to nie tylko bieganie. To także całkiem sporo SQL-a ;-) To trzy wystąpienia na spotkaniach warszawskiego oddziału PLSSUG (sesje o funkcjach okienkowych, o audytach i o DBCC CHECKDB), dwie sesje na SQLDay 2013 (o danych geograficznych i o PDW), kilkuminutowy epizod (Power BI) na sesji generalnej MTS 2013 i wspólna prezentacja z Markiem Adamczukiem również na MTS 2013. A więc nadal trzymam się blisko społeczności SQL Server i tak pozostanie (już 8 stycznia poprowadzę prezentację “Hekaton Unleashed” w ramach spotkania PLSSUG w Warszawie).

Pewnie byłoby więcej mojej aktywności na polu społeczności, gdyby nie intensywność mojej pracy zawodowej. Jako doradca technologiczny mam okazję spotykać się z klientami firmy Microsoft z praktycznie wszystkich branż. To daje mi możliwość dowiedzenia się, w jaki sposób SQL Server jest wykorzystywany w produkcyjnych systemach w całym kraju. Do tego dochodzą liczne prezentacje dla partnerów Microsoft oraz wystąpienia na konferencjach i warsztatach. A więc, cały czas uczę się biznesu i technologii, nie stoję w miejscu. I chyba o to chodzi :-)

2014 na blogu

O kończącym się roku 2013 w kontekście bloga SQLGeek.pl nie ma co pisać. Za to sądzę, że należy się słowo na temat moich planów na rok 2014. Skoro już przedłużyłem żywot bloga, pomyślałem, że dobrze byłoby jednak tchnąć weń trochę życia. I to jest moje noworoczne postanowienie – w miarę możliwości pisać więcej na blogu. Okazji będzie pewnie niemało – nieuchronnie zbliża się premiera SQL Server 2014 (z pewnością będę brał udział w organizacji polskiej premiery produktu). Pojawiają się ciekawe funkcjonalności z rodziny Power BI. Ewolucję przechodzi usługa HDInsight. To są aktualnie trzy obszary, które – jeśli chodzi o pracę z danymi – interesują mnie najbardziej. I o nich będę się starał pisać, być może umieszczać na blogu własne demonstracje tych technologii. Kto wie, może i o bieganiu zdarzy mi się napisać ;-)

A zatem – stay tuned. SQLGeek.pl is still alive :-)

MTS 2013 – wrażenia z konferencji

Kolejna edycja konferencji Microsoft Technology Summit (MTS), w której brałem udział, przeszła do historii. To był mój siódmy MTS (raz opuściłem to wydarzenie) i muszę powiedzieć, że będę go wspominał bardzo dobrze. Czemu? Głównie za sprawą sesji, które miałem przyjemność obejrzeć. Tym razem moja uwaga była niemal całkowicie skupiona na csesjach “wokół SQL-owych”. Ale po kolei…

Na dobry początek MTS 2013 przypadł mi w udziale zaszczyt wystąpienia (8-minutowego :-)) na sesji generalnej. Przeżycie naprawdę duże, bo na sali siedziało ponad 2500 ludzi. Stres uszedł niemal natychmiast, w końcu nie była to moja pierwsza w życiu prezentacja na ogromnej sali i przed liczną publicznością. Niemniej, pokazywałem technologię, którą lubię i cenię, ale w której czuję się mimo wszystko mniej komfortowo niż w SQL Server :-) Excel, Power Query, Power BI – naprawdę ciekawe możliwości. I nie chodzi mi o pobieranie danych z Facebooka :-) To oczywiście też jest ciekawe, ale sam fakt, że jestem w stanie zamienić Excela w mini-ETL i pobierać oraz transformować w locie dane z naprawdę wielu źródeł, po czym kombinować je w modelach PowerPivot, daje naprawdę dużą swobodę w operowaniu danymi (wcześniej takie szybkie scenariusze załatwiałem dtswizardem lub SSIS). Mój początek konferencji według mnie wypadł nieźle (ponoć nie wyglądało to źle także z perspektywy widowni). W ogóle, samą sesję generalną oceniam bardzo dobrze, bo wszyscy moi koledzy pokazali chyba to, co mieli w planie zaprezentować (podobało mi się choćby to, że szef grupy serwerowej, Marek Zamłyński, pokazał roadmapę produktów).

Po sesji generalnej rozpocząłem polowanie na sesje SQL-owe. Zacząłem od sesji Włodka Bielskiego z Action CE na temat narzędzi i rozwiązań BI/Big Data dostępnych w Azure. Mimo złego stanu zdrowia Włodek dał z siebie wszystko. Trochę zabrakło dema łączącego HDInsight z Excelem, ale ogólne wrażenie – bardzo profesjonalna sesja (m.in. zaproponowane scenariusze użycia każdej z usług).

Później obejrzałem sesję Daniela Araka i Konrada Wypchło. Koledzy z firmy ITMAGINATION pokazywali różnice pomiędzy trybami wielowymiarowym i tabelarycznym SQL Server 2012 Analysis Services. Sesja konkretna i ciekawa, mimo niewielkiej wpadki z wielkością czcionki :-)

Trzecią sesją, jaką obejrzałem, była prezentacja na temat in-memory OLTP w SQL Server 2014, którą poprowadzili Łukasz Grala i Marcin Szeliga, czyli duet znany jako SQLExpert.pl. Muszę przyznać, że to była tego dnia sesja, na którą czekałem i która w pełni spełniła moje oczekiwania. Koledzy w, jak to określił jeden z uczestników, filmowy sposób, zaprezentowali technologię znaną pod nazwą kodową Hekaton. Widać, że Marcin i Łukasz czują się razem na scenie coraz lepiej i doskonale współpracują. Gratulacje, bo wiem z doświadczenia, że prowadzenie prezentacji w duecie nigdy nie jest proste. Krótko – dla mnie sesja nr 1 tego dnia (żałuję, że nie dotrwałem do jej końca, ale zdecydowaną większość udało mi się zobaczyć).

Na koniec dnia mieliśmy z moim przyjacielem, Markiem Adamczukiem, okazję po raz kolejny wystąpić w roli prelegentów na MTS. W tym roku, co muszę przyznać, mieliśmy dylemat, co pokazać na sesji. Wybraliśmy cztery zagadnienia z szerokiej tematyki programowania w T-SQL: dynamiczny SQL, parametryzację, transakcje i indeksy. Niektóre przykłady były, według mojej oceny, dość oryginalne i nieoczywiste. Wyszliśmy z założenia, że to, co jest nowe w SQL Server 2014, pokaża nasi koledzy (i tak było), a my skupimy się na przekazywaniu dobrych praktyk przy okazji demonstrując ciekawostki (np. zapytanie do pustej tabeli wykonujące się ponad sekundę). Czy się udało osiągnąć właściwy efekt? Nie wiem, ocena należy do tych, którzy oglądali tę prezentację :-) My jak zwykle daliśmy z siebie wszystko i staraliśmy się maksymalnie spójnie i treściwie przekazać to, co założyliśmy przed prezentacją. Cieszę się, że przy okazji mogłem wspomnieć przez moment człowieka, który dawno temu miał ogromny wpływ na moją przygodę z technologią SQL Server – zmarłego dwa lata temu Piotra Waydę (eksperta .NET i SQL, doskonałego trenera i konsultanta, jurora w pierwszym w historii konkursie Mistrz .NET).

Drugi dzień konferencji rozpocząłem od sesji mojego kolegi z Microsoft, Radka Łebkowskiego, na temat self-service BI. Przez godzinę Radek z dużym wyczuciem i na sporym luzie pokazał zatrzęsienie demonstracji – głównie opartych o Excela. I okazało się, że ma w zanadrzu świetne przykłady Power Map czy Power Query. Naprawdę, kawał dobrej roboty – zarówno merytorycznej, jak i prezentacyjnej.

Później zawitałem na sesji Damiana Widery na temat… No właśnie, niby o HA, ale bardziej okazało się, że Damian poszedł na całość i pokazał HA w odniesieniu do Azure, ale oprócz tego pokazywał inne nowinki z SQL Server 2014 – smart_admin, Buffer Pool Extensions, klastrowane indeksy columnstore. Dużo, fajnie, może trochę miejscami zbyt teoretycznie, ale jednak – jak to Damian – z pełnym zaangażowaniem i eksperckim wyczuciem.

I wreszcie na zakończenie (z uwagi na natłok obowiązków w pracy musiałem zakończyć drugi dzień po trzech sesjach) zaserwowałem sobie sesję jednej z niewątpliwych gwiazd MTS 2013 – Pauli Januszkiewicz. Hackers (Not) Halted. Paula rządzi – taki komentarz oddaje chyba wszystkie moje przemyślenia :-) To fakt, że para się ciekawą tematyką (bezpieczeństwo, testy penetracyjne). Ale nawet super ciekawe detale techniczne i sztuczki hackerskie trzeba umieć przekazać. Paula na scenie jest wulkanem emocji. Widać u niej tę pasję, która cechuje najlepszych prelegentów. I ma dziewczyna dużą swobodę na scenie (doświadczenie dużych imprez owocuje). Znakomicie się oglądało jej sesje. No i już wiem, jak tanio kupować gatki dla psa ;-)

Oczywiście, nie oceniłbym wysoko konferencji, gdyby obok dobrej merytoryki nie było porządnego “networkingu”. MTS ma to do siebie, że spotykam co roku naprawdę wiele osób, z którymi w zasadzie widuję się nie częściej niż co kilka miesięcy, a z którymi zawsze miło jest wymienić doświadczenia i przemyślenia. MTS 2013 nie rozczarował mnie pod tym względem. Udało mi się porozmawiać z naprawdę wieloma ludźmi, poznać ich opinie, zaczerpnąć trochę wiedzy i inspiracji. I chyba o to chodzi w tym wszystkim.

No cóż, za rok znów chcę być częścią tego wydarzenia. W jakiej roli? Nie ma znaczenia. Grunt to być blisko technologii i społeczności, która wokół tej technologii powstała, istnieje i ma się chyba całkiem nieźle. Do zobaczenia na MTS 2014!

PS. Materiały z sesji pt. “Z życia programisty T-SQL” jest do znalezienia w zasobach mojego bloga (a wkrótce pojawią się także na witrynie konferencji).

SQL Server – collation a sortowanie tekstu z myślnikami

Swego czasu popełniłem na blogu wpis poświęcony collation i najlepszym praktykom dla programistów właśnie w kontekście wyboru i wykorzystywania różnych collation. Ostatnio jedna z odwiedzających mojego bloga osób – pseudonim robert (credits!) – zwróciła mi uwagę, że jeden z przykładów w tamtym wpisie jest (cyt.) “bałamutny” :-)

Przykład dotyczył sortowania wartości tekstowych zapisanych w “długich” i “krótkich” collation, w których występowały myślniki. Faktycznie, jeżeli rozbudujemy ów przykład, to okazuje się, że w żadnym z dwóch użytych collation sortowanie nie jest doskonałe (czyt. zgodne z oczekiwaniami):

SELECT *
FROM (
  VALUES ('a'), ('a-'), ('a-a'), ('a-b'), ('aa'), ('ab'), ('aa-')
) AS T(c)
ORDER BY c COLLATE SQL_Polish_CP1250_CS_AS;
GO
SELECT *
FROM (
  VALUES ('a'), ('a-'), ('a-a'), ('a-b'), ('aa'), ('ab'), ('aa-')
) AS T(c)
ORDER BY c COLLATE Polish_CI_AS;
GO

Wynik wykonania powyższych zapytań:

image

Wynik sortowania w przypadku collation SQL_Polish_CP1250_CS_AS jest zły, ponieważ wartość ‘a’, której spodziewałbym się na początku posortowanego zbioru, jest nie na swojej pozycji (4).

Ale wynik drugiego zapytania też nie jest poprawny z punktu widzenia tego, jak powinno zadziałać sortowanie. Wartość ‘a-‘ znajduje się przed wartością ‘aa’ (i to jest zgodne z moim oczekiwaniem), ale z kolei wartość ‘aa’ jest przed wartością ‘a-a‘. I w tym momencie już wynik sortowania jest niespójny – raz mamy symbol ‘-‘ przed symbolem ‘a’, a innym razem jest na odwrót.

Ciekawe, że najlepiej w tych “zawodach w sortowaniu” wypada collation binarne:

SELECT *
FROM (
  VALUES ('a'), ('a-'), ('a-a'), ('a-b'), ('aa'), ('ab'), ('aa-')
) AS T(c)
ORDER BY c COLLATE Polish_BIN;
GO

Wynik takiego sortowania:

image

Wygląda poprawnie. Nie oznacza to, że używałbym collation Polish_BIN, ale w tym wypadku wypadło ono najlepiej (może do ew. sortowań z udziałem wartości z myślnikami czasem dobrze mieć kolumnę wyliczaną z collation binarnym?).

Powyższe testy wykonałem na SQL Server 2012 (build 11.0.3368).

Są rzeczy o których nie śniło się geekom SQL-owym ;-) A może ktoś z Was potrafi rozszyfrować przyczyny takiego stanu rzeczy? Może ja gdzieś zbłądziłem… Z góry dziękuję za wszelkie sugestie :-)

SQL Server 2014 CTP1 – starcie zerowe

No i doczekaliśmy się :-) Publiczna wersja Community Technology Preview 1 systemu Microsoft SQL Server 2014 ujrzała światło dzienne. Liczne rzesze geeków, klientów i partnerów Microsoft zacierają ręce na myśl o przetestowaniu nowinek, które co prawda na razie są w fazie testów, ale wyglądają obiecująco.

Binaria SQL Server 2014 CTP1 pobieramy stąd:  http://technet.microsoft.com/en-US/evalcenter/dn205290.aspx.

Oprócz klasycznych plików ISO i CAB można też wykorzystać nowinkę – maszynę wirtualną z SQL Server 2014 CTP1 na pokładzie postawioną w Azure. Ciekawe rozwiązanie dla osób, które cenią sobie szybkość (maszyna stawia się w parę minut, jeśli nie w minutę) i nie chcą mieć kolejnego serwera testowego w swoim data center.

Po zainstalowaniu pierwsza niespodzianka – nie ma SQL Server Data Tools (SSDT). Tudzież inaczej – aplikacja ta nie instaluje się jako jeden z komponentów CTP1. Szybki przegląd opcji w oknie instalatora (klikamy na Tools) odpowiada na pytanie, skąd wziąć SSDT.

image

Kolejna niespodzianka – po uruchomieniu SQL Server Management Studio (SSMS) i wykonaniu polecenia:

SELECT @@VERSION;

serwer przedstawia nam się tak:

Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64)
   Jun 10 2013 20:09:10
   Copyright (c) Microsoft Corporation
   Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

Czyli na pierwszy rzut oka nowy build SQL Server 2012. Pamietajmy jednak, że to CTP1 i nic, co widzimy, nie musi przedstawiać się tak, jak to będzie wyglądało w wersji RTM.

Jakie nowe funkcjonalności znajdziemy w CTP1? W pamięci utknęły mi przede wszystkim:

  • Hekaton – czyli wbudowane w silnik bazodanowy mechanizmy in-memory OLTP,
  • ulepszone indeksy columnstore – zarówno indeksy klastrowane, jak i update’owalne (w SQL Server 2012 dane indeksowane indeksem columnstore są tylko do odczytu),
  • rozszerzenie bufora danych na dyskach SSD (szybsze stronicowanie i większa pojemność bufora),
  • udoskonalony AlwaysOn – do 8 replik, bez przerw w pracy produkcji przy operacjach online na indeksach, integracja z Azure (repliki mogą być trzymane w chmurze publicznej),
  • nowe możliwości Resource Governora – teraz można zarządzać także przydzielanym I/O.

Żeby nie dublować treści – po szczegóły odsyłam do oficjalnej dokumentacji SQL Server 2014, do dokumentu Product Guide oraz na blog Brenta Ozara (Brent zrobił m.in. rozpoznanie tego, co zmieniło się w warstwie metadanych i DMVs):

Moje testy CTP1 zaczynam od wszystkich funkcjonalności, które jestem w stanie przetestować na pojedynczej maszynie – Hekaton, indeksy columnstore, rozszerzenia bufora. A zatem… Stay tuned! :-)

SQLDay 2013 – moje wrażenia z konferencji

20130523_074850SQLDay 2013, piąta edycja corocznej konferencji organizowanej przez Polską Grupę Użytkowników SQL Server (PLSSUG), jest historią. Wydarzenie, na które co roku czeka wielu pasjonatów parających się systemem SQL Server, zmieniło rok temu swoją formułę (z jednego dnia zrobiło się kilka dni), a tym razem zmianie uległa lokalizacja konferencji.

Stadion Miejski we Wrocławiu okazał się być idealnym miejscem na tego typu imprezy. Dużo miejsca na parkingu przed obiektem, przestronne korytarze z miejscami siedzącymi (stoliki!), sale spokojnie mieszczące zainteresowanych uczestników. Trafienie w dziesiątkę. Nawet logo PLSSUG się pojawiło przy wejściu do obiektu (patrz zdjęcie po prawej).

Około 200 osób (wliczając prelegentów i organizatorów) przez dwa dni 23-24.05 (a niektórzy nawet przez trzy – wliczając sesje warsztatowe w środę 22.05) słuchali i rozmawiali prawie wyłącznie o SQL Serverze. Podział na dwie ścieżki tematyczne (Dev/DBA + DW/BI) zapewnił odpowiednie przekierowanie osób zainteresowanych konkretnymi zagadnieniami na odpowiednie sesje.

20130523_080849 Właściwa część konferencji rozpoczęła się od sesji generalnej – Keynote, którą poprowadził ex-CAT Thomas Kejser. Thomas dawniej doradzał największym klientom Microsoft, jak projektować, wdrażać i optymalizować rozwiązania oparte o SQL Server. Dzisiaj, jako CTO firmy Fusion IO, łączy swoją głęboką merytoryczną wiedzę na temat najciemniejszych zakątków SQL Servera z pragmatycznym podejściem do zagadnień dotyczących pamięci masowych i projektowania systemów o wysokiej przepustowości i wydajności. Prezentacja Thomasa obfitowała w ciekawe i warte przemyślenia statystyki i porównania dotyczące najnowszych trendów na styku storage’u i baz danych.

Miałem i ja przyjemność zabrania głosu podczas sesji generalnej. Wspominałem historię PLSSUG, pierwsze spotkania wspólnie z WG.NET, pierwsze konferencje (C2C). Widziałem, że wielu osobom przypomniały się dawne czasy :-)

Na koniec sesji generalnej Maciek Pilecki wraz z Thomasem pospekulowali na temat Hekatona i płynnie przeszliśmy do części właściwej konferencji czyli sesji technicznych.

20130523_101626Przez dwa dni konferencji udało mi się zobaczyć tylko dwie sesje (Maćka Pileckiego o latchach, lockach i spinlockach oraz Damiana Widery o waitsach), głównie przez to, że pierwszego dnia szlifowałem swoje prezentacje :-) Ale grono prelegentów gwarantowało z pewnością doskonałą jakość i treść przekazu. Miło było w końcu poznać Chrisa Webba, którego blog czytuję regularnie, czy Alberto Ferrari – jednego z dwóch ekspertów z zespołu SQLBI

Ja w tym roku wybrałem tematy niekoniecznie “top trendy”, ale chyba mimo wszystko przydatne – PDW v2 i obsługa danych geograficznych (z naciskiem na optymalizację). Jak mi poszło prezentowanie? To już wiedzą uczestnicy obu sesji :-) Przy takich tuzach wśród prelegentów raczej TOP 1 nie będę, ale chyba (?) nie zawaliłem żadnej prezentacji ;-)

20130524_223809Rozmowy w kuluarach dały wiele inspiracji i sprawiły, że zacząłem myśleć nawet o ożywieniu mojego bloga :-) Przysłuchując się dyskusjom uczestników i prelegentów sądzę, że nie byłem jedyną osobą, która wiele skorzystała z intensywnego networkingu, którego na tegorocznym SQLDay było naprawdę dużo. A skoro przy networkingu jesteśmy, to nie sposób nie wspomnieć o imprezach, które miały miejsce w ciągu obu dni konferencji. W końcu nie tylko samą technologią człowiek żyje :-) Naprawdę, szampańska zabawa! Zresztą, był nawet tort na piąte urodziny SQLDay ;-)

Podsumowując – to była wspaniała konferencja. Chylę czoła przed organizatorami – liderami PLSSUG z Grzesiem Stoleckim (prezes grupy) i Maćkiem Pileckim (w zasadzie owner imprezy – doskonale ogarniający logistykę) na czele oraz osobami związanymi z PLSSUG i stanowiącymi “event crew” (szczególne brawa dla Justyny – dobrego ducha konferencji). Mam nadzieję, że w przyszłym roku znów będzie mi dane być na SQLDay i spotkać tylu naprawdę biegłych technologicznie specjalistów-pasjonatów.

Do zobaczenia w przyszłym roku we Wrocławiu! A może wcześniej i gdzie indziej? Bo chodzą słuchy, że PLSSUG zorganizuje jeszcze jedną, jednodniową, imprezę… Stay tuned!

SQL Server Integration Services – transakcje a zmienne

Ostatnio zetknąłem się z problemem dotyczącym wykorzystania transakcji natywnych SQL Servera z poziomu pakietu SQL Server Integration Services (SSIS). Abstrahując od tego, czy jestem zwolennikiem zaszywania kodu T-SQL w pakietach SSIS, czy nie, problem wydał mi się dobrym materiałem na wpis na blogu :-)

Wyobraźmy sobie uproszczony pakiet, który wygląda tak:

image

  • SQL Begin Tran 1: zadanie Execute SQL Task na połączeniu Connection Manager 1 (połączenie z SQL Server, właściwość RetainSameConnection=True) z kodem T-SQL: BEGIN TRAN;.
  • SQL Begin Tran 2: zadanie Execute SQL Task na połączeniu Connection Manager 2 (połączenie z SQL Server, właściwość RetainSameConnection=True) z kodem T-SQL: BEGIN TRAN;.
  • SQC Do Something: sekwencja czynności do wykonania, nieistotne, na którym połączeniu. Ważne: w jednym z kroków sekwencji ustawiana jest wartość pewnej zmiennej w paczce SSIS.
  • SQL Commit Tran 2: zadanie Execute SQL Task na połączeniu Connection Manager 2 z kodem T-SQL: COMMIT TRAN;.
  • SQL Commit Tran 1: zadanie Execute SQL Task na połączeniu Connection Manager 1 (właściwość RetainSameConnection=True) z kodem T-SQL: IF ? = 1 COMMIT TRAN; ELSE ROLLBACK; (pod ? podstawiamy zmienną z paczki SSIS, której wartość była ustawiana w sekwencji).

Oczywiście, kody specjalnie upraszczam, ale istota problemu została zachowana – mamy dwie transakcje, na różnych połączeniach, jedna ma się toczyć niezależnie od drugiej, ale druga ma zostać zatwierdzona (COMMIT), tylko, gdy pierwsza została zakończona powodzeniem, czego wyrazem ma być wartość zmiennej w paczce SSIS ustawiona na 1.

Problem? Ostatni krok kończy się błędem z komunikatem:

Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0.

Dlaczego tak się dzieje? Aby odpowiedzieć na to pytanie, dobrze jest – wykorzystując aplikację SQL Server Profiler – przechwycić kod T-SQL wykonywany przez pakiet.

Okazuje się, że kod T-SQL na połączeniu Connection Manager 1 wygląda na kształt:

BEGIN TRAN;
-- tu coś robimy...
EXEC sp_executesql N'IF @zmienna = 1 COMMIT TRAN; ELSE ROLLBACK;',
                   N'@zmienna int',
                   @zmienna = 1;

Problem wynika zatem z faktu, że gdy kod T-SQL musi być parametryzowany, SSIS uczciwie wykorzystuje parametryzację za pomocą procedury systemowej sp_executesql (“bezpieczny” dynamiczny T-SQL). A kod wewnątrz sp_executesql zachowuje się tak, jak procedura składowana – krzyczy na złego człowieka, jeśli wartość @@TRANCOUNT na starcie nie jest równa wartości @@TRANCOUNT na końcu wykonywanego kodu (w konkretnym przypadku na dzień dobry była otwarta transakcja, a na końcu transakcji nie było – została zatwierdzona).

Wniosek: jeśli już koniecznie transakcje SQL-owe tworzone poprzez zaszywanie kodu T-SQL rozproszonego po zadaniach w pakietach SSIS, to nie mieszajmy wysyłania wsadów (nieparametryzowanych kawałków kodu T-SQL) z parametryzowanymi blokami kodu wykonywanymi za pomocą sp_executesql. Inaczej efekt może być taki, jak powyżej.

24 Hours Of PASS dla analityków

Z niekrytą radością przekazuję dalej informację o kolejnej edycji wydarzenia online pod szyldem 24 Hours of PASS. Konferencja odbędzie się 30 stycznia i będzie – tradycyjnie – przeprowadzona w formie spotkań online i webcastów. Tym razem będzie dedykowana analitykom biznesowym. Zostaną w jej trakcie zaprezentowane rozwiązania bazujące na platformie analitycznej Microsoft, w tym także na najnowszysch technologiach (m.in. HDInsight dla Big Data).

Lista sesji wygląda zachęcająco. Swoje prezentacje poprowadzą m.in. Pete Myers, Stacia Misner czy Alberto Ferrari. A więc dobrze znani prelegenci, którzy znają się na rzeczy. Ale myślę, że z równie wielkim zainteresowaniem spotkają się choćby zaawansowane sesje analityczne Paula Bradleya i Wayne’a Winstona.

Smaczkiem z pewnością będzie sesja poprowadzona przez pracownika Microsoft. Marc Reguera, Finance Director, poprowadzi prezentację o tym, w jaki sposób w firmie Microsoft w dziale finansowym we Francji wykorzystywane są dobrodziejstwa technologii wspierających analitykę.

Suma summarum – zapowiada się na sporą dawkę “mięska” i praktycznego ujęcia tematu. Ja już zarezerwowałem sobie czas 30 stycznia. Acha, zapomniałbym, udział w konferencji jest bezpłatny :-)

Podsumowanie roku 2012

Co roku w grudniu przychodzi moment na rachunek sumienia za ostatnie 360-kilka dni :-) Czyli na wpis podsumowujący cały rok kalendarzowy. Ten rok był dla mnie czasem próby. Ale po kolei…

Praca

W styczniu rozpocząłem pracę w polskim oddziale Microsoft na stanowisku doradcy technologicznego w kanale partnerskim. To była duża zmiana w moim życiu. W zasadzie od tamtego czasu do dzisiaj poznaję zwyczaje i procesy obowiązujące w wielkiej korporacji. Nie muszę chyba dodawać, że jest to spore wyzwanie – zrozumieją zwłaszcza ci, którzy w korporacjach pracowali/pracują :-) Łatwo nie jest. O ile Microsoft to duża i renomowana firma, co niekiedy wiele ułatwia w kontaktach z klientami i partnerami, o tyle fakt, że jest to tak duża organizacja, wymusza jednocześnie pewne procedury i zmusza do zachowania określonych i z góry narzuconych zasad działania w pracy (a czasem i poza pracą). Mówiąc po ludzku – jeśli jesteś pracownikiem firmy takiej jak Microsoft, możesz swoimi słowami i/lub czynami przyczynić się do tego, jak postrzegana jest firma (a to jest, wierzcie mi, bardzo ważne wewnątrz tej firmy), a nawet możesz zadziałać na jej korzyść lub niekorzyść.

Sama praca jest bardzo ciekawa, choć niełatwa. Dużo kontaktów z partnerami i klientami. Spotkania czysto biznesowe i dotyczące technologii. Oglądam z bliska małe, średnie i duże firmy oraz toczące się w nich projekty, w ramach których partnerzy Microsoft tworzą często naprawdę unikalne rozwiązania (a więc i nauka dla mnie się znajdzie). Poznaję problemy, które dotykają projekty, jeszcze zanim zostaną napisane pierwsze linijki kodu. I naprawdę dużo czasu spędzam nad rozwijaniem kompetencji firm partnerskich w zakresie platformy aplikacyjnej (czyli głównie SQL Server :-)).

Wiele osób wróżyło, że po pewnym czasie pracy w Microsoft będę mówił żargonem korporacyjnym. Prawda, posługuję się nim sprawnie (“reve”, “wykon” i takie tam – to mój chleb powszedni). Ale z drugiej strony wydaje mi się, że nie przenoszę tego języka poza świat korporacji – do rozmów ze znajomymi, klientami i partnerami (o ile oni sami już tym słownictwem nie operują ;-)). Aczkolwiek przyznaję, że trzyliterowe skróty w Microsoft się już kończą :-D

Poza pracą w Microsoft, w połowie roku zakończyłem trzyletnią współpracę w ramach projektu unijnego z Warszawską Wyższą Szkołą Informatyki. Zaproszony przez wielkiego zapaleńca SQL-owego, Pana Andrzeja Ptasznika (dzięki, Andrzej!), do prowadzenia zajęć z zakresu baz danych i business intelligence przez trzy lata “gnębiłem studentów” optymalizacją, programowaniem baz danych czy procesami ETL. Muszę powiedzieć, że ta praca przyniosła mi wiele satysfakcji i ciekawych znajomości (pozdrawiam dyplomantów studium podyplomowego WWSI :-)). I na pewno, jeśli jeszcze będzie okazja do współpracy z Andrzejem, nie omieszkam skorzystać. Aż dziw bierze, że na uczelniach można spotkać tylu prawdziwych pasjonatów baz danych.

Nowa pasja

Czym byłoby życie bez pasji? Moją pasją od wielu, wielu lat są i były bazy danych. “Babranie się” w danych wszelkiej maści, zgłębianie tajników systemów bazodanowych – to jest to, co mnie nadal kręci. Dzisiaj wygląda to tak, że mam na laptopie zainstalowane i skonfigurowane, oprócz dość oczywistych dwóch instancji SQL Server (2008 R2 i 2012), także serwery Oracle, MySQL i PostrgreSQL. I bynajmniej nie chodzi wyłącznie o poznawanie konkurencji (o to oczywiście też :-)), ale o zaspokojenie mojej ciekawości, o badanie możliwości, wyłapywanie co ciekawszych funkcjonalności. Dzięki temu jestem w stanie prezentować na spokojnie mocno heterogeniczne dema, w których np. proces ETL pobiera (inkrementalnie) dane z bazy Oracle lub MySQL, po drodze wykonuje czyszczenie danych, a na koniec – po odpowiednich konwersjach danych – pakuje je do bazy na SQL Server. Przednia zabawa :-)

Ale, ale… Wspomniałem o nowej pasji. Moim nowym pożeraczem czasu i zasobów (niektórzy powiedzą, że to nowe zauroczenie już chwilę trwa) jest bieganie. Najpierw chciałem wyłącznie zrzucić parę kilogramów. Próbowałem wcześniej różnych diet – zawsze z tym samym skutkiem, czyli potężnym efektem jojo :-) Tym razem skutek jest dość trwały. Odkąd w wakacje zacząłem biegać na poważnie (czytaj – pięć razy w tygodniu), zrzuciłem ponad 8 kg, a waga nie wraca (i nie zamierzam na tym poprzestać!). I, co ważne, nie stosuję żadnej specjalnej diety ;-) Dziękuję wszystkim, którzy przyczynili się do zarażenia mnie bieganiem oraz wszystkim, którzy mi dopingują w moich zmaganiach z samym sobą. Keep on running!

Społeczności

Ktoś zarzucił mi niedawno, że całkowicie “odstawiłem na bok” społeczności IT w swoim życiu. W mojej ocenie prawda jest odrobinę inna :-) Przede wszystkim, nie mam już tyle czasu, żeby mocno poświęcić się społecznościom – czytać wszystkie fora, blogi i portale, pisać artykuły, blogować, nagrywać webcasty czy prowadzić prelekcje. Ale jeżeli tylko znajdę chwilę wolnego czasu, odwiedzam forum WSS.pl, wpadam na spotkania PLSSUG w Warszawie (czasem nawet z prezentacją), czy wybieram się na konferencję tematycznie związaną z SQL-em. A więc moc jest, tylko może trochę ukryta ;-)

Cieszę się, że są już plany na przyszły rok dotyczące konferencji SQLDay i że PLSSUG, który doczekał się w końcu bycia stowarzyszeniem (gratuluję Panowie liderzy – mi zawsze brakowało odwagi, żeby zrobić ten krok), dalej działa. Na pewno, jeśli tylko czas pozwoli, będę się starał być we Wrocławiu na kolejnej edycji corocznej konferencji dla pasjonatów SQL Server. Oczywiście, niezmiennie będę stawiał się na spotkaniach warszawskiego oddziału PLSSUG. Mam nawet kilka pomysłów na prezentacje.

I wreszcie – pierwsze postanowienie noworoczne: koniecznie chcę wrócić do aktywnego blogowania. Może niekoniecznie będę pisał eseje, ale przynajmniej parę razy w miesiącu napisać coś o technologii – na to będę chciał znaleźć czas.

Postanowienia noworoczne i życzenia dla czytelników

Pierwsze postanowienie już padło. Kolejne to pobiec półmaraton (warszawski) w czasie poniżej 2h. Do zrobienia, ale jeszcze muszę potrenować. Niemniej, jestem na dobrej drodze – 21 km już jestem w stanie pobiec, nieco powyżej 2h :-)

Następne postanowienie – poznać lepiej różne platformy bazodanowe (myślę tu o wspomnianych Oracle, MySQL i PostgreSQL), a także narzędzia oscylujące wokół tematyki DW/BI i Big Data (PDW, HDInsight, StreamInsight, a z “nie-Microsoftowych” m.in. QlikView). I oczywiście, stale rozwijać wiedzę o SQL Server 2012 (tym bardziej, że w SP1 jest kilka nowych funkcjonalności).

Pewnie jeszcze parę innych postanowień by się znalazło, ale wymienione trzy przychodzą mi do głowy natychmiast.

I to na tyle mojego krótkiego podsumowania dość udanego roku 2012. Życzę wszystkim Wesołych Świąt, spędzonych w gronie bliskich osób, bez natłoku codziennych obowiązków i trosk. A na Nowy Rok, spełnienia noworocznych postanowień. W końcu, każdy z nas do czegoś dąży w życiu – oby zawsze był przed nami cel!

Pozdrawiam serdecznie i do siego roku :-)

MTS 2012 – Po konferencji + materiały z sesji o T-SQL

Konferencja MTS 2012 już za nami. Jest co wspominać. Miło było być uczestnikiem tego wydarzenia. Jak co roku, również tym razem największą wartość dla mnie miały dwie rzeczy: możliwość spotkania ludzi dzielących podobne pasje i zainteresowania (a tym razem często także i interesy!) oraz merytoryka prezentacji.

20121030_102647Zacznijmy od ludzi – tych na MTS 2012 było sporo. Nie znam dokładnej liczby uczestników, ale myślę, że kilka tysięcy ludzi związanych z IT znów odwiedziło EXPO XXI. I dobrze, bo zrobionego z większym rozmachem wydarzenia skoncentrowanego na technologiach Microsoft w Polsce po prostu nie ma. I tak, spotkałem wielu znajomych ze społeczności (MVP, liderzy grup, ludzie z portali WSS/CG), licznych partnerów w biznesie (choćby pracowici koledzy z firm Bonair i ITMagination w butiku ATE – pozdrawiam i miło było Was poznać), klientów. Każda przerwa była dobrze spędzonym czasem, pełnym dyskusji o technologii, rozwoju branży, problemach dzisiejszego IT. Bezcenne.

20121030_122846Merytoryka. Będąc po raz XYZ na wielkiej konferencji człowiek ogląda prezentacje przez odrobinę inny pryzmat. Liczy się to, jak dużo wysiłku prelegenci włożyli w przygotowanie sesji, jak niebanalne są przemyślenia i wnioski prezentowane w czasie sesji. Taki Grzesio Tworek na przykład. Facet specjalnie pożyczył serwer i na nim siał spustoszenie maszynami wirtualnymi na Hyper-V 3.0. W dodatku mądrze serwował swoje “manadżerskie” wizje na temat teraźniejszości i przyszłości wirtualizacji. Wielki szacunek. Podobnie Tomek Onyszko, który w ferworze walki miał pozakładane tyle maszyn wirtualnych do pokazywania swojego ulubionego AD (tym razem na Windows Server 2012), że aż dopadli go Demo Gods ;-) Nie muszę dodawać, ze obaj Panowie poparli pracowicie przygotowane dema doskonałym warsztatem prezenterskim. Podobały mi się też sesje o Windows 8 – Mariusz Kędziora nie przynudzając zrobił dobrą sesję o ciekawostkach i “what’s new”, a Bartek Zass i Tomek Wiśniewski opowiedzieli programistom, jak zarabiać na tworzeniu aplikacji na Windows 8 i jak te aplikacje produkować. Kawał dobrej roboty. Żałuję wielce, że nie udało mi się dotrzeć na sesję Pauli Januszkiewicz, która to sesja z relacji naocznych świadków była ponoć – cytuję – “absolutnym numerem jeden”. No cóż, czemu mnie to nie dziwi :-) W końcu gość specjalny konferencji!

Co do sesji SQL-owych – nie byłem na żadnej (poza sesją Marka Adamczuka i moją), ale też słyszałem pochlebne opinie, choćby o prezentacji Daniela Araka i Radka Łebkowskiego n/t Business Intelligence. Jestem pewien, że cała paczka “SQL-owców” – Marcin Szeliga, Łukasz Grala, Damian Widera, Radek Kępa i Piotrek Dragan (chyba nie pominąłem nikogo?) – też dała radę!

20121030_130728Ja i Marek mieliśmy trudne zadanie. Zainteresowanie naszą sesją przerosło nasze najśmielsze oczekiwania. W sali A, która mieści zdaje się 3000 ludzi (!!!), była naprawdę pokaźna liczba słuchaczy. Dziękuję w imieniu swoim i Marka za takie zaufanie! Czy nie zawiedliśmy oczekiwań? Trudno mi ocenić. To już wiedzą tylko ci, co byli i nas wysłuchali. Zadanie mieli niełatwe, jako że na wielkiej sali śledzić przez godzinę kod T-SQL na dużych, acz jednak męczących wzrok ekranach, to spore wyzwanie. I jeszcze pora dnia – godzina 17, po kilku obejrzanych sesjach tego dnia. Tym większe nasze uznanie dla tych, którzy wytrwali do samego końca. Okazało się, że 60 minut to dla wielu prelegentów (także dla nas) po prostu za mało czasu. Chciałoby się “mięsko” serwować nieco dłużej. No cóż, przedłużyliśmy jedynie o 5 minut. I tak mieliśmy okrojone demonstracje :-) Mam nadzieję, że materiał z prezentacji się przyda. Linki do pobrania prezentacji i skryptów zamieszczam poniżej, a także w dziale Zasoby na moim blogu. Przy okazji dziękuję tym, którzy zechcieli ocenić naszą sesję wypełniając ankietę oraz wszystkim, którzy ankietę jeszcze wypełnią – tylko dzięki Wam możemy dowiedzieć się, co możemy poprawić w naszych przyszłych prezentacjach.

I to chyba na tyle. Nie mogę doczekać się już następnej konferencji MTS. Liczę, że będę miał okazję się na niej pojawić i że odbędę tyle ciekawych dyskusji o życiu i technologii.

Pobierz slajdy z sesji “SQL Server 2012 – nowe elementy języka T-SQL w praktyce”

Pobierz dema z sesji “SQL Server 2012 – nowe elementy języka T-SQL w praktyce”