Programowanie Microsoft® SQL Server® 2012 - Promise

8 downloads 232 Views 156KB Size Report
Część I: Podstawy programowania w SQL Server. 1 Omówienie pakietu ... Programowanie deklaratywne w oparciu o model bazy danych . . . . . . . . . . . . . . 6.
Leonard Lobel Andrew Brust

Programowanie Microsoft SQL Server 2012 ®

Przekład: Krzysztof Szkudlarek

APN Promise, Warszawa 2012

®

Skrócony spis treści Wprowadzenie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Podziękowania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii

Część I: Podstawy programowania w SQL Server

1 Omówienie pakietu oprogramowania SQL Server Data Tools. . . . . . . . . . . 3 2 Rozszerzenia języka T-SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3 Eksploracja środowiska SQL CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 4 Praca z transakcjami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 5 Zabezpieczenia serwera SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Część II: Zastosowania nierelacyjne

6 Język XML a relacyjna baza danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 7 Dane hierarchiczne a relacyjna baza danych. . . . . . . . . . . . . . . . . . . . . . . . 367 8 Natywne strumienie plikowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 9 Obsługa danych geoprzestrzennych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Część III: Stosowany SQL

10 11 12 13

Technologie dostępu do danych firmy Microsoft. . . . . . . . . . . . . . . . . . . . 523 Technologie dostępu do danych oparte na platformie WCF. . . . . . . . . . 635 Przenoszenie usług do chmury SQL Azure. . . . . . . . . . . . . . . . . . . . . . . . . 723 Usługa SQL Azure Data Sync i tworzenie aplikacji dla systemu Windows Phone 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775

14 Szersze spojrzenie na oprogramowanie SQL Server . . . . . . . . . . . . . . . . . 843 15 Technologie przetwarzania w pamięci – xVelocity. . . . . . . . . . . . . . . . . . . 875 Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Informacje o autorach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951

iii

Spis treści Wprowadzenie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Podziękowania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii

Część I: Podstawy programowania w SQL Server

1 Omówienie pakietu oprogramowania SQL Server Data Tools. . . . . . . . . . . 3 Omówienie pakietu oprogramowania SSDT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Narzędzia bazodanowe stworzone dla programistów. . . . . . . . . . . . . . . . . . . . . . . . 4 Programowanie deklaratywne w oparciu o model bazy danych. . . . . . . . . . . . . . . 6 Programowanie w trybie z połączeniem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Programowanie w trybie bez połączenia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Wersjonowanie i obrazy migawkowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Tworzenie kodu dla różnych platform docelowych. . . . . . . . . . . . . . . . . . . . . . . . . 12 Korzystanie z pakietu oprogramowania SSDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Łączenie sie z bazą danych za pomocą eksploratora obiektów SQL Server Object Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Zbieranie nowych wymagań. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Korzystanie z narzędzia Table Designer (w trybie z połączeniem) . . . . . . . . . . . . 22 Praca z projektem typu SQL Server Database w trybie offline. . . . . . . . . . . . . . . . 30 Wykonywanie obrazu migawkowego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Korzystanie z narzędzia Table Designer (projekt bazy danych w trybie Offline). . 33 Omówienie instancji LocalDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Refaktoryzacja bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Testowanie i debugowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Porównywanie schematów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Publikowanie w chmurze SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Przyzwyczajanie się do korzystania z pakietu oprogramowania SSDT. . . . . . . . . 57 Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2 Rozszerzenia języka T-SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Parametry o wartościach tablicowych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coś więcej niż kolejne rozwiązanie oparte na tabeli tymczasowej. . . . . . . . . . . . Wysyłanie zamówień. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Używanie parametrów tablicowych do masowych operacji wstawiania i aktualizowania danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przekazywanie parametrów tablicowych przy użyciu składnika ADO.NET. . . . . .

60 61 62 64 67 v

vi

Spis treści

