Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

[PL] Konkurs "Co to za query" - nagrody

Zgodnie z obietnicą czas na opublikowanie listy nagród dla najlepszych 10-ciu uczestników konkursu "Co to za query".

I tak:

Miejsce 1 – Plecak z MTS 2008 + książka + polar + niespodzianka

Miejsce 2 – Plecak z MTS 2006 lub 2005 + książka + polar

Miejsce 3 – Plecak z MTS 2006 lub 2005 + książka

Miejsca 4-6 – książka + etui na płyty

Miejsca 7-10 – książka

Dodatkowo każdy zawodnik z pierwszej dziesiątki otrzyma płytę IT ShowTime z nagranymi prezentacjami z dużych konferencji MS.

Zadowoleni? :-)

To teraz lista książek (wybór będzie się odbywał wg kolejności w ostatecznym rankingu konkursu):

Ładny zestawik? Część książek może i wiekowa, ale sporo bestsellerów :-) Mam nadzieję, że to jeszcze mocniej zmobilizuje Was do walki o pierwsze miejsce w konkursie ;-)

Powodzenia!

opublikowano przez brejk | 1 komentarzy

[PL] Konkurs "Co to za query" – etap 1 z 3

Igrzyska czas zacząć :-)

Zgodnie z zapowiedziami ogłaszam konkurs "Co to za query". Rozgrzewka do konkursu pokazała, że jest parę osób zainteresowanych zabawą, stąd kontynuacja tematu. Z grubsza konkurs polega na układaniu zapytań do podanych planów wykonania. Nic wielce trudnego, a zabawa ponoć przednia (nie wiem, nie brałem udziału ;-)).

[Kliknij tu, jeśli chcesz przejść od razu do zadań]

Know-How - regulamin

Większość konkursów ma swój regulamin, więc i ja uknułem w głowie jakieś małe FAQ / Know-How / Rules dla mojego konkursu. Warto ten fragment przeczytać dokładnie, by potem uniknąć zbędnych nieporozumień i by po prostu dobrze się bawić. A zatem:

  1. Konkurs jest organizowany przeze mnie – Pawła Potasińskiego (pawelp [at] plssug [dot] org [dot] pl). Sam tworzę zadania, sam je sprawdzam i sam przyznaję laury w konkursie (zatem mamy tu single point of failure, jakby co) :-) Jestem nieprzekupny, a w konkursie nie bierze udziału moja rodzina i krewni :-P
  2. Konkurs jest podzielony na 3 etapy.
  3. Każdy etap składa się z 4 zadań.
  4. Każde zadanie polega na ułożeniu zapytania, które wyprodukuje zadany plan wykonania (plany wykonania dostarczam w postaci plików .sqlplan). Dane liczbowe dotyczące statystyk wykonania należy pominąć (nie są one istotne z punktu widzenia konkursu). Liczą się poszczególne elementy planów (operatory, ich opis – predykaty, filtry, listy kolumn, etc.).
    Zaznaczam, że niektóre elementy planów są widoczne dopiero w definicji XML, a nie są widoczne na graficznej reprezentacji planów (a są też i takie elementy, które są dowolne, bo nie znajdziecie ich nigdzie w planach).
  5. Za każde zadanie uczestnik otrzymuje punkty – zero punktów lub ilość punktów przypisaną do zadania. Aby otrzymać punkty za zadanie, zapytanie musi generować plan wykonania odpowiednio identyczny z zadanym .
  6. Wszystkie zapytania należy testować na bazie danych AdventureWorks2008 (nie AdventureWorks!) postawionej na instancji SQL Server 2008. Tak, oznacza to, że w zadaniach mogą być użyte funkcjonalności SQL Server 2008.
  7. Zadania do każdego etapu będą pojawiały się co poniedziałek począwszy od dzisiaj – 11 maja 2009 (czyli ostatnia porcja zadań pojawi się 25 maja).
  8. Na wykonanie zadań z każdego etapu uczestnik ma tydzień (do następnego poniedziałku do końca dnia).
  9. Odpowiedzi do każdego etapu należy wysłać jeden raz w postaci jednego pliku .sql zawierającego zapytania - odpowiedzi do etapu na adres pawelp [at] plssug [dot] org [dot] pl (tytuł wiadomości niech będzie Co to za query).
    W przypadku nadesłania więcej niż jednej wiadomości (dosyłania odpowiedzi), honoruję tylko pierwszą wiadomość.
  10. Aktualne wyniki konkursu po poszczególnych etapach będę publikował w każdą środę począwszy od 20 maja.
  11. Zwycięzcą zostaje osoba z największą ilością punktów po trzech etapach. Nie ma lotnych premii ani zwycięzców etapów :-)
  12. W przypadku takiej samej liczby punktów o kolejności w końcowej klasyfikacji decyduje łączny czas, po którym uczestnik nadesłał rozwiązania do wszystkich etapów.
  13. Wszelkie pytania, uwagi, reklamacje (tych się raczej nie spodziewam?) zgłaszaj na adres pawelp [at] plssug [dot] org [dot] pl.

Samo mięsko czyli zadania do 1. etapu

Zadanie 1 - "Weterani" – 10 punktów

Zadanie 2 - "Złap vendora" – 15 punktów

Zadanie 3 - "Piramida" – 20 punktów

Zadanie 4 - "Los szczęścia" – 25 punktów

Nagrody

Wiem, że jeśli bierzesz udział w konkursie, to na pewno nie dla nagród, ale dla dobrej zabawy. Jednak postanowiłem, że nagrodzę tych, co popracują nad moimi zadaniami najciężej. Pełną listę nagród ogłoszę pod koniec tego tygodnia, ale już teraz daję znać, że nagrodami będą m.in.:

  • książki wydawnictwa MSPress (seria Inside SQL Server 2005),
  • książki wydawnictwa APress (głównie książki dotyczące SQL Server 2008),
  • plecaki z MTS 2005 / 2006 / 2008,
  • odzież firmowana przez Microsoft (polary, koszulki, etc.),
  • gadżety sponsorowane przez Microsoft (jest tego tyle, że na razie robię inwentaryzację :-)).

