Załóżmy, że mamy metodę generyczną:privatevoid AddItem
Strona głównaUżytkownik
pzielinski | użytkownik
Architektura 5094 dni, 16 godzin, 59 minut temu 81 ź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 5102 dni, 19 godzin, 58 minut temu 37 źrodło rozwiń
Na MSDN pojawi się cykl artykułów związanych z platformą Azure. Przeznaczony jest on dla początkujących (przynajmniej pierwsze artykuły). Jeśli nie miałeś jeszcze styczności z Azure to jest doskonały moment aby przekonać się jakie możliwości dostarcza nam ta platforma. Zapraszam do pierwszego artykułu z tej serii- Azure Tools czyli podstawowe narzędzia niezbędne do pracy z Azure: http://msdn.microsoft.com/pl-pl/library/gg455965Explore posts in the same categories:Azure This entry was...
Programowanie rozproszone 5103 dni, 13 godzin, 16 minut temu 39 ź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 5110 dni, 6 godzin, 42 minuty temu 35 źrodło rozwiń
W Visual Studio można stworzyć tzw. Generic Test. Co to takiego? Jest to po prostu wrapper na narzędzie dostarczone przez kogoś innego. Powiedzmy, że do przetestowania jakiegoś modułu wykorzystujemy narzędzie stworzone przez zewnętrzna firmę. Za pomocą Generic Test możemy podpiąć zewnętrzne narzędzie i wykorzystywać zalety testów VS (np. raportowanie). W konfiguracji Generic Test określamy m.in. ścieżkę do zewnętrznego narzędzia, przyjmowane argumenty oraz opcjonalne parametry (zmienne środowiskowe, doda...
Część osób wykorzystuje jako klucze główne typ uniqueidentifier zamiast standardowych liczb całkowitych. Ma to związek m.in. z rozproszonymi bazami danych oraz ich scalaniem. Jeśli wykorzystujemy uniqueidentifier jako klucz główny warto ustawić atrybut ROWGUIDCOL na TRUE. Powoduje to, że wartości kluczy będą automatycznie wypełniane unikalnymi wartościami. ROWGUIDCOL działa w podobny sposób co IDENTITY dla liczb całkowitych. Warto jednak podkreślić, że ROWGUIDCOL nie gwarantuje unikalności – jeśli wstawi...
Bazy danych i XML 5115 dni, 8 godzin, 44 minuty temu 42 źrodło rozwiń
Nie będę tłumaczył na polski powyższych nazw bo nie mam pojęcia jak to oficjalnie zostało nazwane. W każdym razie, cechą wspólną powyższych testów jest szybkość i pobieżność – stanowią one wstęp do prawdziwego, gruntowanego testowania. Poniżej kilka najważniejszych cech opisujących smoke test:Zwykle zautomatyzowany – np. w formie testu jednostkowego.Testuje każdą warstwę systemu pobieżnie. Sprawdza czy najważniejsze fragmenty systemu działają, nie wgłębiając się w logikę biznesową.Ma charakter horyzontal...
Jak sprawnie i szybko przekopiować dane z tabeli do tabeli? Można wykorzystać klasę SqlBulkCopy, która jest znacznie lepszym rozwiązaniem niż użycie klasycznego SqlCommand z poleceniem INSERT. Załóżmy, że chcemy przekopiować dane z tabeli o nazwie “Adresy” do tabeli “Adresy_Archiwum”:using (SqlConnection sourceConnection =new SqlConnection(connectionString)) { sourceConnection.Open(); SqlCommand commandSourceData =new SqlCommand( "SELECT * FROM Adresy", sourceConnection); SqlDataReader reader ...
Bazy danych i XML 5120 dni, 2 godziny, 42 minuty temu 67 źrodło rozwiń
W testach jednostkowych czasami warto testować również prywatne metody. Wynika to z zasady atomowości. Prywatne metody z reguły zawierają atomowe operacje, wykorzystywane potem w metodach publicznych. Jednym ze sposóbów jest użycie mechanizmu refleksji. W tym poście zajmiemy jednak się narzędziem publicize.exe, służącym do zmieniania modyfikatorów prywatnych na publiczne. Załóżmy, że mamy taką klasę:
Kolejnym i ostatnim sposobem numeracji wierszy jest NTILE(n). NTILE dzieli zbiór wierszy na n podgrup. Każda z podgrup jest numerowana osobno. Przykład:select NTILE(5) over(orderBY ProductSubCategoryID),ProductSubcategoryID from Production.Product; W powyższym przykładzie powstanie 5 grup – każda numerowana od 1.November 2nd, 2010 at 3:47 pm and is filed under SQL Server. You can subscribe v...
Bazy danych i XML 5128 dni, 20 godzin, 24 minuty temu 38 źrodło rozwiń
Framework ASP.NET MVC powstał aby m.in. ułatwić testowanie aplikacji. Wszystkich zainteresowanych tematyką zachęcam do przeczytania tego wprowadzenia: http://msdn.microsoft.com/pl-pl/library/gg309141Explore posts in the same categories:ASP .NET, T
Testy bazy danych gwarantują nam m.in. spójną strukturę, poprawność procedur i funkcji. Wszystkich zainteresowanych tą tematyką zapraszam do przeczytania mojego artykułu: http://msdn.microsoft.com/pl-pl/library/gg314942Explore posts in the same categories:Testy
Bazy danych i XML 5128 dni, 6 godzin, 32 minuty temu 47 źrodło rozwiń
W poprzednim poście zajęliśmy się funkcją RANK. Dla przypomnienia umożliwia ona numerację wierszy z rozróżnieniem wartości. Dla dokładnego opisu odsyłam tutaj. Jedną z cech RANK jest fakt, że w przypadku remisów (takich samych wartości) licznik wewnętrzny jest zwiększany, czego rezultatem są przerwy w numeracji. W przypadku DENSERANK opisane przerwy nie istnieją. Rozważmy poniższe zapytanie:select DENSERANK() over(orderBY ProductSubCategoryID),ProductSubcategoryID from Production.Product; Możliwy wyni...
Bazy danych i XML 5137 dni, 13 godzin, 34 minuty temu 27 źrodło rozwiń
W poprzednim poście przedstawiłem funkcję ROW_NUMBER. RANK działa analogicznie z tym, że wierszom o tej samej wartości nadawane są takie same liczby porządkowe. Rozważmy poniższe zapytanie:select RANK() over(orderBY ProductSubCategoryID),ProductSubcategoryID from Production.Product; Wiersze o takim samym ProductSubCategoryId otrzymają równe wartości a nie kolejne liczby jak w przypadku ROW_NUMBER. Przykładowo zwrócone wiersze: RANKProductSubCategoryId151515464646 Warto zwrócić uwagę, że RANK nie zw...
Bazy danych i XML 5143 dni, 47 minut temu 29 źrodło rozwiń
Czasami wykonując zapytania T-SQL potrzebujemy ponumerować wiersze. Baza SQL Server dostarcza nam kilka różnych funkcji. Podstawową funkcją jest ROWNUMBER, która zwraca dla danego zbioru wartości od 1 do n. W przypadku gdy dwa zwrócone wiersze zawierają identyczne dane, ROWNUMBER traktuje je jako różne i nadaje im kolejne numery. Przykład:select ROW_NUMBER() over(orderBY NAME),ProductSubcategoryID from Production.Product; W klauzuli over określa się m.in. sortowanie. Za pomocą tego ROW_NUMBER wie, jak...
Bazy danych i XML 5146 dni, 7 godzin, 43 minuty temu 51 źrodło rozwiń
W wielu DDL można ustawiać atrybut SCHEMABINDING. Do czego on służy? Ustawienie SCHEMABINDING powoduje, że dany obiekt (widok, funkcja itp.) jest powiązany z wszystkimi innymi obiektami do których się odwołuje. Jeśli zatem widok korzysta z jakieś tabeli to nie może zostać ona zmieniona lub usunięta ponieważ naruszyłoby to strukturę widoku. Użycie SCHEMABINDING jest sztywnym powiązaniem i zapobiega przypadkowemu usunięcia powiązanych obiektów.Explore posts in the same categories:SQL Server ...
Bazy danych i XML 5147 dni, 13 godzin, 6 minut temu 37 źrodło rozwiń
Aby wyjaśnić znaczenie atrybutu stwórzmy najpierw tabelę składają się wyłącznie z jednej kolumny – klucza głównego. Ponadto nie ustawiajmy IDENTITY dla tej kolumny. Następnie spróbujmy wykonać 2 poniższe insert’y:begintransactioninsertinto TestSet (ID) values(1); insertinto TestSet (ID) values(1); committransaction; Przy drugim insercie wyskoczy błąd. To jest oczywiste ponieważ klucz główny musi być unikalny. Jeśli jednak odpalimy select’a przekonamy się, że wartości z pierwszego insert’a zostały wstaw...
Bazy danych i XML 5150 dni, 4 godziny, 38 minut temu 20 źrodło rozwiń
Pisząc kod odpowiedzialny za walidację liczb potrzebowałem sprawdzić ile miejsc po przecinku ma dany decimal. Użyłem rozwiązania może mało eleganckiego ale przynajmniej działającego:) :decimal decimalNumber =21.235; int length = (decimalNumber %1).ToString().Length -2; Reszta z dzielenia przez jeden zawsze zwraca to co jest po przecinku. Dla 21.235 będzie to 0.235. Zatem długość string’a minus dwa ( jeden dla przecinka, jeden dla zera) stanowi liczbę miejsc po przecinku. Może komuś się to przyda w przys...
W poprzednim poście zaprezentowałem sposób tworzenia drzewa w tabeli wykorzystując typ hierarchyid. W dzisiejszym poście z kolei chciałbym pokazać kilka ułatwień jakie daje nam ten nowy typ. Każdy węzeł jest reprezentowany za pomocą stringu. Dla korzenia jest to “/”, dla potomstwa “/1”, “/2” itd. Schodząc w dół drzewa otrzymujemy “/1/1”, “/1/1/1” itd. Bardzo łatwo wiec dostać się do konkretnego węzła:select*from Tree where Node=cast('/1/'as hierarchyid); Typ hierarchyid posiada wiele metod. Jedną z ciek...
Bazy danych i XML 5158 dni, 3 godziny, 23 minuty temu 37 źrodło rozwiń
Czasami istnieje potrzeba reprezentacji drzewa za pomocą tabeli. Klasycznym przykładem jest hierarchia pracowników w firmie. Bardzo popularną reprezentacją jest:IDEMPLOYEE int, IDMANAGER int, Title nvarchar(50). IDEMPLYOEE jest oczywiście kluczem głównym, z kolei IDMANAGER stanowi klucz obcy wskazujący na IDEMPLOYEE. Przykład wypełnionej tabeli:IDEMPLOYEEID_MANAGERTitle1NULLProject Manager21Senior Software Developer32Junior Developer41Senior database developer Rozwiązanie jak najbardziej poprawne....
Bazy danych i XML 5161 dni, 12 godzin, 56 minut temu 63 źrodło rozwiń