Przekazywanie kolekcji w parametrach tablicowych przy użyciu niestandardowych iteratorów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Ograniczenia parametrów tablicowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Typy danych dla dat i godzin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Oddzielne typy danych dla dat i godzin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Bardziej przenośne typy danych dla dat i godzin . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Obsługa stref czasowych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Dokładność, ilość zajmowanej pamięci oraz format używany do zapisywania dat i godzin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Funkcje służące do przetwarzania dat i godzin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Instrukcja MERGE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Definiowanie źródłowych i docelowych danych dla instrukcji MERGE. . . . . . . . . 86 Klauzula WHEN MATCHED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Klauzula WHEN NOT MATCHED BY TARGET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Używanie instrukcji MERGE do replikacji tabeli . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Klauzula WHEN NOT MATCHED BY SOURCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Klauzula OUTPUT w instrukcji MERGE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Wybór metody złączenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Działanie instrukcji MERGE jako instrukcji języka DML. . . . . . . . . . . . . . . . . . . . . . 95 Składnia instrukcji typu INSERT OVER DML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Alternatywa wobec klauzuli OUTPUT…INTO, zapewniająca możliwość filtrowania danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Konsumowanie zmian przy użyciu słowa kluczowego CHANGES. . . . . . . . . . . . 102 Operator GROUPING SETS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Zestawienia według poziomu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Zestawienia według wszystkich możliwych kombinacji poziomów. . . . . . . . . . . 109 Zwracanie zestawień tylko dla najwyższego poziomu. . . . . . . . . . . . . . . . . . . . . . 111 Mieszanie i dopasowywanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Obsługa wartości NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Rozszerzenia funkcjonalności okna danych (klauzuli OVER). . . . . . . . . . . . . . . . . . . 118 Agregacje przesuwne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Porównanie klauzul RANGE i ROWS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Nowe funkcje języka T-SQL wprowadzone w wersji SQL Server 2012. . . . . . . . . . . 122 Nowe funkcje analityczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Nowe funkcje konwersji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Nowe funkcje służące do przetwarzania dat i godzin. . . . . . . . . . . . . . . . . . . . . . 131 Nowe funkcje logiczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Nowe funkcje służące do przetwarzania łańcuchów znakowych. . . . . . . . . . . . . 134 Zmienione funkcje matematyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Instrukcja THROW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Ponowne zgłaszanie wyjątków. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Stronicowanie po stronie serwera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Używanie funkcji ROW_NUMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141



Spis treści

Używanie składni OFFSET/FETCH NEXT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiekt SEQUENCE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ograniczenia sekwencji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wykrywanie metadanych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

142 143 146 146 152

3 Eksploracja środowiska SQL CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Wprowadzenie: Włączenie integracji ze środowiskiem CLR. . . . . . . . . . . . . . . . . . . . Integracja programu Visual Studio i serwera SQL Server. . . . . . . . . . . . . . . . . . . . . . Projekty typu SQL Server Database Project w programie Visual Studio. . . . . . . Automatyczne wdrażanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Atrybuty kodu SQL CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nasza pierwsza procedura składowana ze środowiska SQL CLR. . . . . . . . . . . . . . . . Procedury składowane CLR oraz dostęp do danych po stronie serwera. . . . . . . . . Potokowe przesyłanie danych za pomocą obiektów klasy SqlDataRecord i SqlMetaData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wdrażanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wdrażanie modułu wykonywalnego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wdrażanie procedur składowanych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testowanie procedur składowanych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funkcje CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedury wyzwalane CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agregacje CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typy danych SQL CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zabezpieczenia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Badanie i zarządzanie zdefiniowanymi przez użytkownika typami danych CLR . . Wskazówki praktyczne dotyczące korzystania ze środowiska SQL CLR. . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

154 155 156 158 158 160 162 165 168 168 171 174 175 177 183 187 193 199 200 207 208

