Celem mojego pierwszego wpisu dotyczącego NHibernate było krótkie wprowadzenie w świat tego ORM’a. Dziś przyszedł czas na trochę praktyki. Zaczniemy od prostej konfiguracji aplikacji (konsolowej), aby ta mogła połączyć się z bazą danych oraz automatycznie utworzyć w niej przykładową tabelę. Wykorzystamy do tego celu bibliotekę Fluent NHibernate, dzięki której, w przeciwieństwie do standardowej konfiguracji wykorzystującej pliki XML znanej z oryginalnego Hibernate’a, skonfigurujemy wszystko z poziomu kodu...
Czy zastanawialiście się kiedyś jak dodawać parametry doSqlCommand? Klasa ta zawiera pole Parameters typy SqlParameterCollection, na którym możemy wykonać między innymi metodę AddWithValue(string, object). W internecie jak i w dokumentacji w nazwach parametrów na początku jest zawsze użyty znak “@”. Przy okazji jednego z projektów musiałem odpowiedzieć sobie na pytanie: Czy muszę zadbać o “@” przy nazwie parametru? Nie zastanawiając się długo postanowiłem, zgodnie duchem empiryzmu, sprawdzić co się stani...
Bazy danych i XML 5094 dni, 1 godzinę, 57 minut temu 146 źrodło rozwiń
Po przerwie związanej ze świętami, mam nadzieję, że blog wróci do dawnej formy… W bazach danych wykorzystuje się zwykle jako wartości kluczy głównych i obcych liczby całkowite – INT. Drugim podejściem (mniej popularnym) jest wykorzystanie globalnych identyfikatorów GUID. Jaka jest tak naprawdę różnica? Skupmy się na zaletach i wadach każdego z nich. Zaczynamy od typów całkowitych (int). Zalety: -bardzo mały rozmiar (tylko 4 bajty), -naturalna postać – każdy kolejny wiersz to sekwencja ...
Bazy danych i XML 5096 dni, 5 godzin, 20 minut temu 138 źrodło rozwiń
Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania dany...
Bazy danych i XML 5097 dni, 9 godzin, 21 minut temu 76 źrodło rozwiń
Autor: Kilka dni temu w poście Statystyka… zapowiedziałem, iż postaram się zaproponować kawałki kodu, które umożliwią włączenie statystyk dla zapytań LINQ to SQL. Zadanie okazało się trochę trudniejsze niż myślałem, ale udało się coś osiągnąć. Zobaczmy jak.Rozwiązanie Naïve Pierwsze co przychodzi na myśl to proste rozszerzenie obiektu DataContext o nasze metody. Mniej więcej tak: publicstaticclassDataContextExt { publicstatic T WithStatistics
Bazy danych i XML 5097 dni, 9 godzin, 21 minut temu 44 źrodło rozwiń
Nie… w tym wpisie nie będzie o statystyce odwiedzin bloga i innych podobnych rzeczach, o których można dziś na wielu blogach (u mnie o tym będzie może następny wpis :)). Będzie o klasie o której pewnie niewielu z was wcześniej wiedziało. Do wczoraj nie wiedziałem także i ja. Poznajcie – SqlStatistics. Klasa jest internal sealed tak więc czemu o niej cokolwiek piszę? A no ponieważ do samej klasy dostać się nie możemy natomiast do danych przez nią zbieranych już tak. Śledząc jej zależności Reflector’em zau...
Bazy danych i XML 5099 dni, 12 godzin, 23 minuty temu 97 źrodło rozwiń
Niecały tydzień temu napisałem posta o LINQ to XML. Wtedy jednak zająłem się tylko tym czym jest XML, co to jest LINQ oraz jak wygląda przetwarzanie dokumentów XML przy pomocy przestrzeni nazw System.Xml. Dzisiaj jako kontynuacja wpisu pokażę już konkretne zapytania XLINQ oraz jak ogólnie wygląda przestrzeń nazw System.Xml.Linq...
Bazy danych i XML 5101 dni, 22 godziny, 31 minut temu 85 źrodło rozwiń
Kiedy piszemy aplikacje, prędzej czy później nadejdzie czas kiedy będziemy musieli korzystać z przetwarzania dokumentów XML. Nie ważne czy będziemy je tworzyć czy przetwarzać już istniejące. Dokument XML jest niczym innym jak zwykłym plikiem tekstowym lub strumieniem w pamięci. A więc bez problemu możemy napisać klasę lub klasy parsujące tekst XML i go odpowiednio przerabiać. Jednak samodzielne pisanie takiej klasy mija się z celem, zwłaszcza kiedy mamy do przetworzenia na przykład jeden plik. Oczywiście...
Bazy danych i XML 5101 dni, 22 godziny, 31 minut temu 105 źrodło rozwiń
Indeksy są dobrym mechanizmem na optymalizację często powtarzających się zapytań. Przykładowo rozważmy następujące zapytanie: SELECT FirstName,LastName FROM Persons where Age>30 Dla dużej ilości danych, wykonanie powyższego kodu może trochę potrwać. Jeśli dodalibyśmy indeks na kolumnie Age, czas wykonania znaczącą by się skrócił ponieważ dane byłyby w pewnym stopniu sortowane w pamięci (w dużym uproszczeniu dane są przechowywane w strukturze drzewiastej, która znacznie przyśpiesza selekcję). Tematem po...
Bazy danych i XML 5109 dni, 13 godzin, 3 minuty temu 104 źrodło rozwiń
CTE w T-SQL można porównać do tymczasowej tabeli. Prawdziwa siła CTE jednak tkwi w możliwości rekurencyjnego przechodzenia przez węzły. Ogólna zasada tworzenia wygląda następująco:WITH expressionname [ ( columnname [,...n] ) ] AS ( CTEquerydefinition ) exoression_name stanowi nazwę obiektu CTE. Następnie listujemy wszystkie kolumny, które będą występować w CTE. Za słowem kluczowym AS występuje selekcja danych – tak jak w zwykłych widoku. Stwórzmy więc obiekt CTE:WITH FirstCte (FirstName,LastName) ...
Bazy danych i XML 5113 dni, 3 godziny, 16 minut temu 65 źrodło rozwiń
autor: Dziś potrzebowałem zrobić bardzo nietypową operację – zresetować indeks w tabeli w MS SQLu. I szczerze mówiąc nie sądziłem, że robi się to tak prosto. W tym celu należy użyć komendy:DBCC CHECKIDENT (nazwatabeli, reseed, ostatniindeks) W komendzie podajemy nazwę tabeli, w której chcemy zresetować indeks oraz numer ostatniego indeksu w tabeli. Jeżeli chce się aby automatycznie generowane numery zaczynały się od 1 to należy użyć tego polecenia w następujący sposób:DBCC C...
Bazy danych i XML 5117 dni, 20 godzin, 41 minut temu 236 źrodło rozwiń
SQL Search. to dodatek do SQL Server Management Studio (SSMS). pozwalający na szybkie i efektywne przeszukiwanie bazy danych. Zadanej frazy szukamy w elementach, takich jak: tabele, widoki, procedury, konstreiny, triggery, funkcje. Wyszukiwanie jest natychmiastowe, ponieważ...
Bazy danych i XML 5119 dni, 9 godzin, 26 minut temu 105 źrodło rozwiń
autor: Niedawno pisałem o pierwszej części mojej serii artykułów na temat OData na polskim portalu MSDN. Przyszła pora na kolejny artykuł, tym razem na portalu TechNet. Dziś pojawiła się pierwsza część artykułu na temat Data-tier Application w SQL Server 2008R2 oraz Visual Studio 2010, który razem z Damianem Widerą napisaliśmy jakiś czas temu. Część pierwsza to spojrzenie administratora bazy danych – czyli Damiana...
Bazy danych i XML 5120 dni, 12 godzin, 57 minut temu 73 źrodło rozwiń
Generowanie Edmx W dzisiejszym wpisie chciałbym wspomnieć o problemie, na który natrafiłem chcąc używać Entity Framework wraz z bazą danych MySQL w Visual Studio 2010 Express. Wybrałem oczywiście standardową ścieżkę – ściągnąłem ze strony MySQL dodatek MySQL Connector. Niestety ku mojemu zaskoczeniu kiedy chciałem dodać połączenie do bazy wśród dostępnych możliwości nie było MySQL...
Bazy danych i XML 5126 dni, 16 godzin, 29 minut temu 153 źrodło rozwiń
Poniższy rysunek zawiera fragment wykresu wygenerowanego przez SQL Server Reporting Services. Wykres ten przedstawia wartość pewnej miary (oś OY) dla różnych kategorii (oś OX). Mniejsza o jaką miarę i kategorię chodzi. Problem polega na tym, że etykiety posiadają tylko niektóre słupki, a nie wszystkie co czyni wykres bezużytecznym. Nie sposób bowiem wydedukować jakie kategorie zostały pokazane np.: pomiędzy JNZ i OR. Nie zastanawiając się długo postanowiłem, więc dodać etykiety dla wszystkich sł...
Bazy danych i XML 5134 dni, 6 godzin, 55 minut temu 32 źrodło rozwiń
SQL Server 2008 wprowadza widoki partycjonowane. Służą one do optymalizacji zapytań na bardzo dużej ilości danych. Rozważmy scenariusz w którym mamy 12 tabel, przechowujących archiwalne informację o sprzedaży np. JanuarySales, FebruarySales, MarchSales itd. Dane przechowywane w tych tabelach różnią się tylko czasem (dana tabela przechowuje wyłącznie informacje z określonego miesiąca). Aby móc skorzystać z widoku partycjonowanego należy użyć ograniczenia CHECK na kolumnie, będącej kryterium podziału:CREAT...
Bazy danych i XML 5137 dni, 43 minuty temu 37 źrodło rozwiń
Powershell to interpreter poleceń oferujący dużo większe możliwości niż popularny CMD. Jedną z wyróżniających cech PowerShell’a jest logika obiektowa. Wszystkie produkty serwerowe Microsoft’u mogą być obsługiwane z poziomu PowerShell’a można zatem pisać np. skrypty konfiguracyjne. SQL Server nie jest oczywiście wyjątkiem i również wspiera PS. SQL Server PowerShell wykorzystuje hierarchię obiektów – tabela należy do schematu, schemat do bazy itd. W ramach SQL Server PS dostępne są trzy foldery:SQLSERVER:\...
Bazy danych i XML 5144 dni, 11 godzin, 28 minut temu 35 źrodło rozwiń
Dotychczas wydawało się, że rozwiązaniem wszystkich problemów tego świata jest Cloud Computing. Niestety, gdy już przeniesiono do chmury wszystko co tylko się dało (oraz kilka rzeczy, których się nie dało) okazało się, że część problemów pozostała nierozwiązana. Tak oto nastała moda na NoSQL. Chyba każda rozsądnie myśląca osoba przyzna, że relacyjne bazy danych są takie wczorajsze, a nowe czasy wymagają nowych rozwiązań. Czy aby jednak na pewno? Bawiąc się trochę BigTable na Google AppEngine mam pewne wą...
Bazy danych i XML 5146 dni, 45 minut temu 162 źrodło rozwiń
Baza MySQL ma wiele mechanizmów (silników) zarządzania danymi – obecnie jednym najczęściej używanych jest MyISAM. Jego cechą charakterystyczną jest to, że kolejne rekordy doklejane są zawsze na końcu pliku. Tak zdefiniowana struktura bazy niesie wiele korzyści, m.in. dodawanie informacji jest bardzo szybkie, ponieważ nie trzeba szukać miejsca dla nowego obiektu.
Bazy danych i XML 5146 dni, 11 godzin, 34 minuty temu 47 źrodło rozwiń
Microsoft udostępnił pierwszą wersję (build 11.0.1103) Community Preview (CTP) następnej wersji systemu zarządzania bazami danych SQL Server. Nowa wersja nosi nazwę kodową Denali i najpewniej otrzyma numer 2011 (a co za tym idzie, niewykluczone, że wersja RTM ujrzy światło dzienne w przyszłym roku...
Bazy danych i XML 5148 dni, 12 godzin, 59 minut temu 51 źrodło rozwiń