<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://zine.net.pl/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQLGEEK </title><link>http://zine.net.pl/blogs/sqlgeek/default.aspx</link><description>Pawel Potasinski about SQL Server</description><dc:language /><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>[PL] User Group Support Services</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/05/12/en-user-group-support-services.aspx</link><pubDate>Mon, 12 May 2008 09:08:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:956</guid><dc:creator>brejk</dc:creator><slash:comments>0</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/956.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=956</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/957/original.aspx"&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;W czwartek, 8 maja, ruszył program pilotażowy przedsięwzięcia&amp;nbsp;o nazwie&amp;nbsp;&lt;STRONG&gt;User Group Support Services (UGSS)&lt;/STRONG&gt;. Pod tą tajemniczą nazwą kryje się darmowy zestaw narzędzi&amp;nbsp;online (w sumie można powiedzieć, że portal) do pobierania zasobów przez grupy użytkowników, do&amp;nbsp;zgłaszania zapotrzebowania&amp;nbsp;owe zasoby oraz do zarządzania grupami.&amp;nbsp;Całość bazuje na silniku znanym ze strony&amp;nbsp;&lt;A href="http://connect.microsoft.com"&gt;connect.microsoft.com&lt;/A&gt;. Materiały udostępniane w ramach UGSS mają&amp;nbsp;częściowo pochodzić&amp;nbsp;ponoć od grup produktowych w korporacji. Zapowiada się zatem ciekawie.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Kalendarze dotyczące tego, kiedy jakie materiały mają się ukazać w ramach UGGS będą dostępne na &lt;A href="http://www.codezone.com"&gt;CodeZone&lt;/A&gt; (dla programistów - ponoć już coś jest) i na stronach organizacji &lt;A href="http://www.culminis.com"&gt;Culminis&lt;/A&gt; (dla IT prosów - planowane na&amp;nbsp;czerwiec 2008).&lt;/P&gt;
&lt;P class=MsoNormal&gt;Materiały UGGS mają być (lub już są)&amp;nbsp;do pobrania ze stron:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;A title=blocked::http://connect.microsoft.com/InvitationUse.aspx?ProgramID=2098&amp;amp;SiteID=545&amp;amp;InvitationID=MSDN-B3R2-3XDR href="http://connect.microsoft.com/InvitationUse.aspx?ProgramID=2098&amp;amp;SiteID=545&amp;amp;InvitationID=MSDN-B3R2-3XDR"&gt;&lt;STRONG&gt;MSDN&lt;/STRONG&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;A title=blocked::http://connect.microsoft.com/InvitationUse.aspx?ProgramID=2099&amp;amp;SiteID=545&amp;amp;InvitationID=TNet-B8Q8-9BWB href="http://connect.microsoft.com/InvitationUse.aspx?ProgramID=2099&amp;amp;SiteID=545&amp;amp;InvitationID=TNet-B8Q8-9BWB"&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;TechNet&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="FONT-FAMILY:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;A title=blocked::http://www.codezone.com/ href="http://www.codezone.com/"&gt;&lt;FONT color=#0000ff&gt;Codezone&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="FONT-FAMILY:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;A title=blocked::http://www.culminis.com/ href="http://www.culminis.com/"&gt;&lt;FONT color=#0000ff&gt;Culminis&lt;/FONT&gt;&lt;/A&gt; (czerwiec 2008)&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal&gt;Oprócz materiałów w ramach UGSS będą dostępne takie usługi, jak:&lt;/P&gt;
&lt;UL&gt;
&lt;LI class=MsoNormal&gt;repozytorium prelegentów (Microsoft ma na tym polu współdziałać z Ineta, Culminis i PASS)&amp;nbsp;, 
&lt;LI class=MsoNormal&gt;repozytorium sponsorów (j.w.), 
&lt;LI class=MsoNormal&gt;zarządzanie wydarzeniami i śledzenie ilości uczestników wydarzeń, 
&lt;LI class=MsoNormal&gt;zarządzanie członkami grup i komunikacją wewn. grup, 
&lt;LI class=MsoNormal&gt;spójny interfejs do zarządzania grupami, 
&lt;LI class=MsoNormal&gt;konto Live Meeting dla każdej z grup, 
&lt;LI class=MsoNormal&gt;User Group Kits (???, tylko w niektórych regionach), 
&lt;LI class=MsoNormal&gt;Study Groups (???).&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal&gt;Zapewne część z wymienionych usług będzie dostępna tylko dla grup z regionu NORAM (USA, Kanada) w ramach wspomnianego&amp;nbsp;portalu CodeZone, ale i tak zapowiada się na spory skok jakościowy (ilościowy?) w tym, co Microsoft jako korporacja oferuje grupom na całym świecie. Dodam, że inicjatywa UGSS była dyskutowana na User Group Leaders Summit, o którym pisałem &lt;A href="http://zine.net.pl/blogs/sqlgeek/archive/2008/04/25/en-after-european-pass-conference-2008-and-user-group-leaders-summit.aspx"&gt;na blogu&lt;/A&gt;. &lt;/P&gt;
&lt;P class=MsoNormal&gt;Microsoft prosi ludzi z grup o pomoc. W pierwszej kolejności chodzi o "rozreklamowanie" UGSS, by jak najwięcej grup wypowiedziało się na temat użyteczności nowych narzędzi. Ma to też pomóc w organizowaniu repozytoriów prelegentów i sponsorów. Ponadto Microsoft szuka w grupach pomocy w tłumaczeniu materiałów oraz lokalnego feedbacku na język angielski.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Aktualnie w zapowiedziach Microsoftu znalazły się: materiały techniczne dotyczące wirtualizacji i SQL Server, lokalizacja usług (padła data 15 czerwca 2008), raportowanie dla liderów grup (czerwiec 2008).&lt;/P&gt;
&lt;P class=MsoNormal&gt;Osobą kontaktową w Microsoft&amp;nbsp;w sprawach związanych z UGSS jest &lt;STRONG&gt;Michelle Fleming Toure&lt;/STRONG&gt; (&lt;A href="mailto:Michelle.[no_spam]Fleming@microsoft.com"&gt;&lt;STRONG&gt;Michelle.&lt;/STRONG&gt;[no_spam]&lt;STRONG&gt;Fleming@microsoft.com&lt;/STRONG&gt;&lt;/A&gt;), której można zgłaszać swoje uwagi i chęć zaangażowania się w projekt UGSS.&lt;/P&gt;
&lt;P class=MsoNormal&gt;I jeszcze jedna informacja. Już niebawem powinna ruszyć też inicjatywa zatytułowana &lt;STRONG&gt;User Group TV &lt;/STRONG&gt;(i -&amp;nbsp;jak dobrze pójdzie -&amp;nbsp;krótkie nagranie z moim udziałem&amp;nbsp;nawet ma szansę się tam pojawić) :-)&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=956" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/grupy/default.aspx">grupy</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/UGSS/default.aspx">UGSS</category></item><item><title>[PL] O organizacji Culminis słów kilka</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/05/08/pl-o-organizacji-culminis-s-w-kilka.aspx</link><pubDate>Thu, 08 May 2008 10:56:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:951</guid><dc:creator>brejk</dc:creator><slash:comments>2</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/951.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=951</wfw:commentRss><description>&lt;H3&gt;Tytułem wstępu&lt;/H3&gt;
&lt;P&gt;Od listopada 2007 roku uczestniczę w programie &lt;STRONG&gt;Culminis County Lead Volunteer&lt;/STRONG&gt;. Moim zadaniem jest zapoznawanie członków grup IT Pro skupionych wokół technologii firmy Microsoft z "ofertą" organizacji Culminis. Do tej pory moja działalność skupiała się przeważnie na mówieniu o tym, co Culminis może dać grupom. Pomyślałem jednak, że dobrze by było moją wiedzę na temat Culminisa przelać na wirtualny papier. I tak właśnie czynię.&lt;/P&gt;
&lt;H3&gt;Culminis - o samej organizacji&lt;/H3&gt;
&lt;P&gt;&lt;IMG hspace=10 src="http://new.culminisconnections.com/Site%20images/culminis_logo_rt_small.jpg" align=left&gt;Culminis jest międzynarodową organizacją nonprofit, której celem jest rozwój i wzrost społeczności IT. Organizacja wspiera grupy, stowarzyszenia czy&amp;nbsp;organizacje studenckie poprzez swoje programy stworzone z&amp;nbsp; myślą o wymianie zasobów między grupami oraz nieustannym podnoszeniu&amp;nbsp;prestiżu ludzi związanych z grupami zarówno w społecznościach, jak i w branży IT. Oczywiście, grupy i organizacje wspierane przez Culminis są związane z technologiami i produktami Microsoft. Aktualnie&amp;nbsp;w programie &lt;STRONG&gt;Culminis&amp;nbsp;Alliance&lt;/STRONG&gt; zarejestrowanych jest ponad 1000 grup z całego świata (w sumie ponad 2 700 000 członków).&lt;/P&gt;
&lt;P&gt;CEO Culminisa jest charyzmatyczny &lt;STRONG&gt;Dave Sanders&lt;/STRONG&gt;. Dave jest głównym wizjonerem organizacji. Jest on zwolennikiem wychodzenia z działalnością grup poza technologię - promuje wszelkie przejawy działań charytatywnych ze strony grup (stąd program Culminis Cares, który wspiera grupy wspomagające na przykład dzieci z krajów trzeciego świata). Dave ma solidne oparcie w dyrektorze operacyjnym, którym jest &lt;STRONG&gt;Paul Hailey&lt;/STRONG&gt; (Managing Director of Opeations). Także &lt;STRONG&gt;Frank V. Tutone&lt;/STRONG&gt; (Managing Director - Finance/Technology/HR) aktywnie uczestniczy w działalności na rzecz grup (to z nim grupy korespondują w celu uzyskania środków na swoje wydarzenia). Z punktu widzenia polskich grup prawdopodobnie najważniejszą osobą w Culminis jest &lt;STRONG&gt;Sanjay Shetty&lt;/STRONG&gt; (Regional Lead - APAC/EMEA, Microsoft Regional Director). To właśnie&amp;nbsp;z nim liderzy grup&amp;nbsp;rozpoczynających przygodę z programem Cullminis Alliance korespondują w pierwszej kolejności. &lt;/P&gt;
&lt;H3&gt;Culminis Core Services&lt;/H3&gt;
&lt;P&gt;Culminis opiera swą działalność na pięciu usługach dla społeczności. Są to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://new.culminisconnections.com/Core%20Services/Community%20Development%20English.pdf"&gt;Community Development&lt;/A&gt;&lt;/STRONG&gt; - budowanie i utrzymywanie&amp;nbsp;bazy danych grup z możliwością wyszukiwania grup wg regionów, publikowanie zbiorów najlepszych praktyk dotyczących tworzenia i prowadzenia grup offline, organizowanie seminariów n/t jak być liderem czy jak współpracować z innymi grupami 
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://new.culminisconnections.com/Core%20Services/Event%20Support%20English.pdf"&gt;Event Support&lt;/A&gt;&lt;/STRONG&gt; - promocja wydarzeń organizowanych przez grupy offline, zwiększenie możliwości udziału Microsoft lub innych firm w tych wydarzeniach (sponsoring, prelegenci),&amp;nbsp;sponsoring&amp;nbsp;konferencji i innych inicjatyw&amp;nbsp;grup, budowanie i utrzymywanie&amp;nbsp;bazy prelegentów&amp;nbsp;&amp;nbsp; 
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://new.culminisconnections.com/Core%20Services/Relationship%20Mapping%20English.pdf"&gt;Relationship Mapping&lt;/A&gt;&lt;/STRONG&gt; -budowanie mapy komunikacyjnej dla grup w celu podnoszenia rangi pewnych problemów, jakie istnieją w grupach oraz dla lepszej współpracy między grupami 
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://new.culminisconnections.com/Core%20Services/Level%205%20Participation%20English.pdf"&gt;Level 5 Participation (L5P)&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;- promocja najaktywniejszych liderów grup poprzez przypisanie im 5-go najwyższego poziomu uczestnictwa w programach Culminis, liderzy L5P mają możliwość otrzmania najwyższego wsparcia finansowego dla grup, są zapraszani na specjalne spotkania z Microsoft i innymi organizacjami wspierającymi grupy oraz mają większy wpływ na programy Culminis 
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://new.culminisconnections.com/Core%20Services/The%20VOICE%20English.pdf"&gt;The Voice&lt;/A&gt;&lt;/STRONG&gt; - miesięcznik online wydawany przez Culminis, w zamyśle ma być głosem społeczności, ponoć każdy może wysłać do organizacji Culminis materiał do publikacji w The Voice&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Culminis Alliance&lt;/H3&gt;
&lt;P&gt;Program &lt;A href="http://new.culminisconnections.com/Alliance/default.aspx"&gt;Culminis Alliance&lt;/A&gt; istnieje od 2004 roku. Jego zadaniem jest stworzenie bazy danych grup użytkowników na całym świecie oraz wspieranie tych grup. Udział w programie jest dla grup bezpłatny, aczkolwiek grupa musi spełniać pewne wymagania:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;musi mieć co najmniej 10 zarejestrowanych członków, 
&lt;LI&gt;nie może wprowadzać ograniczeń członkostwa opartych o płeć, rasę, religię czy narodowość, 
&lt;LI&gt;musi wyrazić zgodę na przesyłanie jej ankiet Culminisa, 
&lt;LI&gt;musi wysłać wypełniony formularz &lt;A href="http://membershipagreement.culminisconnections.com/default.aspx?SPSLanguage=ENGLISH?SPSLanguage=ENGLISH"&gt;Culminis Membership Application&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Benefity, jakie&amp;nbsp;daje przynależność do programu, są następujące:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Welcome Kit - grupa otrzymuje certyfikat przynależności do programu :-)&amp;nbsp; 
&lt;LI&gt;wsparcie finansowe dla grup - liderzy grup mogą poprosić o fundusze na spotkanie&amp;nbsp;grupy lub konferencję (maksymalna ilość pieniędzy waha się od 200 do 2000 USD i zależy od ilości uczestników wydarzenia oraz poziomu lidera w skali L5P, odpowiedni link znajduje się na stronie przeznaczonej dla liderów), 
&lt;LI&gt;&lt;A href="http://new.culminisconnections.com/Speakers/default.aspx"&gt;Culminis Speaker Program&lt;/A&gt; - liderzy grup mogą poprosić o prelegenta na spotkanie grupy (przy czym na razie możliwości Culminisa w tym względzie są skromne, organizacja dopiero buduje bazę prelegentów) oraz zgłosić swoich&amp;nbsp;prelegentów do tego programu, 
&lt;LI&gt;platforma i hosting dla strony grupy&amp;nbsp;- liderzy grup mogą poprosić od site SharePoint'owy (odpowiedni link znajduje się na stronie przeznaczonej dla liderów), 
&lt;LI&gt;komunikacja między liderami grup z całego świata - na stronie przeznaczonej dla liderów są miejsca, gdzie liderzy mogą dyskutować na różne tematy, 
&lt;LI&gt;grupa zostaje dodana do bazy danych, osoby odwiedzające strony Culminisa mogą wyszukać grupę wg obszaru zainteresowań lub lokalizacji, 
&lt;LI&gt;zaproszenia do udziału w konferencjach lub programach organizowanych przez Culminis i Microsoft, 
&lt;LI&gt;zniżki dla liderów na produkty edukacyjne (kursy, książki), 
&lt;LI&gt;konto w usłudze Live Meeting, które może zostać użyte do organizowania spotkań online (lider musi poprosić o konto - odpowiedni link znajduje się na stronie przeznaczonej dla liderów), 
&lt;LI&gt;dostęp do szablonów dokumentów, takich jak regulamin czy informacje dla prasy, 
&lt;LI&gt;możliwość udziału w innych programach organizacji Culminis.&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Jak wspiąć się na Level 5&lt;/H3&gt;
&lt;UL&gt;
&lt;P&gt;&lt;/P&gt;&lt;/UL&gt;
&lt;P&gt;Culminis promuje aktywnych liderów grup. Dla najaktywniejszych przewidziany jest tzw. poziom 5 (Level 5 Participation - L5P). Klasyfikacja lidera jest zarazem klasyfikacją grupy. Liderzy mogą zaczynać od poziomu wyższego niż poziom 1. A wszystkie poziomy kształtują się następująco:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;L1P - lider dostarcza informacji kontaktowych 
&lt;LI&gt;L2P - lider dostarcza Culminisowi stały feedback (ankiety, The Voice) 
&lt;LI&gt;L3P - grupa lidera dostarcza Culminisowi stały feedback (ankiety - co najmniej 10 członków) 
&lt;LI&gt;L4P - lider dostarcza Culminisowi ekstra-feedback oraz wspiera innych liderów w kontaktach z Culminisem &amp;lt;---- tu jestem aktualnie :-) 
&lt;LI&gt;L5P - lider jest (cyt.) "an extraordinary force within the IT Pro community" - czyli totalne zaangażowanie, widoczność na poziomie kraju i dalej, duża aktywność w programach Culminis, stały feedback etc.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Czy jest przepis na wejście na L5P? Nie ma :-) Ale kilka podpowiedzi (w sumie nie powinienem ich udzielać, bo sam jestem na L4P):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;dostarczaj Culminisowi stały feedback - pisz od czasu do czasu o sytuacji w Twojej grupie i w innych grupach, o problemach, które są wspólne dla wielu grup, o tym, co Ci się podoba lub nie podoba w programach Culminisa, może masz jakieś best practices&amp;nbsp;a propos prowadzenia grupy&amp;nbsp;- podeślij je Culminisowi, 
&lt;LI&gt;namawiaj członków Twojej grupy do czytania The Voice, a być może także i do pisania na jego łamach, 
&lt;LI&gt;namawiaj aktywnych (i tylko takich)&amp;nbsp;członków Twojej grupy do wypełniania ankiet Culminisa, 
&lt;LI&gt;pomagaj nowym grupom offline w weściu w program Culminis Alliance, 
&lt;LI&gt;namawiaj tych, o których wiesz, że są dobrymi prelegentami, do udziału w Culminis Speaker Program, 
&lt;LI&gt;rób wszystko, by Polska na mapie grup offline nie była "białą plamą" dla organizacji takich jak Culminis.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To takie przemyślenia, którymi się staram kierować.&amp;nbsp;Z doświadczenia wiem, że najciężej jest z The Voice, bo ludzie wcale nie kwapią się do czytania :-)&lt;/P&gt;
&lt;H3&gt;Ankiety - dlaczego są ważne&lt;/H3&gt;
&lt;P&gt;Co miesiąc, wraz z ukazaniem się nowego numeru The Voice, liderzy&amp;nbsp;grup proszeni są o wypełnienie ankiety, której celem jest zebranie danych na temat działalności grup oraz odbioru organizacji Culminis w grupach (grupy są rozproszone po całym globie, więc jest to jedyna możliwość zebrania opinii członków grup na temat Culminisa i jego działań). Culminis stara się mobilizować liderów i członków grup do systematycznego wypełniania ankiet za pomocą nagród&amp;nbsp;pieniężnych lub voucherów na portalu Amazon.com (nagroda w wys. 250 USD lub voucher na książki do tej samej wartości) losowanych po dacie wygaśnięcia każdej ankiety (losowana jest jedna grupa z każdego regionu - APAC, EMEA, NORAM, LATAM&amp;nbsp;i Brasil). Skutek tego działania czasem jest nieprzewidywalny, bo ankietę wypełniają ludzie nie mający&amp;nbsp;o działalności Culminisa zielonego pojęcia. Dlatego z tego miejsca chciałbym uczulić liderów grup w Polsce - nie&amp;nbsp;proście każdego członka grupy o to, by wypełniał ankietę. Lepiej, jeżeli ankietę wypełni 15 osób ze ścisłego "trzonu" grupy, niż 100 przypadkowych osób, które akurat miały chwilę i zareagowały na Wasze wezwanie. Nagroda i tak może grupę spotkać, a przynajmniej odpowiedzi w ankietach będą w miarę reprezentatywne.&lt;/P&gt;
&lt;H3&gt;Przydatne odnośniki&lt;/H3&gt;
&lt;P&gt;Poniżej kilka odnośników do dokumentów i stron Culminis.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/default.aspx"&gt;Strona organizacji Culminis&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://thevoice.culminis.com/default.aspx"&gt;Strona miesięcznika online The Voice&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/Lists/ContactUs/AllItems.aspx"&gt;Lista kontaktów do osób z organizacji Culminis&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/Alliance/Document%20Library/1/ALLIANCE%20Program%20Description.pdf"&gt;Opis programu Culminis Alliance&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://membershipagreement.culminisconnections.com/default.aspx?SPSLanguage=ENGLISH?SPSLanguage=ENGLISH"&gt;&lt;STRONG&gt;Formularz zgłoszenia grupy do programu Culminis Alliance&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.culminis.com/volunteerapplication/"&gt;&lt;STRONG&gt;Formularz zgłoszenia prelegenta do bazy prelegentów organizacji Culminis&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://pri.culminisconnections.com/Leader/default.aspx"&gt;&lt;STRONG&gt;Strona dla liderów grup (HTTPS)&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/Alliance/Document%20Library/1/User%20Group%20Start%20Up%20Guide_v3.1.pdf"&gt;Poradnik "Jak stworzyć grupę?"&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/Alliance/Document%20Library/1/Recipe%20for%20a%20Successful%20User%20Group.pdf"&gt;Poradnik "Jak dobrze prowadzić grupę?"&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://thevoice.culminis.com/Lists/Posts/ViewPost.aspx?ID=109"&gt;Przykładowa notka o konferencjach HCL w The Voice&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;W razie pytań dotyczących organizacji Culminis, jej programów, możliwości wsparcia grup offline, problemów z czasem odpowiedzi w/s funduszy czy prelegentów&amp;nbsp;itd. można pisać do mnie na adres &lt;STRONG&gt;pawel.potasinski&lt;/STRONG&gt;[no_spam]&lt;STRONG&gt;@sqlpass.org.pl&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.culminis.com/volunteerapplication/"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://new.culminisconnections.com/Lists/ContactUs/AllItems.aspx"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=951" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/grupy/default.aspx">grupy</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/spo_4201_eczno_5B010701_/default.aspx">społeczność</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Culminis/default.aspx">Culminis</category></item><item><title>[EN] After European PASS Conference 2008 and User Group Leaders Summit</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/25/en-after-european-pass-conference-2008-and-user-group-leaders-summit.aspx</link><pubDate>Fri, 25 Apr 2008 07:53:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:936</guid><dc:creator>brejk</dc:creator><slash:comments>1</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/936.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=936</wfw:commentRss><description>&lt;P&gt;On&amp;nbsp;April 15th&amp;nbsp;I was a speaker at the &lt;A href="http://www.european-pass-conference.com"&gt;European PASS Conference 2008&lt;/A&gt;&amp;nbsp;(it was located in Dusseldorf, Germany). &lt;A href="https://www.sqlpass.org/Pages/Default.aspx"&gt;PASS&lt;/A&gt; (Professional Association for SQL Server) is the organization that unites and supports SQL Server user groups all over the world. &lt;A href="http://www.plssug.org.pl"&gt;Polish SQL Server User Group&lt;/A&gt; is the official PASS Chapter. The conference was well organized. Plenty of space in Swisshotel, great service and helpful staff, lots of famous speakers (e.g. Allan Mitchell, Greg Low, Bob Ward, Chris Webb, Rasmus Rusanu). I had my session titled Powerful Performance Monitoring in SQL Server 2008 just after lunch on the first day of the conference. The session was so so (I have to improve my English...). Fortunately I had some demo movies recorded because my Virtual Machine crashed a bit just before my slot. I really appreciate those attendees who were so patient and gave me a chance to have my first ever English presentation finished with minimal stress :-) Thanks guys. What's probably the most important about this event is that I met there some user group leaders from other countries (Andre Kamman from Netherlands, Christoph Stotz from Germany, Charlie Hanania from Switzerland,...). This can be a good start for user groups cooperation.&lt;/P&gt;
&lt;P&gt;Unfortunately I had to leave on the next day (and thus I could not attend the session of my friend &lt;A href="http://damianwidera.spaces.live.com/"&gt;Damian Widera&lt;/A&gt;&amp;nbsp;about Policy Based Management, but I'm sure he performed well). Anyway, PASS Conference was a great adventure!&lt;/P&gt;
&lt;P&gt;On April 16th I left Dusseldorf and had my flight to Seattle. I was invited for User Group Leaders Summit (initially User Group Management Summit). The invitation came from &lt;A href="http://www.culminis.com"&gt;Culminis&lt;/A&gt; and I am very grateful to Dave Sanders and other Culminis folks for this (and for sponsoring my T&amp;amp;E also). The event started on Wednesday with MVP Party in the evening. I must say I was really surprised by the amount of people I knew there. Lots of friends from TechEd EMEA :-) (greetings to Jeff, Niyi, Andy&amp;nbsp;and Waleed) Also, Michael Jackson's and Kurt Cobain's covers were awesome :-)&lt;/P&gt;
&lt;P&gt;The event itself was great. For two days about 40 people from around the world were discussing the most important topics that refer to user groups and communities. I met some Microsoft folks responsible for communities (greetings to&amp;nbsp; Graham and&amp;nbsp;Michelle). I found out about some new ideas and projects started by Microsoft - e.g. User Group TV (I was recorded by some guys from UGTV, so expect my short speach available on the Internet soon), some kind of reosource download website built on&amp;nbsp;the connect engine and dedicated to communities&amp;nbsp;(available in May), CodeZone.com&amp;nbsp;portal for NORAM&amp;nbsp;user groups and so forth (MOSS&amp;nbsp;seems to be&amp;nbsp;a good platform for user groups). I had an&amp;nbsp;opportunity to suggest some of my thoughts and ideas. For example I tried to influence Microsoft guys to provide more information about Culmins, PASS and &lt;A href="http://www.ineta.org"&gt;Ineta&lt;/A&gt; and their&amp;nbsp;speaker databases to MCTs and MVPs. This can improve those databases and give us some additional possibilities to reach some famous speakers&amp;nbsp;for our future&amp;nbsp;events (I had&amp;nbsp;some issue about&amp;nbsp;getting a speaker for SQL&amp;nbsp;track on&amp;nbsp;C2C'08 conference).&amp;nbsp;Also I suggested that Ineta, Culminis and PASS should motivate their representatives in the particular countries to&amp;nbsp;report UG activities periodically&amp;nbsp;and to make people more familiar with all community programs provided by those organizations. This can help Polish user groups to become visible for Microsoft and its partners supporting communities (all three organizations I mentioned in this note are not very familiar with Polish communities, but are very interested in getting some more information about them). What is also important all three organizations had some time to present their current programs and to talk about what they can do in terms of&amp;nbsp;user group support. Moreover, user group leaders had their chance to provide some best practices and to give some feedback to Microsoft, Culminis, PASS and Ineta.&lt;/P&gt;
&lt;P&gt;I'm looking forward to the next event like this one.&lt;/P&gt;
&lt;P&gt;Below are some photos taken in Seattle and Redmond. &lt;/P&gt;
&lt;P&gt;Legend:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Row 1&lt;BR&gt;&lt;/STRONG&gt;1. -&amp;nbsp;Is it love? (Maciej and Niyi), &lt;BR&gt;2. - MCTs, MVPs, friends (Niyi, Andy, Waleed)&lt;BR&gt;&lt;STRONG&gt;Row 2&lt;BR&gt;&lt;/STRONG&gt;1. - MVP Party, Michael Jackson on the stage, &lt;BR&gt;2. - MVP Party, Kurt Cobain on the stage&lt;BR&gt;&lt;STRONG&gt;Row 3&lt;/STRONG&gt;&lt;BR&gt;1. -&amp;nbsp;The lunch, &lt;BR&gt;2. &amp;amp; 3. - Seattle&lt;BR&gt;&lt;STRONG&gt;Row 4&lt;BR&gt;&lt;/STRONG&gt;1. - Me and Sanjay Shetty (Culminis Regional Lead APAC &amp;amp; EMEA, Microsoft Regional Director)&lt;BR&gt;2. - There is nothing like a hot coffee in the morning :-) (Graham Watson, Microsoft)&lt;BR&gt;&lt;STRONG&gt;Row 5&lt;/STRONG&gt;&lt;BR&gt;1. - Culminis folks talking about their program&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/937/original.aspx"&gt;&amp;nbsp;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/938/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/939/original.aspx"&gt;&amp;nbsp;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/940/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/941/original.aspx"&gt;&amp;nbsp;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/942/original.aspx"&gt;&amp;nbsp;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/943/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/944/original.aspx"&gt;&amp;nbsp;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/945/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/946/original.aspx"&gt;&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=936" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/grupy/default.aspx">grupy</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/spo_4201_eczno_5B010701_/default.aspx">społeczność</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/MVP+Summit/default.aspx">MVP Summit</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/User+Group+Leaders+Summit/default.aspx">User Group Leaders Summit</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Culminis/default.aspx">Culminis</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Ineta/default.aspx">Ineta</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/PASS/default.aspx">PASS</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/user+groups/default.aspx">user groups</category></item><item><title>[PL] Był sobie portal</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/24/pl-by-sobie-portal.aspx</link><pubDate>Thu, 24 Apr 2008 06:54:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:930</guid><dc:creator>brejk</dc:creator><slash:comments>7</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/930.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=930</wfw:commentRss><description>&lt;P&gt;Projekt ITCore.pl został zarzucony. Po dwóch nieudanych podejściach w Microsoft Polska&amp;nbsp;wreszcie podjęto męską decyzję o przywróceniu portali WSS.pl i CodeGuru.pl. Od ponad roku uparcie realizowano wizję scalenia dwóch znakomicie działających portali o ustabilizowanych społecznościach. Podejmując się najpierw roli szefa testerów, a później (niedoszłego) redaktora naczelnego, miałem nadzieję, że Microsoft lub ludzie dla niego pracujący poprowadzą ten projekt z sukcesem. Nie wyszło. Ale to może i lepiej?&lt;/P&gt;
&lt;P&gt;Gdy w zeszłym roku rozmawiałem z jednym z pracowników Microsoft z Monachium, zadziwiłem go moimi przemyśleniami na temat, dlaczego Microsoft chce połączyć oba portale. Nie będę tu przytaczał tego, co powiedziałem, ale zdaje się, że człowiek oczekiwał ode mnie zgoła innych odpowiedzi na jego pytania&amp;nbsp;:-) Czy fakt, że ja - siedzący po uszy w projekcie ITCore.pl - mam zgoła inną wizję portalu niż ludzie z Microsoft, nie powinien dać do myślenia? Nie dał. Projekt żył nadal, a niektórzy&amp;nbsp;ludzie harowali przy nim z ogromnym poświęceniem. Wielka szkoda, że koniec końców, na marne.&lt;/P&gt;
&lt;P&gt;Dziś, jak czytam wypowiedzi na forum WSS.pl, zdaję sobie sprawę, jak bardzo ludzie się do tego portalu przyzwyczaili i jak wielkie były oczekiwania wobec jego ewentualnego następcy. Nie ma dwóch zdań, że WSS.pl to w tej chwili najsilniejsze community online powstałe wokół technologii Microsoft. Wolę nawet nie myśleć, co by się stało, gdyby ITCore.pl w swojej niekompletnej i&amp;nbsp;pełnej błędów wersji&amp;nbsp;był dalej forsowany przez Microsoft, a WSS.pl i CodeGuru.pl zostały zamknięte. Na szczęście ludzie z Microsoft Polska poszli w dobrą stronę, choć - czy mieli inne wyjście?&lt;/P&gt;
&lt;P&gt;Czego nauczył mnie ITCore.pl? Tego, że takie projekty muszą być zawsze przez kogoś nadzorowane (koniec z rozmytą odpowiedzialnością w korporacji). Że kroki milowe w projekcie nie są po to, by ktoś miał satysfakcję, że ludzie stosują jego metodologię prowadzenia projektów. Że prototypowanie systemów jest bardzo istotne. Że w projektach społecznościowych społeczność ma decydujący głos (a nie korporacja) i że wszystko powinno się odbywać na zasadzie "otwartej księgi" z możliwością wglądu dla każdego członka społeczności. &lt;/P&gt;
&lt;P&gt;Z drugiej strony ten projekt uporządkował moją wizję społeczności. Zdecydowanie umocnił mnie w przekonaniu, że społeczności online są w pewnym stopniu niewolnikami technologii i platform, na których powstały. To pchnęło mnie w pewnym momencie do skupienia się na społecznościach offline - na grupach pasjonackich. Oba rodzaje społeczności bardzo ładnie się uzupełniają, jednak większą rolę przypisuję dziś społecznościom offline.&lt;/P&gt;
&lt;P&gt;Na pocieszenie warto wspomnieć, że ITCore.pl najpewniej stał się, trochę przypadkiem, podwaliną pod -&amp;nbsp;prawdopodobnie bardzo dobrą -&amp;nbsp;platformę dla grup pasjonackich. Możliwości MOSS-a jako narzędzia do prowadzenia takich grup są bardzo duże. Mam nadzieję, że już wkrótce się o tym przekonamy na własnej skórze i będzie choć taki pożytek z projektu, który miał być bajką, a okazał się horrorem w dwóch aktach.&lt;/P&gt;
&lt;P&gt;Na zakończenie, chciałbym podziękować wszystkim, którzy brali udział w projekcie ITCore.pl, zarówno od strony społeczności, jak i od strony&amp;nbsp;Microsoftu i firm trzecich. To była lekcja życia, którą przeżyliśmy wspólnie i z której razem wyciągamy dziś wnioski na przyszłość.&amp;nbsp;Pozdrawiam.&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=930" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/spo_4201_eczno_5B010701_/default.aspx">społeczność</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/portal/default.aspx">portal</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/ITCore.pl/default.aspx">ITCore.pl</category></item><item><title>[PL][util] Piszemy narzędzia w T-SQL cz. 1 - sp_getcolumns</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/10/util-piszemy-utilsy-cz-1-sp-getcolumns.aspx</link><pubDate>Thu, 10 Apr 2008 12:33:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:916</guid><dc:creator>brejk</dc:creator><slash:comments>0</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/916.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=916</wfw:commentRss><description>&lt;H3&gt;Słowem wstępu&lt;/H3&gt;
&lt;P&gt;Jakiś czas temu nagrałem dla Technet Polska screencast zatytułowany &lt;SPAN class=listLink&gt;&lt;A href="http://wm.microsoft.com/ms/Poland/technet/200710_PP_Util.wmv"&gt;SQL Server Management Studio - użycie własnych procedur jako narzędzi&lt;/A&gt;. Screencast ten zapewne "utonął" w natłoku informacji, jakie przewijają się przez strony Technetu. W nagraniu była mowa o tym, jak można w łatwy sposób wykorzystać procedury składowane jako narzędzia codziennej&amp;nbsp;pracy w środowisku SQL Server Management Studio dla SQL Server 2005/2008 oraz w aplikacji&amp;nbsp;Query Analyzer&amp;nbsp;dla SQL Server 2000. Generalnie rozchodzi się o to, by wykorzystać możliwość podłączania&amp;nbsp;wywołania procedur składowanych (ale także i kodu T-SQL ad-hoc) do skrótów klawiaturowych&amp;nbsp;w wymienionych aplikacjach.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Od pewnego czasu myślałem też&amp;nbsp;o tym, żeby na blogu lub na stronie zacząć umieszczać kawałki kodu T-SQL. Nawet zalążki są na &lt;A href="http://potasinski.pl/Sql.aspx"&gt;mojej stronie&lt;/A&gt;. Tyle, że blog daje większe możliwości rozpisania się na temat genezy&amp;nbsp;danego&amp;nbsp;utilsa (tak potocznie&amp;nbsp;nazywam - i nie tylko ja - procedury narzędziowe)&amp;nbsp;i lepszego opisania jego funkcjonowania. &lt;/P&gt;
&lt;P&gt;Stąd ten wpis rozpoczyna na moim blogu serię pt. "Piszemy narzędzia w T-SQL". Będę od czasu do czasu pisał o tym, jak pisać skrypty, procedury i inne kawałki kodu T-SQL, które mogą okazać się pomocne w codziennej pracy programisty i/lub administratora SQL Server.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN class=listLink&gt;Piszemy utilsa sp_getcolumns&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Jak często zdarza się nam, że chcemy rozwinąć gwiazdkę w zapytaniu SELECT do pełnej listy kolumn w tabeli lub widoku? Jak często pojawia się potrzeba wypisania lub&amp;nbsp;skopiowania listy parametrów procedury składowanej? Czemu nie&amp;nbsp;napisać sobie prostego automatu, który będzie&amp;nbsp;dla nas takie listy kolumn i parametrów&amp;nbsp;zwracał?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Zadaniem procedury &lt;STRONG&gt;sp_getcolumns&lt;/STRONG&gt;, której podstawowa wersja znajduje się w załączniku do tej notki, jest właśnie listowanie kolumn lub parametrów wybranego obiektu z bieżącej bazy danych. Tak, tak, można napisać takiego utilsa, który będzie się wykonywał w kontekście bieżącej bazy i będzie działał w każdej bazie danych na instancji SQL Server. Tak właśnie działają procedury systemowe. Cała sztuka sprowadza się do umieszczenia procedury w bazie&amp;nbsp;&lt;STRONG&gt;master&lt;/STRONG&gt; i do&amp;nbsp;nadania procedurze odpowiedniej nazwy - nazwy zaczynającej się od &lt;STRONG&gt;prefiksu sp_&lt;/STRONG&gt;. Drucik? Możliwe, ale jaki prosty i jakie daje możliwości :-)&lt;/P&gt;
&lt;P&gt;Zacznijmy więc pisanie. Procedura jak to procedura, powinna mieć sygnaturę. W tym przypadku wymyśliłem sobie, że sp_getcolumns v1.0 będzie przyjmowała dwa parametry - nazwę obiektu oraz flagę, dzięki której będę sterował sposobem wyświetlania wyniku (zwracana lista w postacie jednego wiersza - @horizontal = 1 lub w postaci wielu wierszy @horizontal = 0). A zatem początek wygląda tak:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;PROC&lt;/span&gt; dbo.sp_getcolumns&lt;br /&gt;@object &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;sysname&lt;/span&gt;,&lt;br /&gt;@horizontal &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;tinyint&lt;/span&gt; = 0&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;AS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;W tym miejscu czas na "ciało" procedury. Standardowo pierwszą linijką procedury jest u mnie:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;NOCOUNT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ON&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Dzięki powyższej linii kodu SQL Server nie będzie z wnętrza mojej procedury zwracał komunikatów informujących o ilości wstawionych, zmienionych, usuniętych czy wybranych wierszy. Czyli takie swego rodzaju&amp;nbsp;odśmiecanie zostało włączone.&lt;/P&gt;
&lt;P&gt;Wynikiem działania naszej procedury będzie zwrócenie listy. Do przechowywania i budowania tej listy potrzebna mi jest tabela. Nie lubię tabel tymczasowych (z prefiksem #). Oczywiście, czasem mają swoje dobre strony, co pokazał Maciek Pilecki na swojej sesji o mitach na konferencji C2C'08. W tym jednak przypadku danych nie będzie wiele i tworzenie tabeli tymczasowej zamiast zmiennej tabelarycznej nie ma, moim zdaniem, sensu. Stąd:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @lines &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TABLE&lt;/span&gt; (line_id &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;identity&lt;/span&gt;(1,1), line &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;max&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Ktoś mógłby powiedzieć, że użycie&amp;nbsp;nvarchar(max) to zły pomysł. Z punktu widzenia wydajności pewnie tak. Ale jeżeli wziąć pod uwagę, że mogę mieć tabelę z ponad tysiącem kolumn, z których każda może mieć nazwę o długości do 128 znaków, to maksymalna ilość znaków w tradycyjnych typach varchar/nvarchar (odpowiednio 8000 i 4000 znaków) może okazać się zbyt mała do przechowania listy w jednym wierszu. A tak,&amp;nbsp;gigabajt lub dwa gigabajty&amp;nbsp;tekstu się zmieszczą...&lt;/P&gt;
&lt;P&gt;Teraz następuje już właściwa część procedury. Na początek sprawdzenie, czy w ogóle jest o co walczyć, czyli czy dany obiekt ma kolumny lub parametry:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;IF&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;EXISTS&lt;/span&gt; (&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; 1 &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; sys.columns &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; [&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object_id&lt;/span&gt;] = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;OBJECT_ID&lt;/span&gt;(@object))&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Następnie sprawdzenie, czy kolumny/parametry obiektu mają być listowane jako jeden wiersz, czy też każda kolumna/parametr ma się znaleźć w osobnym wierszu (to się może przydać, jeśli chcemy na przykład porządnie formatować kod T-SQL):&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;IF&lt;/span&gt; @horizontal = 1 &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @line &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;max&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; @line = N&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;''&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @line = @line + [name] + N&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;', '&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; sys.columns &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WITH&lt;/span&gt; (NOLOCK) &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; [&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object_id&lt;/span&gt;] = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;OBJECT_ID&lt;/span&gt;(@object) &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BY&lt;/span&gt; column_id&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; @lines (line)&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;LEFT&lt;/span&gt;(@line,&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;LEN&lt;/span&gt;(@line)-1)&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;END&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ELSE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; @lines (line)&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; [name] + N&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;','&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; sys.columns &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WITH&lt;/span&gt; (NOLOCK) &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; [&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object_id&lt;/span&gt;] = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;OBJECT_ID&lt;/span&gt;(@object) &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BY&lt;/span&gt; column_id&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;UPDATE&lt;/span&gt; @lines&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; line = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;LEFT&lt;/span&gt;(line,&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;LEN&lt;/span&gt;(line)-1)&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; line_id = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;@@IDENTITY&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Dzięki prostym zapytaniom do widoku systemowego &lt;STRONG&gt;sys.columns&lt;/STRONG&gt; oraz chwytowi z doklejaniem kolejnych wierszy z wyniku zapytania do zmiennej @line dostaję listę kolumn/parametrów obiektu w formie zależnej od wartości parametru @horizontal. Operacje z wykorzystaniem funkcji LEN to czysta formalność - wycinam w ten sposób ostatni przecinek.&lt;/P&gt;
&lt;P&gt;Na koniec nie pozostaje nic innego, jak zwrócić uporządkowaną listę kolumn/parametrów:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; line &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; @lines &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BY&lt;/span&gt; line_id &lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Tym sposobem sp_getcolumns v1.0 jest gotowa (&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;&lt;A href="http://zine.net.pl/blogs/sqlgeek/attachment/916.ashx"&gt;cały kod wraz z testami jest&amp;nbsp;dostępny w załączniku, do którego link znajduje się na końcu tej notki&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;)&amp;nbsp;i można ją podłączać pod skrót klawiaturowy w Management Studio i testować.&lt;/P&gt;
&lt;H3&gt;Podłączamy utilsa pod skrót klawiaturowy w Management Studio&lt;/H3&gt;
&lt;P&gt;Podłączenie procedury pod skrót odbywa się w Management Studio przez wejście w menu główne &lt;STRONG&gt;Tools - Options...&lt;/STRONG&gt;, a następnie w oknie &lt;STRONG&gt;Options&lt;/STRONG&gt; wejście w &lt;STRONG&gt;Environment - Keyboard&lt;/STRONG&gt; w drzewie po lewej stronie okna. Nazwę procedury wpisujemy obok wybranego przez nas skrótu i... niestety po kliknięciu OK musimy zrestartować Management Studio, żeby cieszyć się nową funkcjonalnością.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/917/original.aspx"&gt;&lt;/P&gt;
&lt;H3&gt;Testujemy utilsa&lt;/H3&gt;
&lt;P&gt;Utilsa przetestujemy na obiektach bazy &lt;A href="http://codeplex.com/SqlServerSamples#databases"&gt;AdventureWorks&lt;/A&gt;, którą większość osób używających SQL Server 2005 wykorzystuje jako swego rodzaju poligon doświadczalny. W Management Studio otwieramy nowe okno edytora skryptów T-SQL, zmieniamy bieżącą bazę na AdventureWorks&amp;nbsp;i wpisujemy nazwę interesującego nas obiektu, np. 'Production.Product' (nazwa złożona z dwóch lub więcej członów musi być ujęta w apostrofy, by procedura sp_getcolumns wykonała się poprawnie). Zaznaczamy nazwę obiektu (razem z apostrofami) i wciskamy skrót klawiaturowy wybrany wcześniej dla procedury sp_getcolumns. W wyniku powinniśmy otrzymać listę kolumn tabeli, przy czym każda kolumna będzie wyświetlona w osobnym wierszu. Jeżeli zależy nam na liście w jednym wierszu, dopisujemy przecinek i jedynkę:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'Production.Product'&lt;/span&gt;, 1&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;zaznaczamy cały powyższy kawałek kodu&amp;nbsp;i ponownie używamy skrótu klawiaturowego.&lt;/P&gt;
&lt;P&gt;Ważne, by zawsze znajdować się w kontekście właściwej bazy przed użyciem utilsa sp_getcolumns.&lt;/P&gt;
&lt;H3&gt;Co dalej?&lt;/H3&gt;
&lt;P&gt;Możliwości rozbududowy utilsa opisanego powyżej są spore. Można dołożyć na przykład obsługę wyświetlania typów danych dla kolumn i parametrów. Można dać możliwość tworzenia wzorców (np. do każdej nazwy kolumny util może dokładać prefiks @, dzięki czemu automatycznie otrzymamy listę parametrów dla nowo tworzonej procedury składowanej). Kwestia inwencji twórczej i potrzeb.&lt;/P&gt;
&lt;H3&gt;Dlaczego utilsy rządzą?&lt;/H3&gt;
&lt;P&gt;Odpowiedź jest prosta. Bo dzięki nim możemy wszystko wykonać szybciej, lepiej (dobrze przetestowane automaty nie popełniają błędów) i nie używając myszy :-) Stworzenie biblioteki utilsów nie przychodzi od razu. To lata ciężkiej dłubaniny. Ale tworzenie takich kawałków kodu, dzięki którym w przyszłości mniej się narobimy, daje wielką satysfakcję. Polecam.&lt;/P&gt;
&lt;P&gt;PS. Jeżeli napisałeś ciekawego utilsa i chcesz się nim pochwalić - wyślij do mnie maila na adres&amp;nbsp;pawel.[_no_spam_]potasinski@sqlpass.org.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;[EDIT] Wyciąłem z notki błędną informację,&amp;nbsp;jakoby widoki&amp;nbsp;systemowe w SQL Server 2005 były przeglądane&amp;nbsp;z poziomu bazy, w któej znajduje się procedura. To stwierdzenie okazało się nieprawdziwe. W związku z tym kod utilsa sp_getcolumns też uległ modyfikacji. [/EDIT]&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=916" width="1" height="1"&gt;</description><enclosure url="http://zine.net.pl/blogs/sqlgeek/attachment/916.ashx" length="1319" type="text/plain" /><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/narz_1901_dzia/default.aspx">narzędzia</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/T-SQL/default.aspx">T-SQL</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/procedury+sk_4201_adowane/default.aspx">procedury składowane</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/utilities/default.aspx">utilities</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Management+Studio/default.aspx">Management Studio</category></item><item><title>[PL][podcast] W kuluarach C2C'08</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/09/podcast-w-kuluarach-c2c-08.aspx</link><pubDate>Wed, 09 Apr 2008 12:37:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:913</guid><dc:creator>brejk</dc:creator><slash:comments>1</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/913.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=913</wfw:commentRss><description>&lt;P&gt;O konferencji Communities to Communities 2008 już pisałem (patrz wpis -&amp;gt; &lt;A id=bp___ctl00___RecentPosts___postlist___EntryItems_ctl00_PostTitle href="http://zine.net.pl/blogs/sqlgeek/archive/2008/04/07/communities-to-communities-2008-wra-enia-na-gor-co.aspx"&gt;&lt;FONT color=#003399&gt;Communities to Communities 2008 - wrażenia na gorąco&lt;/FONT&gt;&lt;/A&gt;). Zresztą nie tylko ja podzieliłem się swoimi wrażeniami a propos tego wydarzenia. Zrobiło tak wiele osób i - co cieszy - na ogół są to opinie bardzo pozytywne (lista odnośników dostępna jest na &lt;A href="http://www.c2c2008.pl/pl/PostConference.aspx"&gt;stronie C2C'08&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;Dzisiaj chciałbym się podzielić pewnym nagraniem audio (patrz załącznik do tego&amp;nbsp;posta), które powstało dość spontanicznie w kuluarach konferencji. Trzy osoby - &lt;A href="https://mvp.support.microsoft.com/profile=dfa280b3-6c56-4e71-a22c-97c7ad41cfce"&gt;Marcin Szeliga&lt;/A&gt;, &lt;A href="http://www.w2k.pl"&gt;Tomek Onyszko&lt;/A&gt; i ja - usiadły, by podzielić się uwagami na temat samej konferencji oraz nowych technologii (dominował oczywiście SQL Server 2008). Właściwie to nagranie, które powstało, jest tylko zalążkiem tego, co chcieliśmy nagrać, ale na skutek nieumiejętnej obsługi urządzenia nagrywającego straciliśmy pierwsze nagranie (dłuższe, co nie znaczy, że ciekawsze). I tak doszliśmy do wniosku, że fajna nam się udała konferencja, że należy takie imprezy robić częściej, że wypadałoby zrobić taką imprezę dla IT Prosiaków (których społeczności offline ostatnio niestety słabo funkcjonują). Tomek zdeklarował się pomóc przy organizowaniu takiego wydarzenia. Marcin wymienił parę nowych funkcjonalności Katmai, które szczególnie mu przypadły do gustu (właściwie to ja wymieniłem je za Marcina, a on tylko przytakiwał ;-)). Całość jest okraszona momentem, w którym uczestnicy konferencji wychodzą z sal oraz wejściem w rozmowę paru osób, z Maćkiem Pileckim i Karolem Stilgerem na czele. Miłego słuchania - czas trwania 10 minut i 18 sekund.&lt;/P&gt;
&lt;P&gt;Na koniec dodam, że nagranie było możliwe dzięki &lt;A href="http://zine.net.pl/blogs/mgrzeg/"&gt;Michałowi Grzegorzewskiemu&lt;/A&gt;, który użyczył nam wysokiej jakości urządzenie do nagrywania. Dzięki Michał!&lt;/P&gt;
&lt;P&gt;PS. A już za jakiś czas będą dostępne filmy z konferencji (sesje, wywiady). To się dopiero będzie działo!&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=913" width="1" height="1"&gt;</description><enclosure url="http://zine.net.pl/ZineCasts/C2C2008_1.mp3" length="14827741" type="audio/mpeg" /><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/wydarzenia/default.aspx">wydarzenia</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/C2C/default.aspx">C2C</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/podcast/default.aspx">podcast</category></item><item><title>[PL] Communities to Communities 2008 - wrażenia na gorąco</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/07/communities-to-communities-2008-wra-enia-na-gor-co.aspx</link><pubDate>Mon, 07 Apr 2008 06:52:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:911</guid><dc:creator>brejk</dc:creator><slash:comments>2</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/911.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=911</wfw:commentRss><description>&lt;P&gt;Makao i po makale! &lt;/P&gt;
&lt;P&gt;W sobotę 5 kwietnia 2008 (myślę, że wielu zapamięta ten dzień) odbyła się konferencja &lt;A href="http://www.c2c2008.pl"&gt;Communities to Communities 2008&lt;/A&gt; (C2C'08). W sumie nie byłoby w niej niczego specjalnego - ot, wydarzenie dla trochę ponad&amp;nbsp;200 osób. Tyle, że ta konferencja była specjalna. Została w całości zorganizowana przez ludzi z &lt;A href="http://c2c2008.pl/pl/Organizers.aspx"&gt;grup pasjonackich&lt;/A&gt;. Zanim przejdę do moich wrażeń z soboty, pozwolę sobie na krótką retrospekcję.&lt;/P&gt;
&lt;P&gt;Pomysł zorganizowania tej konferencji zrodził się w głowie &lt;STRONG&gt;Michała Grzegorzewskiego&lt;/STRONG&gt;&amp;nbsp;na długo przed tym, jak zaczęliśmy planować samo wydarzenie. Michał miał wizję tej konferencji sprecyzowaną w najmniejszych detalach. W założeniu miała to być konferencja, na której byłoby "zero marketingu", a sesje byłyby wybrane przez ludzi ze społeczności. Od pomysłu do czynu daleko nie było, jak się okazało. Gdyby ktoś dzisiaj zapytał mnie, co jest potrzebne do zorganizowania takiej konferencji, odpowiedziałbym bez mrugnięcia okiem: "musisz wybrać datę, a potem zrobić konferencję" :-) Mniej więcej od października 2007 roku aktywnie organizowaliśmy zaplecze dla konferencji. Wielki w tym udział &lt;STRONG&gt;Daniela Araka&lt;/STRONG&gt; (reprezentant Ineta na Polskę), który cierpliwie pisał maila za mailem, aż w końcu &lt;STRONG&gt;Ineta&lt;/STRONG&gt; zasponsorowała przyjazd na C2C'08 &lt;STRONG&gt;Dino Esposito&lt;/STRONG&gt; i &lt;STRONG&gt;Martina Kulova&lt;/STRONG&gt;. Już wtedy było wiadomo, że C2C'08 ma szansę być naprawdę wspaniałym wydarzeniem.&amp;nbsp;Kilka tygodni później do listy prelegentów dołączyli: &lt;STRONG&gt;Jarek Kowalski&lt;/STRONG&gt;, który przyleciał do nas z Redmond na zaproszenie Michała Grzegorzewskiego, &lt;STRONG&gt;Maciej Pilecki&lt;/STRONG&gt;, który jako jedyny prelegent poprowadził dwie sesje (z mojej strony podziękowania dla organizacji &lt;STRONG&gt;Culminis&lt;/STRONG&gt; oraz firmy &lt;STRONG&gt;Red Gate&lt;/STRONG&gt;, dzięki którym mogliśmy opłacić przyjazd Maćka)&amp;nbsp;oraz &lt;STRONG&gt;Marcin Szeliga&lt;/STRONG&gt;, który od czasu wyjazdu Maćka Pileckiego na Łotwę jest jedynym polskim MVP w kategorii SQL Server. Jednak samo zaproszenie prelegentów było tylko wierzchołkiem góry lodowej w temacie organizacji konferencji. Okazało się, że większość wysiłków przy organizacji takiej imprezy należy kierować w stronę logistyki. Tu nieocenioną pomoc otrzymaliśmy ze strony kilku osób z firmy Microsoft: &lt;STRONG&gt;Basia Sokólska&lt;/STRONG&gt; podzieliła się z nami swoimi doświadczeniami związanymi z organizacją konferencji (później także aktywnie wspomagała nas swoją osobą w dniu konferencji), &lt;STRONG&gt;Artur Żarski&lt;/STRONG&gt; wspierał nas radą, gdy kompletowaliśmy listę prelegentów, &lt;STRONG&gt;Piotr Pysiak&lt;/STRONG&gt; i &lt;STRONG&gt;Rafał Czupryński&lt;/STRONG&gt; aktywnie wspierali nas w zakresie logistyki i godzenia naszych oczekiwań z wewnętrznymi regulacjami korporacji (wymieniłbym przede wszystkim pomoc w&amp;nbsp;przygotowaniu sal, uruchomienie rejestracji na ścieżkę SQL oraz przygotowanie identyfikatorów) :-) Nie do przecenienia jest też wkład &lt;STRONG&gt;Anety Sidorowicz&lt;/STRONG&gt; - dobrego ducha zespołu organizującego C2C'08. To ona czuwała nad tym, byśmy nie przeoczyli najmniejszego szczegółu i by wszystko było dopięte na ostatni guzik w dniu konferencji (a także, o czym pewnie nie wszyscy wiedzą, byśmy się nie pozabijali w czasie dyskusji na tematy organizacyjne ;-)). To ona ukrywała się pod adresem mailowym info@c2c2008.pl :-) Pełna lista osób, które brały udział w zorganizowaniu tej konferencji znajduje się &lt;A href="http://c2c2008.pl/pl/aboutus.aspx"&gt;tutaj&lt;/A&gt;. Wszystkim tym ludziom - z mojej strony wielki szacunek. &lt;/P&gt;
&lt;P&gt;Oczywiście podziękowania także dla wszystkich sponsorów, dzięki którym konferencja była możliwa do zrealizowania.&lt;/P&gt;
&lt;P&gt;Wreszcie sama konferencja. To było coś niesamowitego. Sobota, dzień wolny od pracy. A tu - ponad 200 osób z całego kraju przyjeżdża do Warszawy na konferencję! Na początku okazało się, że nasz algorytm overbookingu (+30% dodane do liczby zarejestrowanych uczestników) sprawdził się w 100%. Sale były wypełnione po brzegi, ale też nie było tłoku, bo rzeczywiście udało nam się przewidzieć, ile&amp;nbsp;spośród zarejestrowanych&amp;nbsp;osób nie przyjedzie (tu ukłon w stronę Basi, bo to jej know-how zaowocowało). Co ciekawe, udało nam się osiągnąć (przypadek?) brak kolejek przy rejestracji ;-) A po godzinie 9:00 zaczęło się technologiczne szaleństwo. Nie jestem właściwą osobą, by pisać o poziomie sesji i umiejętnościach prelegentów (żadnej sesji nie widziałem od początku do końca). Z tego, co mówili uczestnicy, wszystkie sesje prezentowały się na poziomie od 300 wzwyż. Czyli technologia i to często w wydaniu "deep dive". Oczywiście, nie ominęły nas problemy techniczne (jak choćby "pad" laptopa na sesji Maćka Pileckiego - btw, nowa świecka tradycja? :-)), ale nie przeszkodziły one na dłuższą metę w prowadzeniu prezentacji. Prawdę na temat poziomu prelegentów i sesji zweryfikują zapewne ankiety, które wypełnili uczestnicy, ale &lt;A href="http://www.maciejaniserowicz.com/post/2008/04/Relacja-z-Communities-to-Communities-2008---C2C.aspx"&gt;pierwsze komentarze&lt;/A&gt; napawają optymizmem (w sieci pojawiły się także &lt;A href="http://picasaweb.google.pl/krakow.group.net/C2C2008"&gt;pierwsze zdjęcia&lt;/A&gt; z konferencji). Ja tylko mogę napisać, że te fragmenty sesji na obu ścieżkach, które widziałem, były naprawdę ciekawe (włącznie z "wejściem smoka" Dino Esposito). W tematach czysto organizacyjnych - okazało się, że pizza zamiast cateringu nie była złym pomysłem. Tu słowa uznania dla Piotrka Pysiaka, który przewidział prawie co do sztuki, jaką ilość jedzenia należy zamówić. Wypada też podziękować Paniom hostessom, które nie dość, że sprawnie osługiwały rejestrację uczestników i "minutki" sesji, to jeszcze z szybkością i precyzją bolida Roberta Kubicy sprzątnęły po lunchu. &lt;/P&gt;
&lt;P&gt;Przyznam, że po całym dniu konferencji byłem "żywym trupem" (ale i tak udałem się na wieczorną część nieoficjalną :-)). Pilnowanie, by wszystko szło, jak należy, jest naprawdę męczące. To trzeba przeżyć, by zrozumieć, że ludzie organizujący imprezy typu Teched czy MTS są naprawdę tytanami pracy. Ale warto było. Warto było choćby dla tych oklasków, które rozległy się, gdy Daniel wygłosił "mowę pożegnalną". Warto, bo od soboty słyszę tych wszystkich ludzi pytających, kiedy następna taka konferencja. Warto, bo była to wspaniała promocja grup pasjonackich w Polsce. Okazało się, że jak się chce, to można. &lt;/P&gt;
&lt;P&gt;Na koniec wreszcie posłużę się tekstem, który wspólnie z Michałem Grzegorzewskim planowaliśmy promować jako hasło przewodnie C2C'08 (zdanie pochodzi z filmu "Cast Away" z Tomem Hanksem w roli głównej): "Look what I have created!" Nic dodać, nic ująć - moim zdaniem wszyscy możemy być z siebie dumni :-)&lt;/P&gt;
&lt;P&gt;Czuję się zaszczycony tym, że mogłem uczestniczyć w organizacji tej naprawdę - w moim odczuciu - udanej konferencji. Do zobaczenia na C2C'09?! ;-)&lt;/P&gt;
&lt;P&gt;PS. Wkrótce na stronie konferencji powinny pojawić się materiały multimedialne (oprócz zarejestrowanych sesji także wywiady i inne materiały pokonferencyjne).&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=911" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/wydarzenia/default.aspx">wydarzenia</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/C2C/default.aspx">C2C</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/grupy/default.aspx">grupy</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/spo_4201_eczno_5B010701_/default.aspx">społeczność</category></item><item><title>[PL] PowerShell, Katmai - dwa bratanki</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/04/03/powershell-katmai-dwa-bratanki.aspx</link><pubDate>Thu, 03 Apr 2008 06:10:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:893</guid><dc:creator>brejk</dc:creator><slash:comments>2</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/893.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=893</wfw:commentRss><description>&lt;P&gt;W zeszłym roku na konferencji IT Forum (pisałem o tej konferencji na &lt;A href="http://zine.net.pl/blogs/sqlgeek/archive/2007/11/16/teched-it-forum-emea-2007.aspx"&gt;moim blogu&lt;/A&gt;) najbardziej przypadła mi do gustu prezentacja Boba Beauchemin'a o integracji SQL Server 2008 i PowerShella. Wtedy Bob prezentował dema na maszynie wirtualnej z objętą NDA wersją SQL Server 2008 CTP6. Dziś wersję CTP6 mam już zainstalowaną na swoim laptopie i mogę się pobawić tą nowinką.&lt;/P&gt;
&lt;P&gt;Zapewne każdy, kto choć trochę śledzi rozwój systemów Microsoft, wie, czym jest PowerShell. Z grubsza jest to rozszerzona konsola linii poleceń, w której użytkownik może korzystać z ogromnej gamy wbudowanych poleceń i aliasów stanowiących potężne rozszerzenie możliwości standardowej konsoli oraz może w prosty sposób używać bibliotek .NET Framework'a.&lt;/P&gt;
&lt;P&gt;Ostatnimi czasy obiło mi się o uszy, że Microsoft "dorzucił" PowerShell do Common Criteria, czyli do komponentów, które pojawią się lub będą wspierały praktycznie wszystkie produkty Microsoft. Póki co, raczej nie jest to prawdą, bo w Windows Core nie ma PowerShella (z racji braku .NET Framework'a).&lt;/P&gt;
&lt;P&gt;Jak wygląda wsparcie dla SQL Server 2008 w PowerShellu . Po otwarciu aplikacji SQL Server Management Studio użytkownik ma możliwość uruchomienia konsoli PowerShell wykorzystującej specjalnego dedykowanego providera dla SQL Server 2008. Dzięki wykorzystaniu tego providera konsola oferuje możliwość nawigowania po instancjach, bazach danych i predefiniowanych folderach logicznych grupujących na przykład&amp;nbsp;obiekty baz danych za pomocą standardowych poleceń typu cd czy dir, a także&amp;nbsp;wykonywanie operacji na instancjach SQL Server, bazach danych czy obiektach tych baz.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/894/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Już próba wylistowania napędów dostępnych w konsoli PowerShell podpowiada, że nie używamy zwyczajnej konsoli PowerShell. Wśród znanych napędów, takich jak dyski logiczne czy rejestr, znajdziemy pozycje takie jak SQL, SQLSERVER&amp;nbsp;czy SQLPolicy. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/895/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Nawigując poleceniem cd do wnętrza napędu SQL:\ dostajemy się w końcu do listy instancji na lokalnym serwerze. Po wejściu do ścieżki wybranej instancji i wylistowaniu zawartości okaże się, że wewnątrz znajdują się pewne logiczne foldery, z których spora część nie jest obca użytkownikom systemu SQL Server i narzędzia Management Studio (np. folder Databases).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/896/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Wejście w folder Databases i wylistowanie zawartości daje listę baz danych (z wyjątkiem baz systemowych). Poniższy zrzut ekranu ilustruje proces usunięcia bazy danych o nazwie CLRHCL&amp;nbsp;z serwera.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/897/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Można też zmieniać opcje baz danych - patrz poniższy zrzut ekranu.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/898/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Tu ciekawostka - zmianę opcji bazy powoduje dopiero wywołanie metody Alter() obiektu klasy Database. Czyli nawet jeśli zmienimy kilka opcji jedna po drugiej, zmiany zostaną zapisane dopiero po wywołaniu wspomnianej metody.&lt;/P&gt;
&lt;P&gt;Ponieważ w odniesieniu do instancji SQL Server, baz danych czy obiektów tychże baz PowerShell używa standardowych klas z biblioteki SMO, użytkownik może użyc na przykład metody Script() do skryptowania obiektów.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/899/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;To oczywiście tylko niewielki fragment funkcjonalności, jakie oferuje konsola PowerShell administratorom SQL Server. Ale wydaje mi się, że nawet przedstawione możliwości dają pogląd na to, jak ciekawym narzędziem jest ta konsola. Oczywiście, można w niej także&amp;nbsp;wykorzystać&amp;nbsp;gotowe skrypty i biblioteki&amp;nbsp;- tu polecam &lt;A href="http://www.pluralsight.com/dan/samples/ST-PowerSMO.zip"&gt;PowerSMO&lt;/A&gt; autorstwa Dana Sullivan'a (poniżej zamieszczam odnośniki do opisu możliwości PowerSMO).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.simple-talk.com/sql/database-administration/managing-sql-server-using-powersmo/"&gt;Managing SQL Server using PowerSMO&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.simple-talk.com/sql/database-administration/powersmo-at-work-part-i-dba-scripts-and-functions/"&gt;PowerSMO At Work Part I: DBA Scripts and Functions&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.simple-talk.com/sql/database-administration/powersmo-at-work-part-2/"&gt;PowerSMO at Work Part 2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Warto pamiętać, że zapewne znaczną część funkcjonalności oferowanych przez PowerSMO w konsoli PowerShell dostępnej w SQL Server 2008 użytkownik dostaje bez używania tej biblioteki (sam provider dostarcza takie możliwości). Ale PowerSMO jest, moim zdaniem, ciekawym przykładem na to, co można w PowerShellu osiągnąć, nawet bez dedykowanych provider'ów.&lt;/P&gt;
&lt;P&gt;A zatem do dzieła, testujmy konsolę PowerShell'a dla DBA. A jeśli komuś uda się osiągnąć jakieś ciekawe wyniki podczas pracy z tą konsolą, chętnie o tym&amp;nbsp;posłucham lub poczytam.&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=893" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Katmai/default.aspx">Katmai</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>[PL] Wsparcie (?) dla XML w SQL Server 2005</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/03/30/wsparcie-dla-xml-w-sql-server-2005.aspx</link><pubDate>Sun, 30 Mar 2008 14:13:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:883</guid><dc:creator>brejk</dc:creator><slash:comments>0</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/883.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=883</wfw:commentRss><description>&lt;P&gt;Właśnie przeczytałem ciekawe pytanie na forum CodeGuru.pl (&lt;A href="http://codeguru.pl/forum-posts-12220-0.aspx"&gt;http://codeguru.pl/forum-posts-12220-0.aspx&lt;/A&gt;). Kolega zapytał, czy da się w języku T-SQL w SQL Server 2005 wstawić w środek zmiennej typu XML&amp;nbsp;zawartość innej zmiennej typu XML. Pytanie wydaje się naturalne i w sumie oczekiwałbym, że odpowiedź jest trywialna (że się da i to w prosty sposób). Ale okazało się, że nie jest lekko. Otóż...&lt;/P&gt;
&lt;P&gt;Typ danych XML dysponuje metodą &lt;STRONG&gt;modify()&lt;/STRONG&gt;, która pozwala na modyfikowanie zawartości zmiennych i pól typu XML. Jednym z poleceń XQuery, jakich można użyć wewnątrz wywołania metody modify(), jest polecenie &lt;STRONG&gt;insert&lt;/STRONG&gt;. Jednak polecenie to pozwala wstawiać w dowolne właściwie miejsce podanego XML-a tylko literały. To wyklucza jakąkolwiek parametryzację. Zatem&amp;nbsp;SQL Server 2005 nie obsłuży czegoś takiego:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @x XML&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; @x = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;Root&amp;gt;&amp;lt;/Root&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @t XML&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; @t = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;asd&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; @x.modify( &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&lt;br /&gt;            insert sql:variable("@t")&lt;br /&gt;            as last into (/Root)[1] '&lt;/span&gt; )&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @x&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Komunikat błędu nie nastraja optymistycznie:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;XQuery: SQL type 'xml' is not supported in XQuery.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Próba użycia zmiennej typu varchar/nvarchar daje inny komunikat:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;XQuery [modify()]: Only non-document nodes can be inserted. Found "xs:string ?".&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Czyli suma sumarum nic z tego?&lt;/P&gt;
&lt;P&gt;Oczywiście, istnieje obejście tego problemu (patrz wspomniany &lt;A href="http://codeguru.pl/forum-posts-12220-0.aspx"&gt;wątek na CodeGuru.pl&lt;/A&gt;), ale fakt, że SQL Server 2005 w takich sytuacjach sobie po prostu nie radzi, nieco psuje ogólny wizerunek tego, co szumnie nazywa się "wsparciem dla XML". Na pocieszenie warto wspomnieć, że opisany powyżej przypadek w SQL Server 2008 CTP6 działa bez żadnych "tricków".&lt;/P&gt;
&lt;P&gt;Przychodzi mi jeszcze na myśl jedno pytanie. XML jest formatem tekstowym, choć dość speczyficznym oczywiście. Wydawałoby się, że łączenie dwóch fragmentów XML mogłoby się odbywać za pomocą najzwyklejszej konkatenacji. Jednak w SQL Server to nie jest możliwe. Próba wykonania poniższego kodu:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @x XML, @y XML&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @x = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;a&amp;gt;a&amp;lt;/a&amp;gt;'&lt;/span&gt;, @y = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;b&amp;gt;b&amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @x + @y &lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;kończy się komunikatem:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;Operand data type xml is invalid for add operator.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I na to jest lekarstwo:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;DECLARE&lt;/span&gt; @x XML, @y XML&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @x = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;a&amp;gt;a&amp;lt;/a&amp;gt;'&lt;/span&gt;, @y = &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'&amp;lt;b&amp;gt;b&amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; @x, @y &lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FOR&lt;/span&gt; XML PATH(&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;''&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Co nie zmienia faktu, że dziwi mnie brak operatora konkatenacji dla typu XML w SQL Server (w wersji 2008 CTP6 nie ma nadal tego operatora).&lt;/P&gt;
&lt;P&gt;Kończąc, chciałbym zaznaczyć, że wsparcie dla XML w SQL Server 2005 to dla mnie i tak wielki krok naprzód w porównaniu z tym, czym dysponował SQL Server 2000. Na moje potrzeby to wsparcie jest wystarczające (najistotniejsze wydają się: możliwość pobierania zawartości zewnętrznych plików w formacie XML, łatwe i sprawne zapytywanie o dowolne fragmenty dokumentu XML, wsparcie dla walidacji dokumentów XML). Niektórzy twierdzą wręcz, że&amp;nbsp;przechowywanie dokumentów XML w bazach relacyjnych to herezja godząca w&amp;nbsp;podstawowe doktyrny relacyjności (w końcu naruszamy normalizację przez trzymanie złożonych danych w&amp;nbsp;pojedynczych polach).&amp;nbsp;Jednak inni użytkownicy, którzy oczekują pełnej swobody w obsłudze formatu XML w SQL Server,&amp;nbsp;bardziej dosadnie wyrażają swoje opinie na temat wpadek takich, jak opisane w tym wątku (przyklad - &lt;A href="http://www.opinionatedgeek.com/Blog/blogentry=000299/Blog.aspx"&gt;tutaj&lt;/A&gt;).&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=883" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/XML/default.aspx">XML</category></item><item><title>[PL] C2C - SQL track</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/03/18/c2c-sql-track.aspx</link><pubDate>Tue, 18 Mar 2008 09:35:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:869</guid><dc:creator>brejk</dc:creator><slash:comments>0</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/869.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=869</wfw:commentRss><description>&lt;P&gt;Już za nieco ponad dwa tygodnie odbędzie się pierwsza w historii konferencja organizowana przez polskie&amp;nbsp;grupy pasjonackie Microsoft - Communities to Communities 2008. Obie ścieżki - .NET i SQL - są już obsadzone. O ścieżce .NET pisze Michał Grzegorzewski na &lt;A href="http://zine.net.pl/blogs/mgrzeg/archive/2008/03/10/c2cagendaready.aspx"&gt;swoim blogu&lt;/A&gt;. Dlatego, żeby uzupełnić informacje, ja napiszę o ścieżce SQL, której jestem opiekunem.&lt;/P&gt;
&lt;P&gt;I tak agenda przedstawia się następująco:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="WIDTH:100%;" cellPadding=10&gt;

&lt;TR style="BACKGROUND-COLOR:#99ccff;"&gt;
&lt;TH&gt;&lt;B&gt;&lt;FONT size=2&gt;Ścieżka &lt;/FONT&gt;&lt;/B&gt;&lt;/TH&gt;
&lt;TH&gt;&lt;B&gt;&lt;FONT size=2&gt;SQL&lt;/FONT&gt;&lt;/B&gt;&lt;/TH&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#99ccff;"&gt;
&lt;TH style="BACKGROUND-COLOR:#99ccff;"&gt;&lt;B&gt;&lt;FONT size=2&gt;Sala&lt;/FONT&gt;&lt;/B&gt;&lt;/TH&gt;
&lt;TH&gt;&lt;B&gt;&lt;FONT size=2&gt;27+28&lt;/FONT&gt;&lt;/B&gt;&lt;/TH&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;08:00-09:00&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Rejestracja&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;09:00-09:15&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Powitanie uczestników&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#e9e9e9;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;09:15-10:30&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL3"&gt;&lt;FONT size=2&gt;SQL Server 2008 Policy-Based Management na zewnątrz i od środka&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://www.c2c2008.pl/pl/Speakers.aspx#6aa0f763-ddca-478b-8eb6-ff3be8571bb5"&gt;&lt;FONT size=2&gt;Damian Widera&lt;/FONT&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;10:30-10:45&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Przerwa&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#e9e9e9;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;10:45-12:00&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL2"&gt;&lt;FONT size=2&gt;SQL Server 2008 Resource Governor&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://www.c2c2008.pl/pl/Speakers.aspx#95a9a9e2-94b0-479b-8562-745a32707c77"&gt;&lt;FONT size=2&gt;Maciej Pilecki&lt;/FONT&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;12:00-13:00&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Pizza time&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#e9e9e9;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;13:00-14:15&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL1"&gt;&lt;FONT size=2&gt;Bezpieczeństwo w SQL Server 2008&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL3"&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.c2c2008.pl/pl/Speakers.aspx#4b7e17a7-b389-4e3b-bc78-554e924b76ab"&gt;&lt;FONT size=2&gt;Marcin Szeliga&lt;/FONT&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;14:15-14:30&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Przerwa&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#e9e9e9;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;14:30-15:45&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL4"&gt;&lt;FONT size=2&gt;Nowości w strojeniu SQL Server 2008&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://www.c2c2008.pl/pl/Speakers.aspx#e0f88187-3e30-47a5-872b-8dbdbbe68c08"&gt;&lt;FONT size=2&gt;Sylwester Lewandowski&lt;/FONT&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;15:45-16:00&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Przerwa&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#e9e9e9;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;16:00-17:15&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://www.c2c2008.pl/pl/Sessions.aspx#SQL5"&gt;&lt;FONT size=2&gt;Największe mity na temat SQL Server&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://www.c2c2008.pl/pl/Speakers.aspx#95a9a9e2-94b0-479b-8562-745a32707c77"&gt;&lt;FONT size=2&gt;Maciej Pilecki&lt;/FONT&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND-COLOR:#cccccc;"&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;17:15-17:30&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Podsumowanie i zakończenie konferencji&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Jak dla mnie tematy są super i na czasie. Poniżej abstrakty wszystkich sesji:&lt;/P&gt;
&lt;UL class=sf_list_expanded&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;SPAN id=ctl00_Content_ListDisplay1_ctl00_ctl00_lists_ctl01_listItems_ctl01_headline&gt;SQL Server 2008 Policy-Based Management na zewnątrz i od środka - Damian Widera&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV class=sf_item_body&gt;&lt;A name=SQL3&gt;&lt;/A&gt;Microsoft SQL Server 2008 Policy-Based Management (PBM, poprzednio zwane Declarative Management Framework) jest z całą pewnością jedną z najważniejszych nowości, które zostały wprowadzone do SQL Server 2008. Przy użyciu PBM można w łatwy i intuicyjny sposób zarządzać instancjami SQL Server przez definiowanie polis. &lt;BR&gt;Podczas sesji zostaną przedstawione metody tworzenia i zarządzania PBM przy pomocy SQL Server Management Studio (SSMS) oraz zostanie wprowadzony model programowy PBM, ktory pozwala administratorm tworzyc i zarządzac polisami za pomoca kodu T-SQL.&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;SPAN id=ctl00_Content_ListDisplay1_ctl00_ctl00_lists_ctl01_listItems_ctl02_headline&gt;SQL Server 2008 Resource Governor - Maciej Pilecki&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV class=sf_item_body&gt;&lt;A name=SQL2&gt;&lt;/A&gt;SQL Server 2008 przynosi nową interesującą funkcjonalność - Resource Governor. Pozwala ona na grupowanie i ustalanie limitów wykorzystania pamięci i procesora dla różnych rodzajów zapytań wykonywanych na instancji serwera. Daje nam to możliwość ochrony przed negatywnym wpływem jaki jedno intensywne zapytanie może mieć na wydajność pozostałych zapytań na serwerze i ustalanie priorytetów w wykorzystaniu zasobów serwera. W trakcie tej sesji omówimy typowe scenariusze wykorzystania Resource Governora, model działania, podstawową terminologię i narzędzia dostępne do zarządzania, oraz zademonstrujemy jego działanie w praktyce.&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;SPAN id=ctl00_Content_ListDisplay1_ctl00_ctl00_lists_ctl01_listItems_ctl03_headline&gt;Bezpieczeństwo w SQL Server 2008 - Marcin Szeliga&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV class=sf_item_body&gt;&lt;A name=SQL1&gt;&lt;/A&gt;Zapraszam na sesję poświeconą bezpieczeństwu serwera SQL 2008 i przechowywanym w nim danych. Oprócz nowych mechanizmów zabezpieczeń, takich jak Transparent Database Encryption, Extensible Key Management, czy Auditing, przedstawione zostaną kryptograficzne techniki zapewniania poufności danych oraz integralności modułów kodu.&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;SPAN id=ctl00_Content_ListDisplay1_ctl00_ctl00_lists_ctl01_listItems_ctl04_headline&gt;Nowości w strojeniu SQL Server 2008 - Sylwester Lewandowski&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV class=sf_item_body&gt;&lt;A name=SQL4&gt;&lt;/A&gt;Kolejna wersja SQL Server bez wątpienia poszerza wachlarz opcji, jakimi dysponują administratorzy oraz programiści SQL Server w zakresie poprawy wydajności bazy. Są to między innymi: dodatkowe wskazówki optymalizatora, kompresja kopii bezpieczeństwa, nowe indeksy. Oprócz tego, język T-SQL został rozbudowany o dodatkowe elementy,&lt;BR&gt;przykładowo: table valued parameters. Warto się przekonać, jakie realne korzyści, za sprawą SQL Server 2008, odniosą wszyscy, którym szybkie działanie bazy nie jest obojętne.&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;H5&gt;&lt;SPAN id=ctl00_Content_ListDisplay1_ctl00_ctl00_lists_ctl01_listItems_ctl05_headline&gt;Największe mity na temat SQL Server - Maciej Pilecki&lt;/SPAN&gt;&lt;/H5&gt;
&lt;DIV class=sf_item_body&gt;&lt;A name=SQL5&gt;&lt;/A&gt;Chciałbym dostawać 10 centów za każdym razem kiedy ktoś powie coś w stylu: "zmienne tabelaryczne istnieją tylko w pamięci" albo "jeśli robisz SELECT * FROM XYZ, to dostaniesz wiersze w kolejności indeksu klastrowanego". Jeśli zajrzeć do Internetu, można niestety znaleźć mnóstwo takich błędnych wypowiedzi. W trakcie tej sesji zajmiemy się rozwiewaniem wielu rozpowszechnionych wierzeń na temat sposobu działania silnika bazodanowego SQL Servera. Przekonaj się sam dlaczego są one błędne i zaproponuj własnego kandydata na mit!&lt;BR&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=sf_item_body&gt;A już za moment ruszy &lt;A href="http://www.c2c2008.pl/pl/Registration.aspx"&gt;&lt;STRONG&gt;otwarta rejestracja na ścieżkę SQL&lt;/STRONG&gt;&lt;/A&gt; (25 wolnych miejsc). Do zobaczenia 5 kwietnia w Warszawie! Oj, będzie się działo :-)&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=869" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Communities+to+Communities/default.aspx">Communities to Communities</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/C2C/default.aspx">C2C</category></item><item><title>[PL] Ken Henderson - The Guru's gone</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/01/30/ken-henderson-the-guru-s-gone.aspx</link><pubDate>Wed, 30 Jan 2008 08:48:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:780</guid><dc:creator>brejk</dc:creator><slash:comments>1</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/780.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=780</wfw:commentRss><description>&lt;P&gt;Nie wiem, czy blog jest dobrym miejscem pisanie podobnych tekstów. Nie&amp;nbsp;sądzę też, bym był właściwą osobą do napisania &amp;nbsp;tego, co zaraz napiszę.&lt;/P&gt;
&lt;P&gt;Wczoraj dowiedziałem się, że w niedzielę odszedł Ken Henderson. Wielu wspaniałych ludzi odchodziło przed nim i o niczyjej śmierci nie pisałem na blogu. Ale Ken Henderson napisał książki, na których - można powiedzieć - się wychowałem. Jego dzieła (nie boję się użyć tego słowa) z serii "The Guru's Guide to..."* tworzyły moją świadomość w świecie baz danych i SQL Server. Do dziś wspominam czasy, gdy w jego książkach znajdowałem rzeczy, o których nie miałem pojęcia, że istnieją. &lt;/P&gt;
&lt;P&gt;O życiu Kena wiem niewiele. Wiem, że zajmował się narzędziami diagnostycznymi&amp;nbsp;oraz wspomagającymi tuning i optymalizację. Aplikacja SQLDiag dostarczana z SQL Server 2005 to jego "dziecko". Ostatnim jego pomysłem był &lt;A href="http://www.codeplex.com/sqlnexus"&gt;SQL Nexus&lt;/A&gt; - aplikacja do badania źródeł problemów wydajnościowych w SQL Server (być może podejmę się napisania artykułu o tym narzędziu).&lt;/P&gt;
&lt;P&gt;Odszedł Guru. Niech spoczywa w pokoju.&lt;/P&gt;
&lt;P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;* Poniżej kilka linków do książek Kena Hendersona&amp;nbsp;na Amazon.com:&lt;BR&gt;&lt;A title="The Guru's Guide to Transact-SQL" href="http://www.amazon.com/Gurus-Guide-Transact-SQL-Ken-Henderson/dp/0201615762/ref=sr_1_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201683573&amp;amp;sr=8-4"&gt;&lt;SPAN class=srTitle&gt;&lt;FONT color=#003399&gt;The Guru's Guide to Transact-SQL&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;BR&gt;&lt;A title="The Guru's Guide to SQL Server Architecture and Internals" href="http://www.amazon.com/Gurus-Guide-Server-Architecture-Internals/dp/0201700476/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201683573&amp;amp;sr=8-5"&gt;&lt;SPAN class=srTitle&gt;&lt;FONT color=#003399&gt;The Guru's Guide to SQL Server Architecture and Internals&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; &lt;BR&gt;&lt;A title="The Guru's Guide to SQL Server Stored Procedures, XML, and HTML" href="http://www.amazon.com/Gurus-Guide-Server-Stored-Procedures/dp/0201700468/ref=sr_1_6?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201683573&amp;amp;sr=8-6"&gt;&lt;SPAN class=srTitle&gt;&lt;FONT color=#003399&gt;The Guru's Guide to SQL Server Stored Procedures, XML, and HTML&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=780" width="1" height="1"&gt;</description></item><item><title>[PL] Co warto wiedzieć o funkcji QUOTENAME</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/01/18/co-warto-wiedzie-o-funkcji-quotename.aspx</link><pubDate>Fri, 18 Jan 2008 11:38:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:755</guid><dc:creator>brejk</dc:creator><slash:comments>2</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/755.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=755</wfw:commentRss><description>&lt;P&gt;Pierwotnym przeznaczeniem funkcji systemowej QUOTENAME w SQL Server&amp;nbsp;było otaczanie niestandardowych (czyli np. zawierających&amp;nbsp;spacje)&amp;nbsp;identyfikatorów (nazw) obiektów nawiasami kwadratowymi lub apostrofami. Oczywiście, z uwagi na to, że funkcja ta umożliwia podanie jako jeden z parametrów dowolnego znaku, QUOTENAME znalazł wiele innych zastosowań.&lt;/P&gt;
&lt;P&gt;Warto jednak wiedzieć o tej funkcji, że jeżeli dostanie ona jako wartość pierwszego parametru napis dłuższy niż 128 znaków (maksymalna długość typu danych sysname - takiego typu jest pierwszy z parametrów funkcji), to zwraca wartość NULL. Przykład:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;QUOTENAME&lt;/span&gt;(&lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;REPLICATE&lt;/span&gt;(N&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'a'&lt;/span&gt;, 129)) &lt;span style="color: Teal;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;-- wynik: NULL&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Intuicja podpowiada, że w takiej sytuacji funkcja mogłaby zareagować nieco inaczej (obciąć nadmiarowe znaki napisu będącego wartością pierwszego parametru). Ale fakty mówią, że jest inaczej.&lt;/P&gt;
&lt;P&gt;Ten przykład pokazuje, że należy sprawdzać w dokumentacji, jakich typów są parametry i wartości zwracane funkcji czy procedur. Brak wiedzy na temat typów wykorzystywanych w obiektach baz danych może doprowadzić do mniejszych lub większych katastrof, ponieważ nie zawsze będzie oczywistym, w którym miejscu kodu powstaje zdradliwa wartość NULL, której usilnie chcemy się pozbyć.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=755" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/funkcje/default.aspx">funkcje</category></item><item><title>[PL] Masowy import plików XML w SQL Server 2005 Express Edition</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/01/15/masowy-import-plik-w-xml-w-sql-server-2005-express-edition.aspx</link><pubDate>Tue, 15 Jan 2008 06:55:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:722</guid><dc:creator>brejk</dc:creator><slash:comments>2</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/722.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=722</wfw:commentRss><description>&lt;P&gt;Wczoraj wieczorem kolega zagadnął mnie, czy znam metodę, która pozwoli mu na dokonanie wstawienia zawartości wielu dokumentów XML (dokładnie chodziło mu o dokumenty XSL) do bazy danych zlokalizowanej na instancji SQL Server 2005 Express Edition. Problem polegał na tym, że - po pierwsze - pliki, choć znajdowały się w jednym katalogu, miały dość przypadkowe nazwy (jedyną wspólną cechą było rozszerzenie), których nie można było zmienić, a po drugie - Express Edition nie dysponuje narzędziami Integration Services (poza aplikacją DTSWizard.exe, która nie umożliwia wykonywania takich operacji). Rozwiązanie przyszło mi do głowy w jednej chwili. W sumie kolega trafił szczęśliwie na człowieka (na mnie), który akurat na bieżąco sporo czyta o skryptowaniu (zarówno w PowerShellu, jak i w starym dobrym&amp;nbsp;Command&amp;nbsp;Shellu). Jakie rozwiązanie mu zaproponowałem? Krok po kroku...&lt;/P&gt;
&lt;P&gt;Mamy bazę danych (tu posłużę się obrazowo bazą tempdb) z tabelą zawierającą kolumnę typu XML:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;USE&lt;/span&gt; tempdb&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TABLE&lt;/span&gt; dbo.Files&lt;br /&gt;(&lt;br /&gt;  FileId &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;IDENTITY&lt;/span&gt;(1,1) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;KEY&lt;/span&gt;,&lt;br /&gt;  FileContent XML &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;NOT&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;NULL&lt;/span&gt;&lt;br /&gt;)&lt;br /&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Importu danych z plików XML w SQL Server 2005 można dokonać używając funkcji OPENROWSET z providerem BULK, np.:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; dbo.Files (FileContent)&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; * &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;OPENROWSET&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BULK&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;'C:\xml\plik.xml'&lt;/span&gt;, SINGLE_NCLOB)&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Problem kolegi sprowadza się zatem do wykonania podanej wyżej składni dla wszystkich plików XML w wybranym katalogu.&lt;/P&gt;
&lt;P&gt;Pierwszym krokiem jest zatem zbudowanie skryptu, który byłby wykonywany w pętli i który to skrypt jako parametr przyjmowałby ścieżkę do pliku XML. Z pomocą przychodzi tu SQLCMD i jego naprawdę użyteczne zmienne skryptowe. Skrypt przedstawiać się może następująco:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;USE&lt;/span&gt; tempdb&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; dbo.Files(FileContent) &lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; * &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;OPENROWSET&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;BULK&lt;/span&gt; $(zmienna), SINGLE_NCLOB) T&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Zmienna skryptowa $(zmienna) będzie służyła do przekazywania nazw plików w kolejnych wykonaniach skryptu.&lt;/P&gt;
&lt;P&gt;Jak uruchomić taki skrypt, by za każdym razem do zmiennej $(zmienna) została przekazana ścieżka do kolejnego pliku XML? Wykorzystując DOS-ową pętlę FOR oczywiście! Wchodzimy zatem w konsolę (cmd.exe) i po wejściu do katalogu, w którym mamy pliki XML i skrypt T-SQL z wywołaniem OPENROWSET (nazwijmy go przykładowo skrypt.sql), wołamy na przykład:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;for %i&amp;nbsp;in (*.xml) do sqlcmd -E -S localhost\SQLEXPRESS -i skrypt.sql -v zmienna="'%~fi'"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Poniżej zrzut ekranu z podobnym wywołaniem (tyle, że nie na wersji Express i nie na instancji nazwanej).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://zine.net.pl/photos/posts_pictures/images/723/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Krótki komentarz do powyższego wywołania SQLCMD w pętli.&amp;nbsp;Do zmiennej %i system będzie w każdej iteracji podstawiał kolejne pliki XML z bieżącego katalogu. Następnie pełna ścieżka (%~fi) do aktualnie podstawionego do zmiennej %i pliku jest podstawiana pod zmienną $(zmienna) w skrypcie T-SQL (dzięki przełącznikowi -v). Proste, ale skuteczne.&lt;/P&gt;
&lt;P&gt;W powyższym rozwiązaniu nie ma oczywiście&amp;nbsp;niczego nowatorskiego. Ale przypadek ten potwierdza, że znajomość wielu narzędzi, w tym narzędzi systemu operacyjnego, jest wielce przydatna. Daje swobodę w działaniu i powoduje, że napotkane problemy możemy rozwiązywać na wiele sposobów.&lt;/P&gt;
&lt;P&gt;Na koniec mała uwaga. Opcja SINGLE_NCLOB wykorzystana w przykładowych wywołaniach OPENROWSET musi czasem zostać zastąpiona opcją SINGLE_CLOB (na przykład wtedy, gdy pliki były utworzone z wykorzystaniem systemowego notatnika i mają stronę kodową typową dla Windows,&amp;nbsp;a nie używają&amp;nbsp;Unicode).&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=722" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/skrypty/default.aspx">skrypty</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/XML/default.aspx">XML</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/command+line/default.aspx">command line</category></item><item><title>[PL] Intellisense, nowe funkcje - tajemnice (?) Katmai CTP5</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/01/08/intellisense-nowe-funkcje-tajemnice-katmai-ctp5.aspx</link><pubDate>Tue, 08 Jan 2008 08:52:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:699</guid><dc:creator>brejk</dc:creator><slash:comments>3</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/699.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=699</wfw:commentRss><description>&lt;P&gt;Co może nam dać Intellisense w SQL Server Management Studio (SSMS) w Katmai? Zasadniczo nie jestem zwolennikiem podpowiadania składni w języku T-SQL. Wynika to z prostej przyczyny - język ten jest na tyle elastyczny i niedoprecyzowany, że zbudowanie dobrego mechanizmu podpowiadania składni wydaje się być dość trudnym, jeśli nie niemożliwym, zadaniem. Microsoft podjął jednak rękawicę i w November CTP zobaczyliśmy pierwszą odsłonę Intellisense w SSMS. Pierwszy kontakt z tym mechanizmem sugeruje, że cała sprawa jest w powijakach i wymaga jeszcze sporego nakładu pracy, choćby po to, by zniknęły trudne do wyjaśnienia błędy wyświetlane przez Intellisense w Katmai. Ale już teraz jest jedna korzyść płynąca z obecności Intellisense w CTP5. Otóż...&lt;/P&gt;
&lt;P&gt;Intellisense&amp;nbsp;w obecnej postaci pozwala między innymi na przejrzenie listy nowych funkcji w Katmai. Listy takiej brakuje w Books Online (BOL). A nowych funkcji&amp;nbsp;jest całkiem sporo. Przeglądając je, zauważyłem, że można je podzielić na pewne kategorie:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;funkcje, które są opisane w BOL i są listowane w Intellisense, 
&lt;LI&gt;funkcje, które są opisane w BOL i nie są listowane w Intellisense, 
&lt;LI&gt;funkcje, których nie ma w BOL, ale działają (lub udają, że działąją) i są w Intellisense, 
&lt;LI&gt;funkcje, których nie ma w BOL, są w Intellisense, ale&amp;nbsp;przy próbie ich użycia pojawia się komunikat błędu o numerze 195.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Przykładem funkcji należącej do pierwszej kategorii jest funkcja &lt;STRONG&gt;CONNECTIONPROPERTY&lt;/STRONG&gt; . Funkcja ta, jak wskazuje nazwa, służy do zwracania metadanych wybranego połączenia. Niestety, funkcja ta&amp;nbsp;zwraca&amp;nbsp;tylko informacje o połączeniu, w ramach którego jest uruchamiana. &lt;/P&gt;
&lt;P&gt;Przykładem funkcji należącej do drugiej kategorii jest &lt;STRONG&gt;ORIGINAL_DB_NAME&lt;/STRONG&gt;. Funkcja ta zwraca w niektórych przypadkach bazę danych, do której podłączył się użytkownik zaraz po udanym zalogowaniu do instancji. Napisałem, że funkcja działa w niektórych przypadkach. Owszem - niektórych, ponieważ żeby ta funkcja cokolwiek zwróciła, przy łączeniu z instancją SQL Server musi zostać jawnie podana baza danych (czyli np. musi zostać użyty przełącznik -d narzędzia SQLCMD czy też w opcjach okna połączenia w SSMS&amp;nbsp;musi zostać określona baza danych). To niestety zmniejsza IMHO przydatność tej funkcji.&lt;/P&gt;
&lt;P&gt;Przykładem funkcji z trzeciej kategorii jest &lt;STRONG&gt;DEFAULT_DOMAIN&lt;/STRONG&gt;. W moim przypadku funkcja zwróciła nazwę domeny, w jakiej znajdowała się maszyna. Funkcji tej faktycznie brakuje w BOL, choć z powodzeniem można jej używać już na SQL Server 2005.&lt;/P&gt;
&lt;P&gt;Wreszcie ostatnia kategoria - funkcje, które istnieją tylko w podpowiedziach udzielanych przez Intellisense.&amp;nbsp;Do najciekawszych z racji nazw należą takie "kwiatki": &lt;STRONG&gt;NORMALIZE&lt;/STRONG&gt;, &lt;STRONG&gt;NORMALIZE_DENORMALIZE&lt;/STRONG&gt; oraz&amp;nbsp;&lt;FONT size=2&gt;&lt;STRONG&gt;GEN_NORM_TABLES&lt;/STRONG&gt;. Czyżby przymiarka do automatu do generowania znormalizowanych tabel? A może nieopatrznie na liście znalazły się jakieś funkcje "internal", których zwykłym użyszkodnikom używać nie wolno?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Tak czy inaczej, zabawa z Intellisense w CTP5 może być interesująca. Można doszukać się nowych obiektów systemowych&amp;nbsp;(są na przykład nowe DMV - choćby dla Resource Governora). Można też odkryć kilka obiektów systemowych, które istniały w poprzednich wersji, ale z racji braku jakiejkolwiek wzmianki w dokumentacji umknęły naszej uwadze. Z tego punktu widzenia Intellisense może okazać się przydatnym narzędziem do odkrywania sekretów Katmai. A jak ktoś już będzie miał dość tego mechanizmu, to po prostu go wyłączy w opcjach SSMS.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=699" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/funkcje/default.aspx">funkcje</category><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/Katmai/default.aspx">Katmai</category></item><item><title>[PL] MVP on Rails :)</title><link>http://zine.net.pl/blogs/sqlgeek/archive/2008/01/01/mvp-on-rails.aspx</link><pubDate>Tue, 01 Jan 2008 11:11:00 GMT</pubDate><guid isPermaLink="false">0de27b5c-4a0c-4e7a-8e19-9d082c99f8a3:692</guid><dc:creator>brejk</dc:creator><slash:comments>4</slash:comments><comments>http://zine.net.pl/blogs/sqlgeek/comments/692.aspx</comments><wfw:commentRss>http://zine.net.pl/blogs/sqlgeek/commentrss.aspx?PostID=692</wfw:commentRss><description>&lt;P&gt;Jeżeli sam tytuł nie wyjaśnia, o czym będzie ta notka, to już nadrabiam. Otóż, wszelkie znaki na niebie i ziemi wskazują, że &lt;STRONG&gt;Michał Grzegorzewski &lt;/STRONG&gt;(aka mgrzeg), nasz Admin on Rails, założyciel zine.net i lider Warszawskiej Grupy .NET, został właśnie uhonorowany tytułem MVP (Most Valuable Professional) przyznawanym za wkład życie społeczności Microsoft!!! Kategoria nominacji&amp;nbsp;jest mi nieznana, ale zgaduję, że jest to oczywiście Visual Developer - Visual C#. Michał jest samą nominacją na pewno zaskoczony, ale chyba każdy, kto choć trochę śledzi życie społeczności .NET w Polsce, przyzna, że jest to bodaj najbardziej zasłużona i wyczekiwana przez wszystkich nominacja! &lt;/P&gt;
&lt;P&gt;Działalność Michała na rzecz community ma długą i barwną historię. Ja sam nie znam Michała na tyle długo, by móc zabierać w tym temacie głos, ale nadmienię to, o czym wiem. Po pierwsze developers.pl. Michał był najaktywniejszym członkiem społeczności tego portalu. Sam portal przez pewien czas stanowił znakomitą alternatywę dla nieco zbyt akademickiego CodeGuru.pl. Po drugie zine.net - miejsce w sieci dla pasjonatów technologii .NET, ale nie tylko. Profesjonalnie redagowana gazetka w formie elektronicznej. Przyznaję, że wpadłem w lekkie kompleksy, gdy zobaczyłem pierwszy numer zine'a. Myślałem, że jestem prawdziwym aktywistą i robię sporo dla społeczności Microsoft, ale po obejrzeniu redagowanej przez Michała i kolegów z zine.net gazetki, stwierdziłem, że są ludzie, którzy po prostu wymiatają w sprawach społeczności. Zine żyje dziś znakomicie, a jak widać charyzma Michała przyciągnęła także mnie i od paru miesięcy prowadzę tu własnego bloga. Dzięki i za to, Michał! Po trzecie wreszcie, na codzień mam przyjemność prowadzić wraz z Michałem spotkania Warszawskiej Grupy .NET i Polskiej Grupy Użytkowników SQL Server. Nikt nigdy nie prowadził żadnej grupy w Polsce z większym zaangażowaniem i pasją niż Michał. Myślę, że rozkwit grup .NET w Polsce, to w dużej mierze zasługa właśnie Michała.&lt;/P&gt;
&lt;P&gt;Co myślę o Michale prywatnie? Najważniejsza w nim jest pasja. Pasja, którą potrafi skutecznie zarażać! Pasja, której nie można się oprzeć, z którą nie można dyskutować. Pasja, która jest bezinteresowna (Michał nigdy nie chciał zostać MVP i nawet głośno o tym mówił). Wiem, co Michał powie, jak zaczniemy mu wszyscy gratulować na spotkaniu grup :-) Powie, że to my wszyscy jesteśmy MVPs. I po trosze będzie miał pewnie rację, ale należy pamiętać, że bez jego wkładu i wysiłków WG.NET nie byłaby dziś wspaniale działającą, aktywną grupą pasjonatów, z których faktycznie każdy jest potencjalnym kandydatem do tytułu MVP. Michał jest trochę zadziorny, często stawia na swoim, choć inni się z nim nie zgadzają (sam się z nim często nie zgadzam). Ale to właśnie pasja&amp;nbsp;i ciągłe myślenie o sprawach społeczności&amp;nbsp;znajduje swoje ujście i powoduje, że Michał nie ulega niczyim naciskom. Po prostu jest sobą. I chyba to jest w tym wszystkim iskrą, która pobudza innych do działania. Możesz się z Michałem nie zgadzać, ale jego zdanie i tak weźmiesz pod uwagę. Szczerość i pasja - cechy prawdziwego MVP.&lt;/P&gt;
&lt;P&gt;Podsumowując - strasznie się cieszę z tej nominacji. Mam nadzieję, że teraz Michał "wejdzie w hiperprzestrzeń" i, choć jest to wręcz niewyobrażalne, z jeszcze większą mocą zaangażuje się w życie społeczności Microsoft w Polsce. A plan działania ma, i to jaki!&lt;/P&gt;
&lt;P&gt;Wspaniale zaczął się ten nowy rok 2008. Oby takich chwil więcej w ciągu najbliższych 366 dni (Michał na pewno przeżyje co najmniej jedną taką chwilę - narodziny trzeciego dziecka).&lt;/P&gt;
&lt;P&gt;Zakończę tą notkę&amp;nbsp;parafrazując jeden z postów Michała na grupie dyskusyjnej&amp;nbsp;WG.NET: "&lt;EM&gt;Czapki z głów! Mistrz idzie!&lt;/EM&gt;".&lt;/P&gt;&lt;img src="http://zine.net.pl/aggbug.aspx?PostID=692" width="1" height="1"&gt;</description><category domain="http://zine.net.pl/blogs/sqlgeek/archive/tags/MVP/default.aspx">MVP</category></item></channel></rss>