Zamierzam nagrodzić co najmniej 10 uczestników konkursu (a jak będzie większe zainteresowanie i starczy mi gadżetów, to może i więcej).

Pamiętaj jednak, że nie mam wsparcia od MS w kwestii organizacji konkursu i bynajmniej nie jest to zabawa choćby zbliżona rozmachem do Quizu 2008 organizowanego w zeszłym roku przez Grzesia Tworka :-)

Go get them tiger!

Do dzieła więc i czekam na pierwszych śmiałków :-) I pamiętaj, liczy się przede wszystkim dobra zabawa!

opublikowano przez brejk | 32 komentarzy

[PL] Niech moc będzie z nami :-)

Uch, takiej porcji energii dawno nie miałem, a chyba potrzebowałem. Wczorajsze 34. spotkanie Polskiej Grupy Użytkowników SQL Server w Warszawie dostarczyło mi powera w ilości naprawdę niespotykanej. Wiedziałem, że spotkanie na pewno będzie udane, bo prelegenci byli nietuzinkowi, a tematy "piękne" i "odlotowe" :-) Ale nie spodziewałem się, że na spotkanie stawi się ponad 50 osób! Mało tego, te ponad 50 osób było zainteresowanych tematami i chętnie brało udział w dyskusjach. Żałuję, że nie z każdym udało mi się zamienić słowo, bo w sumie przerwy były może i za krótkie, ale następnym razem postaramy się to zmienić ;-)

Rety, a więc są jeszcze ludzie, którzy chcą rozmawiać i słuchać o SQLu :D Wszyscy razem daliście mi zastrzyk energii, który wykorzystam do działania ku chwale społeczności SQL-owej :-) Czuję się zmotywowany do działania, jak rzadko. Dzięki Wam za to i liczę, że spotkamy się na kolejnym spotkaniu PLSSUG już za miesiąc :-)

Poniżej fotka ze spotkania (jedyna i robiona komórką, ale musiałem mieć pamiątkę z tego wyjątkowego spotkania).

029

opublikowano przez brejk | 0 komentarzy

[EN] European PASS Conference 2009 – The Teamwork

Yeah, European PASS Conference 2009 is behind now. Some stories are in the memories of the attendies. Some photos were taken and are available now. Some networking was done.

I did not come to Dusseldorf (Neuss) this year. It does not matter what the reason was. I really regret I could not be there. But at the same time I’m really happy that I was a part of The Team, and that Dagmara Sitek attended the conference (she deserved it much as one of the most active volunteers in Polish SQL Server User Group). Big thanks to Christoph Stotz, Charley Hanania, Bjorn Klotz and other fellows from the crew. I’ve learned many lessons since we began to organize all the things around the conference. And I will use this knowledge for my future works as a member of any event committee :-)

Some quick thoughts on the subject:

  • Marketing - you do much and get little (oh, yes!).
  • Never assume user group leaders are as active as you would like them to be…
  • Any number of e-mail messages is worst than one good phone call :-)
  • One e-mail message can do the thing when you hit a responsive leader :-)
  • Calls, calls, calls – our every Monday calls were something keeping us alive and hard working!
  • Economic crisis is nothing against the passion for technology :-)

And, last but not least – thanks for the boat :D I put a photo of this nice little thing just to say - "folks, we’ve done The Real Teamwork!".

image

opublikowano przez brejk | 0 komentarzy

[PL] Odloty w T-SQL – OPENROWSET (nie) tylko dla bogów

Wczoraj bawiłem w Chorzowie na spotkaniu Śląskiej Regionalnej Grupy Microsoft. Spotkanie zapowiadało się świetnie, bo najpierw Marek Adamczuk miał pokazywać odloty w T-SQL, a następnie Maciek Pilecki zapowiedział się z sesją o tym, na co należy uważać używając funkcji w SQL Server. Sam miodek jednym słowem.

Na skutek tego, że spóźniliśmy się z Markiem i Dagmarą na spotkanie (hihi, pojechaliśmy do Katowic, zamiast do Chorzowa), kolejność prezentacji uległa zamianie – pierwszy wystąpił Maciek.

Nie chcę tu opisywać spotkania, bo bym musiał esej wysmażyć :-) Więc pokrótce tylko…

Maciek jak zawsze dał czadu i nie ma co tu w zasadzie pisać – jeśli będziecie mieli okazję obejrzenia jego prezentacji o funkcjach, to się nie wahajcie i idźcie zobaczyć. Top speaker w pełni formy po prostu.

O sesji Marka pisać mi nie wypada, bo już za tydzień będzie można ją obejrzeć w Warszawie. Ale wierzcie mi, że warto tę prezentację zobaczyć. W czasie tej sesji Maciek Pilecki wspomniał, że bardzo by chciał dowiedzieć się, jak można dobrać się do niskopoziomowych metadanych SQL Servera 2005/2008. Konkretnie chodziło o zapytania z użyciem OPENROWSET i providera TABLE – składni, którą Microsoft wykorzystuje w obiektach systemowych (m.in. w widokach dynamicznych). Maćku, mówisz i masz :-)

Problem okazuje się mieć banalne rozwiązanie, wystarczy uruchomić SQL Server w trybie pojedynczego użytkownika, czyli:

1. Zatrzymujemy usługę SQL Servera.

2. Znajdujemy właściwy plik sqlservr.exe (u mnie dla domyślnej instancji znajduje się on w %Program Files%\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn).

3. Uruchamiamy w konsoli cmd aplikację sqlservr.exe z przełącznikiem –m (single-user mode).

4. Logujemy się do instancji za pomocą SSMS (nie trzeba już DAC-a, pewnie dlatego, że i tak tylko sysadmin może się podłączyć) i uruchamiamy na przykład:

SELECT * FROM OPENROWSET(TABLE DBPROP, 1)

I cieszymy oko wynikiem mówiącym o właściwościach bazy master :-)

Nie bez powodu pytałem na spotkaniu, co będzie nagrodą dla śmiałka, który znajdzie rozwiązanie problemu :D Oczywiście, następnym krokiem może być próba znalezienia takiego rozwiązania problemu, w którym nie trzeba uruchamiać SQL Servera w trybie pojedynczego użytkownika. Ale to wydaje się już dużo trudniejsze, jeśli nie niemożliwe.

