SQL

10 złych praktyk i niebezpiecznych nawyków w SQL Server

SQLBadHabits_07

W swojej karierze miałem okazję oglądać już całkiem dużą liczbę mniejszych lub większych implementacji z wykorzystaniem SQL Server. Zdarza mi się również oglądać rozwiązania pisane według myśli technicznej innych deweloperów. Bardzo często spotykam się z kodem TSQL, który jest nie tylko bardzo dobrze napisany pod kątem składni, ale również poukładany według pewnych konwencji nazewniczych. Niestety często oglądam również małe “potworki” gdzie deweloperzy nie trzymają się absolutnie żadnych dobrych praktyk, a to co mieli na myśli pisząc taki, a nie inny kod jest zagadką tak ciężką do rozwiązania, że same próby przyprawiają o ból głowy. Dlatego też postanowiłem, że kilka pomniejszych…
Read more

Analiza danych pochodzących z Twittera z wykorzystaniem C# i Power BI

post_logo_publish_post

Poprzedni post, “Podsumowanie Microsoft Ignite 2017 – analiza wydarzenia na Twitterze z wykorzystaniem Power BI”, pokazywał konkretny przykład analizy wybranego hashtagu w Power BI. Mimo, że Power BI wspiera naprawdę dużo źródeł danych, nie ma niestety bezpośredniego połczenia do portalu Twitter. Owszem, można skorzystać z oficjalnego API dostarczanego przez Twitter i wykorzystać, nawet bezpośrednio, z poziomu Power BI, natomiast problemem mogą okazać się limity. Dość skomplikowanym etapem jest również przygotowanie danych do analizy. Tutaj również, mimo, iż Power BI dostarcza ogromna ilość transformacji, w przypadku analizy tekstu wymaga to naprawdę sporo pracy i jest stosunkowo wolne. Przykład analizy tekstu w Power…
Read more

Partycjonowanie tabel a wydajność zapytań w SQL Server

PartitionElemination_00

Partycjonowanie jest szeroko znaną techniką użyteczną w bardzo wielu aspektach pracy związanych z tabelami i indeksami w SQL Server. Zanim zostanę posądzony o herezje to chciałem zaznaczyć, że techniki tej nie należy traktować jako stricte funkcjonalności poprawiania wydajności, jednakże sam sposób jej działania może pozytywnie wpłynąć również na przetwarzanie naszych zapytań odczytujących oraz ładujących. Z partycjami związany jest szereg różnych mechanizmów takich jak partition switching czy chociażby partition elimination, które mogą być bardzo pomocne w codziennej pracy. W ramach niniejszego artykułu przedstawie kilka ogólnych właściwości tabel partycjonowanych oraz powiemy sobie co nieco o eliminacji partycji. Całość tematu będzie najlepiej zrozumieć…
Read more

Porównanie trzech sposobów na PIVOT w TSQL

TsqlPivot_14

Dane w relacyjnych bazach danych posiadają formę tabelaryczną tj. składają się z kolumn oraz wierszy. Zdarza się jednak dosyć często, że chcemy wiersze zamienić na kolumny lub kolumny na wiersze – operację taką zwyczajowo nazywamy piwotowaniem. W ramach tego artykułu chciałbym przedstawić trzy różne sposoby na osiągnięcie zamierzonego rezultatu. Oczywiście nie są to wszystkie możliwe sposoby – znajdą się inne metody na odwrócenie wyniku zarówno w samym kodzie TSQL, kodzie zewnętrznym czy w SSIS – jednakże w ramach tego artykułu chciałbym się ograniczyć do tych trzech metod, które mimo wszystko wydają się najprostsze i najbardziej popularne. Zapraszam do lektury. Na…
Read more

xp_cmdshell – najniebezpieczniejsze narzędzie w SQL Server?

SQL Server jest oprogramowaniem, które pod kątem bezpieczeństwa posiada całą gamę opcji. Każda z tych opcji może być ustawiona w lepszy lub gorszy sposób w zależności od wiedzy i doświadczenia osoby ustawiającej. Niektóre “luki” w złej konfiguracji serwera są mniej niebezpieczne – inne z kolei bardziej. Są jednak pewne granice, których przekraczać nie wolno! Przykładów jest wiele np. nie można ustawiać trywialnego hasła do konta sa, nie wolno dawać uprawnień sysadmin na prawo i lewo – nie wolno nie robić kopii zapasowych baz produkcyjnych. Każde z tych uchybień może mieć katastrofalne skutki jak np. utrata danych w bazie danych. Jest…
Read more