4 Praca z transakcjami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Co to jest transakcja? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Omówienie właściwości ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obsługa transakcji lokalnych przez serwer SQL Server. . . . . . . . . . . . . . . . . . . . . . . . Tryb z automatycznym zatwierdzaniem transakcji. . . . . . . . . . . . . . . . . . . . . . . . . Tryb z transakcją jawną. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tryb z transakcją niejawną. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tryb transakcji z zakresem ograniczonym do partii zadań. . . . . . . . . . . . . . . . . . Poziomy izolacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poziom izolacji z odczytem niezatwierdzonym. . . . . . . . . . . . . . . . . . . . . . . . . . . . Poziom izolacji z odczytem zatwierdzonym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poziom izolacji z powtarzalnym odczytem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poziom izolacji z serializacją. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

210 211 214 214 214 218 219 222 222 224 225 226

vii

viii

Spis treści

Poziom izolacji obrazu migawkowego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poziom izolacji obrazu migawkowego z odczytem zatwierdzonych danych. . . Poziomy izolacji w środowisku ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transakcje rozproszone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Terminologia związana z transakcjami rozproszonymi . . . . . . . . . . . . . . . . . . . . . Reguły i metody rejestrowania się. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transakcje rozproszone na serwerze SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . Transakcje rozproszone w środowisku .NET Framework. . . . . . . . . . . . . . . . . . . . Użycie menedżera zasobów w transakcji zakończonej powodzeniem. . . . . . . . Transakcje w środowisku SQL CLR (integracja ze środowiskiem CLR). . . . . . . . . . . Podsumowanie dotychczasowych informacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

226 228 229 231 231 233 236 237 246 250 254 256

5 Zabezpieczenia serwera SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Cztery filary platformy Security Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bezpieczeństwo z założenia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bezpieczne ustawienia domyślne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bezpieczne wdrożenie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bezpieczna komunikacja. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Omówienie zabezpieczeń serwera SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loginy serwera SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Użytkownicy bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konto użytkownika guest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uwierzytelnianie i autoryzacja. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sposób nawiązywania połączeń przez klientów. . . . . . . . . . . . . . . . . . . . . . . . . . . Zasady haseł. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Separacja użytkownika i schematu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kontekst wykonywania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obsługa szyfrowania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Szyfrowanie danych w trakcie ich przesyłania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Szyfrowanie przechowywanych danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transparentne szyfrowanie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inspekcja serwera SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie obiektu inspekcji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opcje inspekcji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rejestrowanie zdarzeń inspekcji w systemie plików. . . . . . . . . . . . . . . . . . . . . . . . Rejestrowanie zdarzeń inspekcji w dzienniku zdarzeń systemu Windows. . . . . Prowadzenie inspekcji zdarzeń serwera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prowadzenie inspekcji zdarzeń bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przeglądanie zarejestrowanych zdarzeń inspekcji . . . . . . . . . . . . . . . . . . . . . . . . . Odpytywanie widoków katalogu inspekcji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Częściowo zawarte bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie częściowo zawartej bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

258 258 258 260 260 260 261 263 264 265 266 267 269 272 276 277 279 284 291 291 293 295 296 297 298 300 302 303 304



Spis treści

Tworzenie użytkownika zawartego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inne funkcje częściowo zawartych baz danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . Metody używane przez hakerów do atakowania serwerów SQL Server. . . . . . . . . Bezpośrednie połączenie z siecią Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Słabe hasła kont administratorów systemu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługa SQL Server Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wstrzykiwanie kodu SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spostrzeżenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

304 305 309 309 309 310 310 311 312

Część II: Zastosowania nierelacyjne