Serdecznie zapraszam na 34. spotkanie PLSSUG Warszawa i sesję Marka Adamczuka o odlotach w T-SQL. Będzie totalny odlot!

opublikowano przez brejk | 1 komentarzy
Filed under: , ,

[PL] SteveB, Codecamp – czyli z życia geeka

W końcu zebrało się dużo danych do przetworzenia i jest z czego zrobić notkę, którą i tak zamierzałem napisać :-) Przeczytałem liczne wypowiedzi tych, co byli na spotkaniu ze Stevem Ballmerem i w pełni zgadzam się zwłaszcza z opiniami, że pytania mogły być otwarte i zadawane ad-hoc, co pokazałoby w pełni potencjał Steve’a. To prawda, że było ciut za krótko, ale po tym, co widziałem na poprzednim (dość ekskluzywnym, dodam) spotkaniu z CEO MS, nie spodziewałem się dłuższej pogawędki :-)

Ale ja nie o tym…

SteveB

Zadałem pytanie Steve’owi. Wow. Nawet nam nieźle wyszedł mini-dialog (zostałem posądzony o testowanie jego inteligencji ;-)). Steve poprosił o rozwinięcie tematu na maila. Hmmm… Co było robić – napisałem, a co! Niech wie, że Polacy nie rzucają słów na wiatr ;-) Opisałem mu pokrótce wizję lepszego świata dla programistów SQL Servera i główny problem, z którym borykam się u klientów (i nie tylko ja się z tym borykam). Na odpowiedź nie liczyłem, ale niech przynajmniej wie, że się przyłożyłem. Nie spróbować napisać byłoby grzechem. Minął weekend.

I wiecie co? Odpisał mi :-) I nie ma dla mnie znaczenia to, że Steve zastosował "spychologię stosowaną", czyli załączył w CC kogoś z "korpa", który potem załączył kogoś następnego i tak dalej :-) Najważniejsze, że okazało się, że mój napisany w pocie czoła mail nie trafił w próżnię. Nie wiem, czy coś wskóram, nie wiem, czy uda się cokolwiek zasugerować ludziom decydującym o przyszłości produktu, z którym na co dzień pracuję. Tego nie wiem. Ale powiem tak – ten mail od Steve’a jest budujący, bo to więcej, niż się spodziewałem ;-) Thank you, Steve.

A teraz z innej beczki…

CodeCamp w Krakowie

Banner CodeCamp'09

Jak widać na powyższym banerku, w dniach 30-31 maja br. w Krakowie dojdzie do arcyciekawego wydarzenia z punktu widzenia społeczności .NET i SQL. Dwudniowy zlot pasjonatów, weekend wokół technologii. I ja tam będę. Jeszcze nie wybrałem tematu sesji, ale zrobię to na dniach. SQL będzie drugiego dnia, a .NET pierwszego. Znając organizatorów, szczególnie Szymona Kobalczyka, oraz krakowską gościnność, wszystko będzie dopięte na ostatni guzik i zapowiada się naprawdę niezła impreza. Jeśli masz blisko do grodu Kraka lub po prostu pasjonujesz się jedną ze wspomnianych technologii (obiema?), nie przegap tej konferencji.

Więcej o wydarzeniu na www.codecamp.pl.

Ja już dodałem wlepkę "Będę na CodeCamp" na blogu. Dodaj i Ty :-)

opublikowano przez brejk | 4 komentarzy

[PL] 34. spotkanie PLSSUG Warszawa – piękno i odloty

20090507_34_spotkanie

 

W imieniu swoim oraz prelegentów mam przyjemność zaprosić na 34. spotkanie warszawskiego oddziału Polskiej Grupy Użytkowników SQL Server (PLSSUG). Spotkanie rozpocznie się 7 maja o godzinie 18:00 w siedzibie firmy Microsoft (Al. Jerozolimskie 195A) w Warszawie. Czas trwania spotkania: mniej więcej trzy godziny. Wstęp na spotkanie wolny.

Tematy przewodnie spotkania to: "ładne bazy danych" oraz "odloty w T-SQL". Tematy, przyznaję, dość niecodzienne, ale jakże interesujące. A jeśli dodam, że prelegentami będą...

Wojciech Sawicki (SIMPLE S.A) – doświadczony programista systemów ERP, ekspert od przyciągania uwagi słuchacza niebanalnym przekazem swych wieloletnich doświadczeń,

oraz

Marek Adamczuk (Asseco Business Solutions S.A.) – podobnie jak Wojtek, wyjadacz w świecie ERP, guru T-SQL, człowiek, który R&D uprawia w czasie przeznaczonym na kawę i wypoczynek,

to chyba nie muszę nikogo dodatkowo zachęcać do przyjścia!

A jeśli do tego dodam, że na spotkaniu oficjalnie ogłoszę rozpoczęcie konkursu "Co to za query" oraz że Hubert Kobierzewski rozpocznie cykl comiesięcznych mini-prezentacji "Indeksy od A do Z", to wydaje mi się, że każdy geek SQL-owy w stolicy znajdzie chwilę, by zajrzeć do siedziby MS:-)

Szczegółowa agenda 34. spotkania PLSSUG Warszawa

Zapraszam w imieniu Polskiej Grupy Użytkowników SQL Server!

Więcej o PLSSUG można przeczytać na witrynie grupy: http://plssug.org.pl.

W razie pytań proszę o kontakt na adres pawel.potasinski [ at ] plssug.org.pl.

opublikowano przez brejk | 1 komentarzy

[PL] Policy-Based Management – warunek nie dla filtrów

Siedząc w firmie nad materiałami do szkolenia z SQL Server 2008 dla moich współpracowników, natknąłem się na pewien problem, którego nie udało mi się przeskoczyć.

Chciałem użyć mechanizmów Policy-Based Management do sprawdzania pewnego warunku na bazach danych, ale tylko dla baz danych spełniających określony przeze mnie warunek. Tym warunkiem miało być istnienie w bazie danych obiektu o wskazanej nazwie.

