Po badaniu SQL Server “Denali” CTP1 pod kątem nowości w SQL Server Management Studio przyszedł czas na eksplorację nowinek w T-SQL / programowaniu. Poniżej to, co wyczytałem w dokumentacji lub samemu “namacałem” bawiąc się CTP1: Nowe DMVs: sys.dm_db_objects_disabled_on_compatibility_level_change sys.dm_db_uncontained_entitiessys...
Bazy danych i XML 5148 dni, 6 godzin, 21 minut temu 37 źrodło rozwiń
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 5149 dni, 6 godzin, 51 minut temu 42 źrodło rozwiń
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 5154 dni, 49 minut temu 67 źrodło rozwiń
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 5162 dni, 4 godziny, 39 minut temu 47 źrodło rozwiń
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 5162 dni, 18 godzin, 32 minuty temu 38 źrodło rozwiń
autor: Potrzebowałem banalnie prostego narzędzia, które byłoby pomocne w testowaniu zapytań XPath. Po krótkich poszukiwaniach i odnalezieniu kilku kombajnów stwierdziłem, że nawet dla wprawy szybciej stworzę odpowiednie narzędzie, spełniające moje wymagania ;) Dzielę się więc minimalistycznym, intuicyjnym w użyciu programem. Ascetyczny interfejs i funkcjonalność. Nie ma kolorowania, animacji ani miliona wielce-potrzebnych-funkcji.
Bazy danych i XML 5162 dni, 18 godzin, 32 minuty temu 62 źrodło rozwiń
Na wstępie chciałem wyjaśnić, że skrót SMS nie ma nic wspólnego z telefonami komórkowymi, tylko jest to skrót od SQL Management Studio. Dla osób korzystających na co dzień z SQL Server nie muszę wyjaśniać, do czego to narzędzie służy, natomiast dla początkujących znajdzie się kilka porad (niekoniecznie przydatnych). Przede wszystkim, w nawiązaniu do poprzednich postów, znajdujemy się w miejscu, w którym utworzon...
Bazy danych i XML 5171 dni, 11 godzin, 41 minut temu 34 ź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 5171 dni, 11 godzin, 41 minut temu 27 źrodło rozwiń
Jakiś czas temu na forum portalu WSS.pl padło pytanie, czy można przenieść konfigurację usługi Database Mail na SQL Server 2005 / 2008 / 2008 R2. Odpowiedziałem wówczas, że pewnie można to zrobić skryptując dane z tabel w bazie msdb. Postanowiłem, że napiszę kod do takiego skryptowania. Oto on:set nocount on; print'-- * Enabling DBMail * '; prin...
Bazy danych i XML 5173 dni, 21 godzin, 19 minut temu 9 ź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 5176 dni, 22 godziny, 55 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 5180 dni, 5 godzin, 51 minut temu 51 źrodło rozwiń
W SQLite używam autoinkrementacji wartości kluczy głównych w tabelach. Domyślnie wygenerowany model przez generatora Entity Framework nie uwzględniał tego faktu. Próba wstawienia nowego rekordu do tabeli zakończy się po prostu błędem, ponieważ Entity Framework będzie chciał wstawić jakąś wartość. W celu naprawienia tej sytuacji musiałem w designerze ustawić pole StoreGeneratedPattern na Identity: D...
Bazy danych i XML 5180 dni, 21 godzin, 36 minut temu 58 ź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 5181 dni, 11 godzin, 14 minut temu 37 źrodło rozwiń
Obecnie do składowania danych wykorzystuję pliki XML. Generyczna klasa abstrakcyjna AbstractDataAccess zajmuje się serializacją i deserializacją odpowiednich danych. Postanowiłem jednak wykorzystać Entity Framework w połączeniu z SQLite do składowania danych. Głównie dlatego, że wolę skorzystać z gotowego mechanizmu zapisu/odczytu niż dalej rozwijać coś własnego. Z Entity Framework miałem już do czynienia podczas pracy inżynier...
Bazy danych i XML 5181 dni, 11 godzin, 14 minut temu 153 źrodło rozwiń
XML jest jednym z najlepszych i najpopularniejszych formatów do wymiany danych. Jego implementacji, nie mogło zabraknąć również w C#. Warto wspomnieć, że XML pełni w platformie .NET bardzo ważną funkcję, ponieważ jest on często używany w celach konfiguracyjnych. Przykładem tego, jest na pewno dobrze wszystkim znany plik Web.config, używany do konfiguracji aplikacji ASP.NET. Dzisiejszym wpisem, chciałbym rozpocząć mały cykl artykułów na temat wykorzystania XML w C#. Na pierwszy ogień, najprostszy sposób ...
Bazy danych i XML 5182 dni, 11 godzin, 22 minuty temu 723 źrodło rozwiń
Autor: Ostatnimi dniami(ściślej: dniem ) pisałem serializacje/deserializację danych, do których ma dostęp użytkownik. Już od dłuższego czasu myślałem jak to zrobić, by było dobrze. Było to jednym z głównych czynników zaprojektowania gry tak, a nie inaczej. Na „pierwszy raz” postanowiłem napisać ładow...
Bazy danych i XML 5183 dni, 18 godzin, 1 minutę temu 30 ź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 5184 dni, 2 godziny, 46 minut temu 20 źrodło rozwiń
ObjectTrackingEnabled Dobrą praktyką jest ustawianie context.ObjectTrackingEnabled = false, gdy tylko odczytujemy jakieś dane.2. RunWithElevatedPrivilegesSPSecurity.RunWithElevatedPriviliges niestety nie działa z kodem LINQ To SharePoint. Istnieje jednak obejście, które znalazłem tutaj: public static void RunWithElevatedPriviliges(SPSecurity.CodeToRunElevated secureCode) { HttpContext backupCtxt = HttpContext.Current; try { // if there is a SPContext make it is as null so...
Bazy danych i XML 5190 dni, 8 godzin, 32 minuty temu 24 źrodło rozwiń
Autor: Ostatnio na forum portalu CodeGuru.pl brałem udział w dyskusji na temat metod prostego debugowania kodu T-SQL z wykorzystaniem polecenia PRINT. W wątku użytkownik szogun.krepa podał metodę obejścia problemu z poleceniem PRINT, które wysyła komunikat informacyjny (w przypadku aplikacji SQL Server Management Studio komunikat ten pojawia się w zakładce Messages) z o...
Bazy danych i XML 5190 dni, 17 godzin, 50 minut temu 62 źrodło rozwiń
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 5192 dni, 1 godzinę, 31 minut temu 37 źrodło rozwiń