6 Język XML a relacyjna baza danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Dane znakowe jako dane w formacie XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typ danych xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Używanie zmiennych typu xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Używanie formatu XML w tabelach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definicje schematu XML (XSD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indeksy XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Polecenia FOR XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOR XML RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOR XML AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOR XML EXPLICIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dodatkowe funkcje klauzuli FOR XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opcja TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOR XML PATH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Emitowanie elementu ROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie schematu XSD umieszczanego wewnątrz dokumentu XML. . . . . . . Tworzenie kodu XML opartego na elementach. . . . . . . . . . . . . . . . . . . . . . . . . . . Rozmontowywanie danych w formacie XML przy użyciu funkcji OPENXML. . . . . Odpytywanie danych w formacie XML za pomocą zapytań w języku XQuery. . . . Omówienie wyrażeń w języku XQuery i XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . Działanie zapytań XQuery na serwerze SQL Server. . . . . . . . . . . . . . . . . . . . . . . . Instrukcje DML dla formatu XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

317 318 319 320 321 329 332 332 333 335 340 341 341 345 346 347 349 351 351 354 364 366

7 Dane hierarchiczne a relacyjna baza danych. . . . . . . . . . . . . . . . . . . . . . . . 367 Typ danych hierarchyid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie tabeli hierarchicznej. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda GetLevel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wypełnianie hierarchii danymi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda GetRoot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda GetDescendant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

368 370 371 372 373 374

ix

x

Spis treści

Metoda ToString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda GetAncestor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Strategie indeksowania tabeli hierarchicznej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indeksowanie w głąb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indeksowanie poprzeczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Odpytywanie tabel hierarchicznych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda IsDescendantOf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reorganizowanie węzłów wewnątrz hierarchii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metoda GetReparentedValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przeszczepianie gałęzi drzewa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Więcej metod typu danych hierarchyid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

375 381 385 386 386 388 388 390 390 392 395 396

8 Natywne strumienie plikowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Tradycyjne strategie obsługi obiektów typu BLOB. . . . . . . . . . . . . . . . . . . . . . . . . . . Obiekty BLOB w bazie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiekty BLOB w systemie plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Omówienie strumieni plikowych typu FILESTREAM . . . . . . . . . . . . . . . . . . . . . . . . . . Włączenie obsługi strumieni plikowych typu FILESTREAM . . . . . . . . . . . . . . . . . . . . Włączanie obsługi strumieni plikowych typu FILESTREAM na poziomie komputera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Włączanie obsługi strumieni plikowych typu FILESTREAM na poziomie instancji serwera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie bazy danych z włączoną obsługą strumieni plikowych typu FILESTREAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie tabeli z kolumnami typu FILESTREAM. . . . . . . . . . . . . . . . . . . . . . . . . . Przechowywanie i pobieranie danych typu FILESTREAM. . . . . . . . . . . . . . . . . . . . . . Usuwanie danych typu FILESTREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bezpośrednie przesyłanie strumieniowe w środowisku .NET przy użyciu klasy SqlFileStream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Omówienie klasy SqlFileStream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie aplikacji klienckiej typu Windows Forms. . . . . . . . . . . . . . . . . . . . . . . Programowanie dostępu do danych przy użyciu klasy SqlFileStream . . . . . . . . Tworzenie strumieniowej usługi HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Budowanie klienta WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ograniczenia i uwagi dotyczące strumieni plikowych typu FILESTREAM . . . . . . . . Omówienie tabel plikowych typu FileTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie tabeli plikowej FileTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipulowanie tabelami plikowymi typu FileTable. . . . . . . . . . . . . . . . . . . . . . . . Przeszukiwanie dokumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

398 398 399 400 402 402 405 406 408 409 413 413 414 416 418 429 435 438 440 445 447 452 453



Spis treści

9 Obsługa danych geoprzestrzennych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 SQL Server Spaces Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modele przestrzenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Model planarny (płaskiej Ziemi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Model geodezyjny (elipsoida). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standardy danych przestrzennych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Importowanie danych w formacie WKT (Well-Known Text). . . . . . . . . . . . . . . . . Importowanie danych w formacie WKB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Importowanie danych w formacie GML (Geography Markup Language). . . . . Przestrzenne typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Korzystanie z typu danych geometry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Korzystanie z typu danych geography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rozszerzenia przestrzenne wprowadzone w wersji SQL Server 2012. . . . . . . . . . . . Nowe klasy danych przestrzennych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nowe metody przestrzenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inne ulepszenia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integracja z mapami Microsoft Bing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

456 456 456 457 458 459 463 463 464 465 479 493 493 498 506 509 519

Część III: Stosowany SQL

10 Technologie dostępu do danych firmy Microsoft. . . . . . . . . . . . . . . . . . . . 523 Ewolucja dostępu do danych na platformie .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowywanie przykładowej bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitorowanie aktywności bazy danych przy użyciu narzędzia SQL Server Profiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konwencjonalna technologia ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Korzystanie z surowych obiektów dostępu do danych. . . . . . . . . . . . . . . . . . . . . Praca ze zbiorami danych typu DataSets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zapytania LINQ (Language-Integrated Query). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologia LINQ to DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mapowanie obiektowo relacyjne (ORM) wkracza do świata .NET . . . . . . . . . . . . . . Zróżnicowana oferta technologii ORM z Redmond. . . . . . . . . . . . . . . . . . . . . . . . LINQ to SQL: przeszłość i teraźniejszość . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entity Framework: teraźniejszość i przyszłość. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

524 527 533 535 535 559 582 584 589 591 593 597 632

11 Technologie dostępu do danych oparte na platformie WCF. . . . . . . . . . 635 Zdefiniowanie usług. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opcje dostępu do danych na platformie WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługa WCF Data Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie usługi WCF Data Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie modelu danych z encjami. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

635 636 637 639 641

xi

xii

Spis treści

Testowanie działania usługi WCF Data Services przy użyciu przeglądarki Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie aplikacji klienckich dla usług WCF Data Services . . . . . . . . . . . . . . . . Rozszerzanie usługi WCF Data Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługa WCF RIA Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ustanawianie łącza usługi WCF RIA Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie modelu danych z encjami. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie klas usługi domenowej oraz klas metadanych. . . . . . . . . . . . . . . . . . . Budowanie klienta Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inspekcja protokołu .NET Framing przy użyciu programu Fiddler . . . . . . . . . . . Testowanie gotowego rozwiązania dla usługi WCF RIA Services. . . . . . . . . . . . . Wybór właściwej technologii dostępu do danych opartej na platformie WCF . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

644 648 679 685 686 689 690 701 710 711 720 721

12 Przenoszenie usług do chmury SQL Azure. . . . . . . . . . . . . . . . . . . . . . . . . 723 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Czym właściwie jest usługa SQL Azure?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skąd wynikają ograniczenia?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ceny. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Początek jest bezpłatny. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Po wstępnych przygotowaniach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie serwera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zarządzanie bazą danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie tabel i wprowadzanie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wykonywanie zapytań w oknie przeglądarki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Projektowanie indeksów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zarządzanie i wizualizacje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Łączenie się „z ziemi”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przeprowadzanie migracji i synchronizacji pomiędzy ziemią a chmurą. . . . . . . . . Ratunek w plikach typu DACPAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wyodrębnianie, wdrażanie, eksportowanie i importowanie plików aplikacji warstwy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scenariusze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Federacje SQL Azure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Leksykon federacji SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie federacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sfederowane tabele. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Używanie elementów federacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dzielenie i usuwanie elementów federacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabele centralne i tabele odwołań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zapytania rozdysponowujące i scenariusze z wieloma dzierżawcami. . . . . . . . .

725 726 727 728 729 730 731 732 736 737 738 739 740 741 744 748 749 750 753 759 760 760 762 763 763 764 764



Spis treści

Obsługa federacji w programie SSMS oraz SSDT. . . . . . . . . . . . . . . . . . . . . . . . . . Zastosowanie federacji w chmurze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Azure Reporting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie serwera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie raportów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wdrażanie raportów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rozwiewanie wątpliwości. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

765 766 766 768 769 771 772 773

13 Usługa SQL Azure Data Sync i tworzenie aplikacji dla systemu

Windows Phone 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 Charakterystyka systemu z okazjonalnym połączeniem. . . . . . . . . . . . . . . . . . . . . . . Zarządzanie danymi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poznajemy usługę SQL Azure Data Sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Możliwości i funkcje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Terminologia związana z usługą Data Sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grupy synchronizacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agent synchronizacji klienta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uwagi dotyczące usługi SQL Azure Data Sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie systemu z okazjonalnym połączeniem. . . . . . . . . . . . . . . . . . . . . . . . . . . . Wymagania wstępne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konfigurowanie usługi SQL Azure Data Sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przygotowanie serwera usługi SQL Azure Data Sync Server . . . . . . . . . . . . . . . . Tworzenie grupy synchronizacji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Umieszczanie usług WCF Data Services na platformie Windows Azure . . . . . . . . . Informacje o platformie Windows Azure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie rozwiązania FlixPoll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dodawanie usługi danych FlixPoll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dodawanie modelu danych z encjami. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie klienta FlixPoll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Używanie danych w formacie OData w systemie Windows Phone. . . . . . . . . . . . . . Baza danych SQL Server na telefonie komórkowym. . . . . . . . . . . . . . . . . . . . . . . Wdrożenie na platformie Windows Azure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

776 776 777 778 779 780 782 783 785 789 790 790 791 803 803 805 806 808 811 828 832 840 842

14 Szersze spojrzenie na oprogramowanie SQL Server . . . . . . . . . . . . . . . . . 843 Stos elementów logiki biznesowej firmy Microsoft: krótkie wprowadzenie . . . . . . Usługi danych głównych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługi jakości danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługi integracji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System RDBMS i hurtownie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Składnice danych i hurtownie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schemat gwiaździsty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

845 845 849 852 854 854 855

xiii

xiv

Spis treści

Urządzenia z hurtowniami danych SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługi analityczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motor wielowymiarowy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dodatek PowerPivot i tryb tabelaryczny usługi SSAS. . . . . . . . . . . . . . . . . . . . . . Wyszukiwanie danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Power View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługi raportujące. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Części raportu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wysyłanie alertów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Składniki pulpitu nawigacyjnego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Excel i usługi programu Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Korzystanie z usług programu Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . StreamInsight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usługa PerformancePoint Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Edycje serwera SQL Server i wymagane wersje oprogramowania SharePoint. . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

856 857 858 860 863 864 865 866 866 867 867 869 870 871 872 874

15 Technologie przetwarzania w pamięci – xVelocity. . . . . . . . . . . . . . . . . . . 875 Bazy danych z magazynem kolumn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologia magazynu kolumn na rynku rozwiązań logiki biznesowej. . . . . . . Technologia xVelocity w systemach RDBMS: Indeksy kolumn. . . . . . . . . . . . . . . . . . Tworzenie indeksu kolumny. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Czego nie można zrobić. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Jak działają indeksy kolumn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technologia xVelocity w zastosowaniach analitycznych: PowerPivot i modele tabelaryczne SSAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uporządkowanie słownictwa związanego z usługami analitycznymi. . . . . . . . . Najważniejsze informacje na temat technologii BISM. . . . . . . . . . . . . . . . . . . . . . Przyjaciele, rodacy, dajcie nam swoje dane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tworzenie modelu BISM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M jak Modelowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelowanie, Part Deux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Odpytywanie modeli danych z poziomu programu Excel . . . . . . . . . . . . . . . . . . Program PowerPivot dla serwera SharePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Przejście do usługi SSAS w trybie tabelarycznym. . . . . . . . . . . . . . . . . . . . . . . . . . Nadchodzi program Power View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powrót do motoru VertiPaq. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

877 879 879 880 880 882 887 887 889 890 891 895 898 905 908 909 916 918 920

Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Informacje o autorach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961

Suggest Documents