Zacząłem od stworzenia warunku do sprawdzania wybranej przeze mnie właściwości. To było proste i każdy chyba sobie z tym poradzi bez problemu. W Management Studio w oknie Object Explorer należy kliknąć prawym przyciskiem myszy na Management – Policy Management – Conditions i wybrać z menu kontekstowego New Condition…

Warunek założyłem taki:

image

Łatwizna :-)

Teraz zakładam drugi warunek, który w zamierzeniu ma mi posłużyć do filtrowania baz danych.

image

No, ten warunek już jest nieco bardziej "fikuśny", bo użyłem w nim wyrażenia z użyciem dostępnego mini-języka skryptowego używanego przez Policy-Based Management :-) Ale generalnie jest to sprawdzenie, czy w bazie danych istnieje obiekt o nazwie ufn_GetVersion.

Po wykonaniu tych kroków przyszedł czas na założenie polisy. Klikam więc prawym przyciskiem myszy na Management – Policy Management – Policies i wybieram New Policy…

image

I kiszka – nie widzę na liście warunków, których mógłbym użyć do filtrowania baz danych, mojego warunku na istnienie obiektu… Pierwsza myśl - "nie da się". Druga myśl - "a może to wina GUI?". Zeskryptowałem więc powyższą polisę (używając przycisku Script widocznego na powyższym rysunku. Wyleciało mi przed oczy coś takiego:

   1: DECLARE @object_set_id INT
   2: EXEC msdb.dbo.sp_syspolicy_add_object_set @object_set_name = N'Database Owner Must Be sa AND _ObjectSet',
   3:   @facet = N'Database', 
   4:   @object_set_id = @object_set_id OUTPUT
   5: SELECT
   6:   @object_set_id
   7:  
   8: DECLARE @target_set_id INT
   9: EXEC msdb.dbo.sp_syspolicy_add_target_set @object_set_name = N'Database Owner Must Be sa AND _ObjectSet',
  10:   @type_skeleton = N'Server/Database', 
  11:   @type = N'DATABASE', 
  12:   @enabled = True,
  13:   @target_set_id = @target_set_id OUTPUT
  14: SELECT
  15:   @target_set_id
  16:  
  17: EXEC msdb.dbo.sp_syspolicy_add_target_set_level @target_set_id = @target_set_id,
  18:   @type_skeleton = N'Server/Database', 
  19:   @level_name = N'Database',
  20:   @condition_name = N'', 
  21:   @target_set_level_id = 0
  22: GO
  23:  
  24: DECLARE @policy_id INT
  25: EXEC msdb.dbo.sp_syspolicy_add_policy @name = N'Database Owner Must Be sa WHERE Object Exists',
  26:   @condition_name = N'Database Owner Must Be sa', 
  27:   @execution_mode = 0,
  28:   @policy_id = @policy_id OUTPUT,
  29:   @object_set = N'Database Owner Must Be sa AND _ObjectSet'
  30: SELECT
  31:   @policy_id
  32: GO

Moją uwagę przykuła linia 20. Ha! A może w kodzie się to da zrobić! Zmodyfikowałem więc linię 20, by wyszło:

  20:   @condition_name = N'Database Has Object Named ufn_GetVersion', 

a następnie uruchomiłem całość i o dziwo… poszło!

Zadowolony wypróbowałem nowo utworzoną polisę klikając prawym przyciskiem na mojej polisie (najpierw trzeba było odświeżyć widok w Object Explorerze, bo oczywiście polisa się nie pojawiła) i wybierając Evaluate. Niestety, odpowiedź polisy nie była taka, jakiej się spodziewałem…

image

Próbowałem namierzyć polecenie T-SQL, na którym wywraca się polisa, ale poległem. Przezornie zajrzałem więc do okienka właściwości warunku, którego "nielegalnie" użyłem do filtrowania baz danych i zobaczyłem takie coś:

image

Komunikat w górnej części okna rozwiał moje wątpliwości. Się nie da się :-)

I teraz ciekawostka – Marek Powichrowski, który był tak miły i przetestował problem, zauważył, że warunki budowane na wyrażeniach, daje się zastosować do filtrowania serwerów! Co tu jest grane? Mała niekonsekwencja, rzekłbym.

Jeśli ktoś potrafi znaleźć workaround dla pokazanego problemu, niech da znać. A może w dokumentacji komuś uda się znaleźć zdanie, które jednoznacznie powie, że warunki oparte na wyrażeniach nie mogą być używane do filtrowania?

Samo Policy-Based Management bardzo mi się podoba. Ale chciałbym mieć pewność, że daje się budować swobodnie warunki i używać ich wedle mojego uznania, a nie wedle uznania SQL Servera :-)

Na koniec małe repozytorium materiałów autorstwa Damiana Widery na temat Policy-Based Management:

Akademia SQL - Część 1: Policy Based Management

SQL Server 2008 – Declarative Management Framework krok po kroku

C2C'08 - Damian Widera - Microsoft SQL Server 2008 Policy-Based Management na zewnątrz i od środka

opublikowano przez brejk | 2 komentarzy

[PL] Rozgrzewka przed "Co to za query" - odpowiedzi

Poniżej odpowiedzi do zadań z rozgrzewki przed konkursem "Co to za query". Opublikowałem już Hall of Fame rozgrzewki. Samych zadań chyba nie ma co komentować, ponieważ były naprawdę proste.

-- Zadanie 1
SELECT Title + ' ' + FirstName + ' ' + LastName
FROM Person.Person
WHERE Title IS NOT NULL

-- Zadanie 2
SELECT H.SalesOrderID, SUM(D.LineTotal) AS SalesAmount
FROM Sales.SalesOrderHeader AS H
INNER JOIN Sales.SalesOrderDetail AS D
ON H.SalesOrderID = D.SalesOrderID
GROUP BY H.SalesOrderID
HAVING SUM(D.LineTotal) > 150000

-- Zadanie 3
SELECT P.Name, dbo.ufnGetStock(P.ProductID) AS Stock
FROM Production.Product AS P
ORDER BY 2 DESC

-- Zadanie 4
SELECT COUNT(*)
FROM HumanResources.Employee
WHERE OrganizationNode.IsDescendantOf(0x) = 1
AND LoginID LIKE 'adventure-works\a%'

