29 listopada 2011

SQL Tipsy (3) – deklaracja i inicjalizacja zmiennych w MS SQL Server 2008

Można prościej


Pewnie większość programistów SQL Server'a już zapoznała się ze zmianami w sposobie deklarowania i inicjalizacji zmiennych w wersji MS SQL Server 2008. Aczkolwiek, dla tych którzy jeszcze o tym nie czytali przygotowałem krótkie demo (dzisiaj 289 sekund, więc trochę długo), w którym przepisuje kod napisany w stylu T-SQL'a z MSSQL 2000 na wersję 2008.




25 listopada 2011

Dwie instancje webpart'ów oraz IsClosed

Tańcowały dwa webpart'y


Praca z webpart'ami od strony SharePoint API może być czasami frustrująca. Kilkukrotnie zdarzyło mi się exportować konfigurację, usuwać instancję, zmieniać właściwości webpartów. Przynajmniej trzy razy byłem zaskoczony tym, że strona wyświetla np. jednego webpart'a a kolekcja Webparts z obiektu SPLimitedWebPartManager zwraca więcej instancji, często tego samego typu.

Pewnie domyślacie się, że te dodatkowe instancje webpart'ów to zamknięte, a nie usunięte webparty'y. Rezydują sobie one szczęśliwe w kontentowej bazie danych, aczkolwiek nie są wyświetlane w UI.

Wszystko byłoby wporządku, gdybym już trzeci raz o tym nie zapomniał, że jeżeli modyfikuje widoczne webpart'y, to muszę wziąć pod uwagę też te niewidoczne instancje.

Moim zadaniem było usunięcie duplikatów webpartów, niestety z "jakiegoś" powodu zawsze usunwałem tylko widocznego webpart'a, a niewidoczny zostawał na stronie. Nie mogłem też zrozumieć skąd w kolekcji WebParts jest tyle elementów.

24 listopada 2011

Automatyzacja SharePoint'a to konieczna konieczność

Automatyzacja, automatyzacja, automatyzacja


Często zdarza mi się klikać jak przysłowiowa "małpa". Wielokrotnie powtarzać pewne akcje zamiast daną czynność zautomatyzować. Wynika to chyba z głupoty, ponieważ człowiek leniwy by to po prostu zrobił, żeby się nie narobić.

Kilka dni temu musiałem naprawić za pomocą skrytpu kilka witryn (chyba tak się tłumaczy site collection?), które na środowisku produkcyjnym przeszły jakieś niebezpieczne mutacje. Otrzymałem od zespołu wsparcia trzy backup'y wybranych witryn i zacząłem testowanie.

22 listopada 2011

SQL Tipsy (2) – skróty klawiaturowe w SSMS

Produktywność i wygoda


W drugim odcinku SQL Tipsów opisuję jak można wykorzystać skróty klawiaturowe w SQL Server Management Studio. Zapraszam do oglądania Tipsa, tylko 163 sekundy, zwrot produktywności prawie gwarantowany.



Hope this helps.

14 listopada 2011

SQL Tipsy (1) – zapytanie na wielu serwerach

Debiut


Chciałbym zapoczątkować nową świecką tradycję na moim blogu. Pokusiłem się o nagranie 2 minutowego filmiku na którym prezentuje jak uruchamiać jedno zapytanie na wielu serwerach przy użyciu SQL Server Management Studio. Moim celem jest dzielenie się prostymi, aczkolwiek mam nadzieję, że przydatnymi "pomysłami" w jak najkrótszym czasie antenowym. Poniżej przykładowy filmik. Zachęcam do poświęcenia 140 sekund na obejżenie tego filmiku i oczywiście proszę o komentarze na temat takiej formy knowledge sharing.


Hope this helps.

11 listopada 2011

SQL Server Profiler dla początkujących

Czy mój system jest zdrowy?


Pewnego słonecznego poranka, z braku laku uruchomiłem SQL Server Profiler'a. Bez konkretnego celu, postanowiłem przejrzeć rodzaj i ilości zapytań SQL które są generowane podczas jednego wejścia na stronę pewnego systemu z którym pracowałem. Ku mojemu zakoczeniu, web'owa aplikacja okazała się bardzo skuteczna w produkcji dużej liczby zapytań do pobrania małej ilości danych. Trace w Profiler'rze wyglądał jak świąteczna lista życzeń.

We wspomnianym przypadku, jednym z powodów nadmiernej ilości zapytań, było nieumiejętne wykorzystanie mechanizmów NHibernate'a (w tym wypadku lazy load). Nie chodziło nawet o niezrozumienie działania użytych narzędzi, raczej była to kwestia braku monitorowania tworzonych dynamicznie zapytań.  Oczywiste jest, że pisząc systemu oparte o silnik baz danych istotne jest aby unikanąć pisania "małpiego" kodu odczytywania i zapisywania danych. Z wielkim entuzjazmem środowisko .NET przyjeło jedynego słusznego OR Mapper'a, który odciążył "statystycznego" programistę formatek od klepania kolejnych linijek kodu w ADO.NET. Niestety, jak z każdą technologią nie można popadać w zbyt wielki optymizm i czasami należy zachować zimną krew. Wszystkim używającym NHib'a polecam przejrzenie listy problemów jakie mogą pojawić się przy pracy z jedynym słusznym OR Mapperem. Koniec dygresji na temat NHib'a, przechodzę do sedna sprawy, czyli monitorowania i analizy zapytań generowanych przez zewnętrzną aplikację.

02 listopada 2011

Czy warto być przygotowanym na najgorsze?

Dlaczego?


Dzisiejsze systemy to nie tylko kod źródłowy, to przede wszystkim niezawodność i dostępność. Programiści/projektanci odpowiadają w pewnej mierze za te atrybuty systemów, które implementują. Muszę przyznać, że zagadnienie planu ciągłości działania (dalej DR,  ang. disaster recovery plan) było dla mnie czymś zupełnie nowym i abstrakcyjnym. Jakiś czas temu miałem okazję pracować z moim zespołem nad przygotowaniem planu DR. Chciałbym wytłumaczyć się co nas skłoniło do przygotowania i przetestowania takiej procedury i jakie korzyści odnieśliśmy z takiej inwestycji.

Do rozwiązania problemu biznesowego zaproponowaliśmy architekturę, która ze swej natury (używała replikacji MS SQL Server'a) była bardzo podatna na błąd użytkownika. Użytkownikiem mógłbyć niewyspany administrator, nadgorliwy programista czy zmęczony inżynier wsparcia. Najbardziej obawialiśmy się destabilizacji całego produkcyjnego systemu, którą można było osiągnąć np. poprzez usunięcie jednego wiersza w jednej z 10 baz danych. Jeżeli rozwiązanie oparte o mechanizm replikacji okazałoby się zbyt mało bullet-proof, to mogliśmy w pewnym sensie wydać na siebie wyrok skazujący.