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 5066 dni, 4 godziny, 2 minuty 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 5067 dni, 4 godziny, 33 minuty 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 5071 dni, 22 godziny, 31 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 5080 dni, 2 godziny, 21 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 5080 dni, 16 godzin, 13 minut 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 5080 dni, 16 godzin, 13 minut 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 5089 dni, 9 godzin, 23 minuty 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 5089 dni, 9 godzin, 23 minuty 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 5091 dni, 19 godzin, 1 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 5094 dni, 20 godzin, 36 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 5098 dni, 3 godziny, 32 minuty 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 5098 dni, 19 godzin, 17 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 5099 dni, 8 godzin, 55 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 5099 dni, 8 godzin, 55 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 5100 dni, 9 godzin, 3 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 5101 dni, 15 godzin, 43 minuty 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 5102 dni, 27 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 5108 dni, 6 godzin, 13 minut 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 5108 dni, 15 godzin, 31 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 5109 dni, 23 godziny, 12 minut temu 37 źrodło rozwiń