Stay tuned – konkurs rozpocznie się po 10 maja. Prawdziwe emocje dopiero przed nami ;-)

opublikowano przez brejk | 3 komentarzy

[PL] Społeczności "po nowemu"

Po paru tygodniach od złożenia obietnicy (po raz pierwszy projekt ujrzał światło dzienne na spotkaniu MVP Open Days, które odbyło się w tym roku w Kazimierzu Dolnym) Microsoft Polska oddał w ręce internautów nową wersję witryny http://www.microsoft.com/poland/communities. Witryna ma nowy layout, nowe – zaktualizowane – informacje o społecznościach, a nawet menu w technologii Silverlight ;-) Można się z niej dowiedzieć, gdzie funkcjonują jakie grupy pasjonackie, kiedy odbywają się spotkania tych grup, jak założyć własną grupę. Znalazły się na tej witrynie także informacje o portalach WSS.pl i CodeGuru.pl oraz o programie MVP.

Dla mnie najważniejszy nie jest nowy layout witryny, ale to, że być może tym razem Microsoft Polska będzie bardziej dbał o to, by informacje na witrynie były zawsze aktualne. Trzymam kciuki, żeby tak właśnie było i w razie czego oferuję swoją pomoc przy aktualizowaniu treści na witrynie :-)

opublikowano przez brejk | 6 komentarzy

[PL] Rozgrzewka przed "Co to za query" – Hall of Fame

Mamy już pierwszego zwycięzcę rozgrzewki przed konkursem "Co to za query"!!!

Najszybciej zadania rozwiązał Marek Konitz. Gratulacje!

Poniżej tabela zwycięzców rozgrzewki. Będę ją uzupełniał o nowych uczestników w miarę, jak będziecie nadsyłać rozwiązania zadań :-) Dla pierwszych 3 osób gadżety są pewne. Dla następnych dwóch – prawie pewne ;-)

[EDIT] Jest i drugi śmiałek - Grzesiek Domański. Brawo. [/EDIT]

[EDIT] Trzecie i czwarte miejsca też zajęte! Dwóch Panów - Marek Powichrowski i Michał Krużel (mam nadzieję, że dobrze napisałem nazwisko) - też dało radę! [/EDIT]

[EDIT] No i wszystko jasne :-) Artur Stanaszek jest piątą osobą, której udało się załapać do pierwszej piątki. Gratulacje dla wszystkich pięciu zwycięzców rozgrzewki! Nagrody niech pozostaną niespodzianką :-) Konkurs rozpocznie się 11 maja. Reguły będą znane w weekend 9-10 maja. Dziękuję za zainteresowanie moją ideą ;-) 

Zapytania będące rozwiązaniami zadań zaprezentuję po Świętach Wielkanocnych. A tymczasem Wesołego Jajka ;-)[/EDIT]

Wciąż jest o co walczyć - piąte miejsce jest nagradzane!

Rozgrzewka przed "Co to za query"  - Hall of Fame

  1. Marek Konitz (na WSS.pl jako pegaz_mk) – 4 poprawne odpowiedzi nadesłane 2009-04-09 09:13
  2. Grzegorz Domański (na WSS.pl jako stasiek.d) - 4 poprawne odpowiedzi nadesłane 2009-04-09 14:40
  3. Michał Krużel (na WSS.pl jako jordanski) - 4 poprawne odpowiedzi nadesłane 2009-04-09 14:56
  4. Marek Powichrowski - (na WSS.pl jako marekpow) 4 poprawne odpowiedzi nadesłane 2009-04-09 17:45
  5. Artur Stanaszek - 4 poprawne odpowiedzi nadesłane 2009-04-09 21:21
opublikowano przez brejk | 2 komentarzy

[PL] "Co to za query?" – przygrywka do konkursu

Krok 0. Idea

Jakiś czas temu przyszło mi do głowy, że fajnie byłoby urządzić mały konkurs, którego celem byłoby układanie zapytań do podanych planów wykonania. Celem takiego konkursu byłoby poznanie elementów planów wykonania (zarówno graficznych planów, jak i ich reprezentacji XML). Jak takie układanie zapytań mogłoby wyglądać? Przykład.

Dostajesz plik .sqlplan, który po otwarciu w SQL Server Management Studio wygląda tak:

image

To, czego na tym planie nie ma, to samo zapytanie (dzięki temu zabawa jest możliwa). Oczywiście, na pierwszy rzut oka nie widać wszystkiego, więc najeżdżasz kursorem myszy na ikonkę oznaczającą skanowanie indeksu (pierwsza od prawej) i widzisz na przykład:

image

Dalej już jest łatwo (choć dla pełnego obrazu lepiej zawsze obejrzeć strukturę XML pliku .sqlplan). Wiesz, z jakiej tabeli pobrano dane oraz jakie kolumny zostały wybrane (Output List na rysunku powyżej). Wychodzi na to, że powyższy plan może być wygenerowany dla zapytania:

SELECT * FROM HumanResources.Department

To oczywiście zapewne nie jedyne zapytanie, dla którego ów plan mógł zostać wygenerowany, ale ten fakt tylko powoduje, że zabawa może być jeszcze lepsza ;-)

Ten banalny przykład pokazuje ideę. Oczywiście docelowo stopień komplikacji zapytań będzie większy :-)

Krok 1. Materiały

"No dobra" – mógłby ktoś powiedzieć - "Ale co, jeśli nie znam się na planach wykonania zapytań?". To może czas zacząć się znać choć trochę? ;-) Materiałów jest sporo. Zacząć można od e-booka "Dissecting SQL Server Execution Plans" autorstwa Granta Fritchey’a. Bardzo dobre objaśnienia zawierają też książki z serii "Inside SQL Server 2005" (lub 2008). A i tak zawsze można sięgnąć do korzeni, czyli do Books Online.

Krok 2. Rozgrzewka

Czas na rozgrzewkę. Od tego, czy znajdą się zapaleńcy chętni do zabawy, uzależniam, czy dojdzie do kroku 3. czyli do konkursu :-)

Zasady rozgrzewki:

  • instalujesz SQL Server 2008 oraz bazę danych AdventureWorks2008 (wszystkie zapytania są wykonywane na tejże bazie, ewentualnie można użyć bazy AdventureWorks na SQL Server 2005, ale nie gwarantuję sukcesu),
  • ściągasz plik (pliki) .sqlplan,
  • oglądasz je w Management Studio (lub jakkolwiek inaczej, możesz równie dobrze przeglądać kod XML w Notatniku),
  • jeśli masz propozycję zapytań, dla których zostały wygenerowane podane plany, piszesz do mnie maila na adres pawelp@plssug.org.pl (jako tytuł maila podaj: Co to za query - rozgrzewka), w treści maila podajesz kody T-SQL zapytań, dla których udało Ci się rozwiązać zadanie,
  • nie psuj zabawy innym i nie pisz rozwiązań w komentarzu do tej notki,
  • jako dobrą odpowiedź do zadania rozumiem zapytanie, które wygeneruje zadany plan wykonania w sensie operatorów, predykatów, output list etc. – dane liczbowe ilustrujące statystyki wykonania zapytania mnie nie interesują.

Na najszybszych, najaktywniejszych i oczywiście na najlepszych zawodników biorących udział w rozgrzewce czekają niespodzianki ;-)

Zadania na rozgrzewkę:

Poniżej 4 proste zadania na rozgrzewkę. Naprawdę proste. Nie powinno być problemów z ich rozwiązaniem. Jak okaże się, że zabawa jest fajna, napoczniemy konkurs i kolejne zadania będę publikował cyklicznie powiedzmy po 1-2 tygodniowo.

[Zadanie 1] – "Panie i Panowie"
[Zadanie 2] – "Zakupy VIP-ów"
[Zadanie 3] – "W magazynie"
[Zadanie 4] - "Licznik władzy"

A zatem… Zachęcam do wzięcia udziału w rozgrzewce!

Na odpowiedzi na zadania z rozgrzewki czekam aż do końca miesiąca kwietnia (data może ulec zmianie – na skutek wcześniejszego ogłoszenia zwycięzców tej fazy konkursu).

Krok 3. Konkurs

Jak napisałem w kroku 3. – to, czy dojdzie do konkursu (choć i za rozgrzewkę można jakiś gadżecik capnąć ;-)), zależy od Was :-) Jeśli okaże się, że nie ma chętnych do zabawy, potencjalne nagrody (książki, plecaki MTS, inne fajne zabawki) rozejdą się jak bułeczki na spotkaniach PLSSUG Warszawa :-)

A zatem Wesołych Świąt Wielkanocnych i udanego polowania na zapytania ;-)

[EDIT] Podziękowania dla Marka Powichrowskiego za zwrócenie mi uwagi na nieprawidłowy format pliku do zadania 2. [/EDIT]

opublikowano przez brejk | 16 komentarzy

[PL] 33. spotkanie PLSSUG Warszawa – BI tips & tricks

20090327_33_spotkanie

 

Serdecznie zapraszam wszystkich zainteresowanych szeroko pojętą tematyką Business Intelligence na 33. spotkanie warszawskiego oddziału Polskiej Grupy Użytkowników SQL Server (PLSSUG). Spotkanie rozpocznie się 2 kwietnia o godzinie 18:00 w siedzibie firmy Microsoft (Al. Jerozolimskie 195A) w Warszawie. Czas trwania spotkania: mniej więcej trzy godziny. Wstęp na spotkanie wolny.

Tematem przewodnim spotkania będą triki i najlepsze praktyki w Reporting Services oraz MDX, a więc tematyka Business Intelligence.

Prelegentami na spotkaniu będą:

Radosław Łebkowski (Microsoft) - swego czasu lider PLSSUG, obecnie wspiera największych klientów firmy Microsoft wykorzystujących rozwiązania BI oparte o SQL Server

Daniel Arak (ITMagination) -  ekspert w dziedzinie Business Intelligence, cały czas aktywny trener Microsoft (MCT), pasjonat języka MDX i wszelkich nieszablonowych rozwiązań BI realizowanych w SQL Server.

W trakcie spotkania będzie też okazja do, tak cenionego przez członków naszej grupy, networkingu. Ludzie + pasja + technologia – suma tych składników decyduje o tym, że takie spotkania są dla wielu osób atrakcyjne.

Szczegółowa agenda 33. spotkania PLSSUG Warszawa

Zapraszam w imieniu Polskiej Grupy Użytkowników SQL Server!

Więcej o PLSSUG można przeczytać na witrynie grupy: http://plssug.org.pl.

W razie pytań proszę o kontakt na adres pawel.potasinski [ at ] plssug.org.pl.

[PL] C2C’09 – wrażenia na gorąco

Dzisiaj nad ranem wróciłem z nieoficjalnej części konferencji Communities to Communities 2009… Zaraz, czemu ja zaczynam od końca :-)

Wczoraj, w sobotę 14 marca 2009 w Warszawie w budynku Wydziału Biologii Uniwersytetu Warszawskiego przy ul. Miecznikowej odbyła się konferencja Communities to Communities 2009. Duch pozostał taki sam, jak w roku 2008 – cała impreza była organizowana siłami społeczności. Społeczności stanęły na wysokości zadania. Konferencja była świetna i mógłbym na tym stwierdzeniu poprzestać, ale postanowiłem temat rozwinąć.

Na początek jednak dementuję plotki – nie byłem jednym z organizatorów C2C’09. Co prawda zostałem na zakończenie konferencji, podobnie jak wiele innych osób ze społeczności, wywołany na środek, ale sądzę, że było to raczej swego rodzaju podziękowanie od organizatorów za to, że pomogłem ściągnąć prelegentów na ścieżkę SQL, a na samej konferencji zajmowałem się zagranicznymi prelegentami z tejże ścieżki.

A teraz o samej konferencji…

Już od samego rana było wesoło. Wyruszyliśmy z Maćkiem Pileckim, który akurat był w Warszawie i z którym wieczorem wychyliliśmy symboliczne piwko, do Falenicy, by odebrać Andrasa Belokosztolszkiego (jednego z prelegentów na ścieżkę SQL). Andras ma żonę Polkę i zatrzymał się u rodziny, więc myślę, że jeszcze nie raz go zobaczymy na konferencjach i spotkaniach grup w naszym kraju :-) Nim dotarliśmy do Falenicy, zdążyłem przekonać się, że piwo ze mnie już wyparowało, bo alkomat (tak, tak, o 7:30 w sobotę Policja też pracuje) wskazał 0.00. Potem było już z górki. Zabraliśmy Andrasa, pośmialiśmy się w drodze i zawitaliśmy na właściwym miejscu około 8:30. Był więc czas na pierwszy networking ;-) Ucieszył mnie widok kanapek i automatów do kawy, bo wiedziałem, że w tym roku budżet nie pozwolił na zorganizowanie lunchu / obiadku / pizzy dla uczestników.

Potem była już pierwsza sesja (oczywiście, siedziałem wyłącznie na ścieżce SQL! :-)) – Radek Kępa stanął przed wyjątkowo trudnym zadaniem. Musiał sali pełnej programistów T-SQL przedstawić temat wybitnie dla DBA :-) Dobrze, że Radek nie zapytał, ilu DBA jest na sali, bo chyba by mu ciężej szło. A tak, na dużym luziku przedstawił dość ciekawe rzeczy związane z planowaniem storage’u. Może slajdy nie były "MS confidential", ale wiedza solidna i na pewno sobie slajdy Radzia ściągnę.

W przerwie po sesji Radka okazało się, że Marcin Szeliga przywiózł dwa egzemplarze naszej książki. Przynajmniej miałem okazję rzucić okiem na wersję papierową (dotąd miałem ją tylko w formacie Worda) :-)

Potem była już sesja Andrasa. Solidna bardzo głęboka wiedza na temat tego, w jaki sposób SQL Server 2008 przechowuje dane. Myślę, że takie rzeczy przydają się każdemu, kto choć trochę jest "geekiem". Ta sesja podobała mi się bardziej niż całkiem niezła sesja Andrasa z ZineDay 2008. Ale ostrzyłem sobie ząbki na następne prezentacje.

Po sesji Andrasa postanowiłem trochę pointegrować się z ludźmi i przez to opuściłem sesję Łukasza Grali. Pewnie też była ciekawa, ale niestety, 10-minutowe przerwy nie pozwalały na wiele networkingu, stąd moja decyzja o długiej przerwie na lunch i pogadanki ze znajomymi. Czas minął szybko i bardzo wesoło (głośny stolik na końcu stołówki to byliśmy my!) ;-)

Przyszedł czas na wywiady. Przeprowadziłem wywiad z Andrasem i Allanem Mitchellem. Pytałem o ich wrażenia z konferencji, o to, co możnaby zmienić (Allan jest jednym z organizatorów SQLBits), trochę o technikalia (parę osób prosiło o pytanie o pluginy do SSMS skierowane do Andrasa – wymigał się łobuz ;-)). Wywiad został nagrany, a wideo powinno być za jakiś czas dostępne.

Po wywiadzie i przerwie lunchowej nastąpiło wielkie bum. Zobaczyłem trzy sesje, które wprawiły mnie – jako prelegenta - w porządne kompleksy.

Najpierw Allan Mitchell po raz kolejny pokazał, że jest niedościgniony w temacie SSIS. Mówił o rzeczach niby prostych, ale sądzę, że najwięksi kozacy od transferów danych siedzący na sali nie znali wszystkich chwytów, które Allan zademonstrował w swojej prezentacji. Mała sugestia do osób zajmujących się w MS Polska układaniem agendy na MTS 2009 – może zamiast ściągać drogich prelegentów z USA lub ciągać PM-ów z Redmond, lepiej zaprosić paru takich ostrych zawodników jak Allan? Zrobią sesję na najwyższym poziomie za niekoniecznie wielkie pieniądze. A społeczność polska już człowieka sprawdziła i wie, że jest "niezłym wycinakiem" :-)

Po Allanie wystąpił Marek Adamczuk. Co tu pisać. Kto był, ten wie. Serce mi się cieszyło, gdy widziałem Marka w jego żywiole i w jego najlepszym wydaniu ("idź sobie zły człowieku", "skanuj!" i "szukaj!" rządzą ;-)). Sesja mogła IMHO zadowolić najwybredniejszych. Dynamiczny T-SQL po tej sesji nie ma dla mnie tajemnic :-) Po prostu mistrzostwo świata. Jak to powiedział jeden z uczestników sesji "To jest nasz towar eksportowy". Zgadzam się w całej rozciągłości. Marka trzeba pokazywać szerszej publice i mocno docenić jego wiedzę oraz chęć, z jaką dzieli się tą wiedzą z ludźmi (MVP? ;-)).

"Six sessions? Oh, my…" – słowa Allana mówią same za siebie. Sześć sesji na ścieżkę to była mordercza dawka dla uczestników C2C’09. Ale na ścieżce SQL chyba nikt tego nie odczuł! Powód? Ostatnią sesję prowadził Wielki Mistrz Prezentacji, Marcin Szeliga. Marcin doskonale wiedział, że na szóstej sesji z rzędu, po godzinie 17-tej, ludzie będą już lekko (!!!) zmęczeni i zaoferował im świetną sesję na luzie i z elementami quizu. Czas na tej prezentacji minął mi tak szybko, jak na żadnej innej, a brzuch bolał mnie ze śmiechu, jak rzadko kiedy. Ogromny szacunek, Marcin. To był majstersztyk, a przy okazji wiele osób, w tym ja, dowiedziało się czegoś nowego o blokadach, poziomach izolacji i standardach. Biję pokłon do ziemi po prostu.

Samo zakończenie konferencji też nieźle mnie rozbawiło. Kuba Jałbrzykowski jako konferansjer rozruszałby nawet zebranie ZBOWiD-u (nie uwłaczając), a Maciek Pilecki w roli hostessa… hehe, no cóż, chyba mamy maskotkę PLSSUG :P

I to było na tyle wrażeń na samej konferencji. Naprawdę, świetnie się bawiłem. Gratuluję organizatorom, bo z tego, co wiem, na pozostałych dwóch ścieżkach było także bardzo ciekawie. No i ludzie się integrowali, co do tego nie mam wątpliwości. A to był też ważny cel tego wydarzenia.

W zasadzie jedyne dwie rzeczy, do których mam zastrzeżenia, to za krótkie przerwy (przydałoby się wziąć przykład z SQLBits i robić te 20 minut przerwy między sesjami) oraz brak jednego z głównych organizatorów / organizatorek na oficjalnym zakończeniu konferencji oraz nieoficjalnej części wieczornej z udziałem zagranicznych gości (tak się zachowywać po prostu nie wypada i tyle).

No właśnie, wieczorem w gronie znajomych (także prelegentów zagranicznych) udaliśmy się do restauracji na małe co nieco przeplatane luźnymi rozmowami, niekoniecznie o technikaliach, społecznościach i konferencjach. To wspaniałe uczucie dowiedzieć się, że ci wspaniali prelegenci, którzy zaszczycili nas swoją obecnością i dali kilka naprawdę świetnych prezentacji, są zwykłymi ludźmi, tak jak my. Pogadać z nimi o rodzinach, o planach i o życiu to wielka sprawa. I chyba to jest w tym wszystkich tak naprawdę największą wartością. I właśnie dlatego sądzę, że idea C2C nie upadnie i za rok możemy się znowu umówić na spotkanie w Warszawie :-)

PS. Pstryknąłem telefonem kilka zdjęć. Wrzuciłem je na witrynę PLSSUG.

[EDIT] Byłbym zapomniał :-) Okazało się, że na imprezie robionej przez społeczność można wyżyć o kawie i kanapkach, a uczestnicy nie psioczą na brak lunchu, o ile w pobliżu dostępna jest jadłodajnia oferująca po przystępnych cenach coś do szamania :-) Lesson learned na przyszlosć! [/EDIT]

opublikowano przez brejk | 5 komentarzy
Filed under: , ,

[PL] Bug miesiąca – Lock pages in memory w Standard Edition

Jeśli zdarzyło Ci się kiedykolwiek, że w logach SQL Servera (najpewniej wersja 2005 lub 2008 Standard Edition na platformie 64-bit) pojawił się niepokojący wpis mniej więcej tej treści:

A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 24484, committed (KB): 48036, memory utilization: 50%

to znaczy, że ta notka jest dla Ciebie :-)

Prawdopodobnie powyższy komunikat oznacza, że właśnie masz całkiem poważny problem wydajnościowy na swoim serwerze. Strony baz danych, które powinny być w jak największej ilości trzymane w pamięci, wylatują z tej pamięci w szybkim tempie i muszą być ponownie czytane z dysku przy wykonywaniu zapytań przez użytkowników. Ponoć problem leży w sterownikach i w błędach w systemie Windows (zwłaszcza Windows Server 2003). System ma problem w sytuacji, gdy jeden proces (SQL Server) zajmuje znaczną większość pamięci, a inny proces o tę pamięć walczy. Wówczas może nastąpić stronicowanie pamięci i zaczyna się niszczycielski proces wyrzucania stron z danymi z buffer cache’a. SQL Server może się bronić przed takim efektem. Wystarczy ustawić dla konta Windows, w kontekście którego działa usługa SQL Server, uprawnienie Lock Pages in Memory w polisach systemu Windows. Ustawienie tego uprawnienia dla konta SQL Servera powoduje, że SQL Server utrzyma strony danych w pamięci nawet, gdy system operacyjny będzie szukał zasobów dla innych procesów. Wszystko fajnie, ale ustawienie wspomnianego uprawnienia przynosi rezultat tylko, gdy mamy do czynienia z SQL Server Enterprise Edition… Edycja Standard ignoruje to ustawienie. Rodzi się pytanie – czy jest więc sens pakować więcej niż 4GB RAM w serwery z edycją Standard? Bo przecież wystarczy, że przy dobrze obciążonym serwerze wykorzystującym w pełni buffer cache uruchomimy dodatkowo jakiś proces, który będzie walczył o zasoby i możemy dostać małą katastrofę wydajnościową. Sam MS pisze na blogach, że to się daje ugasić za pomocą hotfix’ów i Service Packa do SQL Servera (http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx), ale wygląda na to, że jednak to nie do końca prawda, bo wciąż ludzie informują, że mieli podobne zjawisko na swoich serwerach.

Naturalnym rozwiązaniem wydaje się po prostu dodanie wsparcia dla Lock Pages in Memory w edycji Standard. Jednak MS się miga. Na nic tłumaczenia, że brak owego wsparcia powoduje praktycznie nierozwiązywalne problemy wydajnościowe i że takie traktowanie klientów posiadających edycję Standard nie jest właściwe.

Ostatnio ciężką walkę o naprawienie buga (bo to wg mnie i wg wielu profesjonalistów pracujących z SQL Server oczywisty bug) podjął Maciek Pilecki. Jednym ze środków walki jest wątek na connect.microsoft.com:

https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=422322

Podobny wątek istniał już kiedyś, ale został zamknięty. Warto więc tym razem dać naprawdę porządny, masowy feedback MS, żeby nie mogli po prostu przejść obok problemu obojętnie. A zatem, kupą mości Panie i Panowie :-) Wchodźcie na wątek i głosujcie, szczególnie jeśli macie na serwerze SQL Server 2005/2008 Standard Edition 64-bit. Bo lada dzień problem może dotknąć i Was.

A ci z Was, którzy doświadczyli problemu, niech spróbują zrobić case study (można je wysłać chociażby do mnie – pawel[dot]potasinski[at]sqlpass[dot]org). Nie ma to jak namacalne dowody. Wysłalibyśmy je do MS, żeby ludzie z Redmond na własne oczy przekonali się, jaką krzywdę robią klientom, którym wydawało się, że nie potrzebują edycji Enterprise, bo nikt im wcześniej nie powiedział, że taki bug istnieje na edycji Standard.

PS. Nie tylko ja piszę o tym problemie. Zablogował o nim chociażby Simon Sabin (SQL Server MVP).

opublikowano przez brejk | 8 komentarzy