Wydawnictwo Helionul. Chopina 644-100 Gliwicetel. (32)230-98-63e-mail: [email protected]
PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£
IDZ DOIDZ DO
ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG
KATALOG KSI¥¯EKKATALOG KSI¥¯EK
TWÓJ KOSZYKTWÓJ KOSZYK
CENNIK I INFORMACJECENNIK I INFORMACJE
ZAMÓW INFORMACJEO NOWO�CIACH
ZAMÓW INFORMACJEO NOWO�CIACH
ZAMÓW CENNIKZAMÓW CENNIK
CZYTELNIACZYTELNIA
FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE
SPIS TRE�CISPIS TRE�CI
DODAJ DO KOSZYKADODAJ DO KOSZYKA
KATALOG ONLINEKATALOG ONLINE
Microsoft SQL Server2000. Ksiêga ekspertaAutorzy: Ray Rankins, Paul Jensen, Paul BertucciT³umaczenie: Micha³ Dadan, Leszek Mosingiewicz,Rafa³ SzpotonISBN: 83-7197-721-2Tytu³ orygina³u: Microsoft SQL Server 2000. UnleashedFormat: B5, stron: 1302
„Microsoft SQL Server 2000. Ksiêga eksperta” to pozycja przeznaczona dla �rednio zaawansowanego i zaawansowanego u¿ytkownika. Nadaje siê ona zarówno dla administratorów programu SQL Server, jak i programistów chc¹cych w pe³ni zrozumieæ dzia³anie tego produktu i pisaæ lepsze aplikacje oraz kod Transact-SQL. Je¿eli jeste� odpowiedzialny za analizê, projektowanie, implementacjê, obs³ugê, administrowanie czy rozwi¹zywanie problemów z SQL Server 2000, ta ksi¹¿ka bêdzie stanowiæ doskona³e �ród³o praktycznych informacji. Autorzy szczegó³owo omówili bardziej z³o¿one aspekty produktu, takie jak wykorzystanie nowych narzêdzi, kodowanie w jêzyku Transact-SQL, administrowanie serwerem, analizowanie zapytañ, optymalizacjê, hurtownie danych, zarz¹dzanie bardzo du¿ymi bazami danych i poprawianie wydajno�ci.
Omówione zagadnienia to m.in.
• �rodowisko Microsoft SQL Server 2000 i zmiany wprowadzone w najnowszej wersji programu • Instalowanie i konfigurowanie serwera i programów klienckich • Narzêdzia administracyjne i administrowanie SQL Serverem • Praca z SQL Server Enterprise Managerem i narzêdziami uruchamianymi z linii poleceñ • Tworzenie baz danych, tabel, indeksów, widoków • Pisanie procedur przechowywanych na serwerze i wyzwalaczy • Tworzenie w³asnych funkcji • Kwestie zwi¹zane z bezpieczeñstwem bazy danych, uprawnieniami u¿ytkowników i odzyskiwaniem danych w przypadku awarii • Zarz¹dzanie serwerami sprzê¿onymi i zdalnymi, tworzenie klastrów • Import, eksport i replikacja danych • U¿ycie jêzyka T-SQL • Wewnêtrzne mechanizmy serwera • Kwestie strojenia i optymalizacji zapytañ • Blokowanie i jego wp³yw na wydajno�æ • Techniki projektowania efektywnych baz danych • XML w programie SQL Server 2000 • Us³ugi analizy danych w programie SQL Server • Microsoft Transaction Server i jego zastosowanie
Ksi¹¿ka ta nie jest tylko opisem sk³adni, zastêpuj¹cym dokumentacjê do³¹czan¹ do SQL Server. Przydaje siê ona tam, gdzie dokumentacja online nie zdaje egzaminu. Autorzy dziel¹ siê z czytelnikami przyk³adami i przemy�leniami wynikaj¹cymi z ich wieloletniego do�wiadczenia zawodowego w pracy z MS SQL Server. „Microsoft SQL Server 2000. Ksiêga eksperta” to niezbêdne �ród³o informacji dla wszystkich pracuj¹cych z tym programem.
���������
�������� �������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������
������������ �� ���������������������� ��������������������������������������
���������������������������������� ��!�"!������������������������������������������������#�Ogólny opis architektury klient-serwer ....................................................................................... 41
Model wykorzystujący komputery mainframe ....................................................................... 43Model wykorzystujący komputery PC pracujące w sieci LAN................................................. 43Warstwy pośredniczące ....................................................................................................... 43
Silnik baz danych SQL Servera ................................................................................................. 44Niezawodne przechowywanie danych................................................................................... 45Natychmiastowy dostęp do danych....................................................................................... 45Zapewnianie spójnego dostępu do danych............................................................................. 46Kontrola dostępu ................................................................................................................ 46Narzucanie reguł integralności danych.................................................................................. 46
SQL Server Enterprise Manager ................................................................................................ 47SQL Service Manager............................................................................................................... 48SQL Server Agent .................................................................................................................... 49SQL Query Analyzer ................................................................................................................ 50SQL Profiler ............................................................................................................................ 51Usługi przekształcania danych................................................................................................... 52Replikacja................................................................................................................................ 54
Replikacja migawkowa........................................................................................................ 54Replikacja transakcyjna....................................................................................................... 54Replikacja scalająca ............................................................................................................ 55Uaktualnienia błyskawiczne................................................................................................. 55
Microsoft Search Server (wyszukiwanie pełnotekstowe) .............................................................. 56Usługi analizy danych (OLAP Server)........................................................................................ 57
��������������������������$����!��%!��� ��!�"!����&&& ��������������������������' Środowiska pracy SQL Server 2000........................................................................................... 59
Windows 98 i Windows ME ................................................................................................ 59Windows NT 4.0 ................................................................................................................ 60Windows 2000 ................................................................................................................... 60Windows CE...................................................................................................................... 61Tabela platform systemowych i wersji SQL Servera 2000 ...................................................... 62
6 Microsoft SQL Server 2000. Księga eksperta
Wersje SQL Servera 2000......................................................................................................... 63SQL Server 2000 Standard Edition ....................................................................................... 63SQL Server 2000 Enterprise Edition ..................................................................................... 64Inne wersje SQL Servera 2000............................................................................................. 65
Modele licencjonowania SQL Servera 2000................................................................................ 67Licencjonowanie wersji Personal Edition .............................................................................. 69Licencjonowanie wersji Database Engine.............................................................................. 69Licencjonowanie wersji Windows CE Edition ....................................................................... 69Wybór modelu licencjonowania ........................................................................................... 69Mieszanie modeli licencjonowania ....................................................................................... 70Licencje dla klastrów .......................................................................................................... 70
������������(���)������ ��!�"!��!��&&& ���������������������������������������������������*�Nowe właściwości SQL Servera 2000........................................................................................ 71
Funkcje definiowane przez użytkownika ............................................................................... 72Widoki indeksowane........................................................................................................... 72Rozproszone widoki częściowe............................................................................................ 73Wyzwalacze INSTEAD OF i AFTER................................................................................... 73Nowe typy danych.............................................................................................................. 73Tekst w wierszu danych ...................................................................................................... 74Kaskadowe ograniczenia RI................................................................................................. 74Możliwość uruchamiania kilku kopii SQL Servera................................................................. 74Obsługa XML .................................................................................................................... 75Przenoszenie dziennika........................................................................................................ 75
Rozszerzenia wprowadzone w SQL Serverze 2000...................................................................... 76Rozszerzenia w systemie indeksowania................................................................................. 76Rozszerzenia sposobu sortowania......................................................................................... 76Rozszerzenia DBCC ........................................................................................................... 77Rozszerzenia w wyszukiwaniu pełnotekstowym .................................................................... 77Rozszerzone możliwości tworzenia klastrów ......................................................................... 77Rozszerzenia dotyczące tworzenia i przywracania kopii bezpieczeństwa.................................. 78Obsługa do 64 GB pamięci .................................................................................................. 78Rozszerzenia usług analizy danych....................................................................................... 78
������������������������������ ����������������������������������������������������� !
���������#��+,���-���,�!�,��!%��������� ��!�"!����������������������������������������.�Wybór wersji SQL Servera ....................................................................................................... 83Wymagania sprzętowe.............................................................................................................. 85
Procesor ............................................................................................................................ 85Pamięć............................................................................................................................... 85Przestrzeń dyskowa i rodzaje dysków twardych..................................................................... 86
Wymagania programowe........................................................................................................... 86System operacyjny.............................................................................................................. 87System plików.................................................................................................................... 87Pozostałe wymagania .......................................................................................................... 88
Wybór opcji konfiguracyjnych w czasie instalacji........................................................................ 88Wybór komponentów SQL Servera i miejsca położenia plików............................................... 88Konta użytkowników programów SQL Server i SQL Server Agent ......................................... 90Wybór trybu uwierzytelniania .............................................................................................. 91
Spis treści 7
Wybór domyślnego sposobu sortowania................................................................................ 91Biblioteki sieciowe.............................................................................................................. 92Metody licencjonowania...................................................................................................... 93
Sprawdzanie poprawności instalacji ........................................................................................... 94Uruchamianie, zatrzymywanie i pauzowanie SQL Servera ........................................................... 94
Łączenie się z SQL Serverem .............................................................................................. 95Konfiguracja SQL Servera po jego zainstalowaniu ...................................................................... 96
Zmiana hasła użytkownika sa............................................................................................... 96Konfiguracja kont administratora ......................................................................................... 96Konfiguracja dziennika błędów............................................................................................ 97Narzędzie Server Network................................................................................................... 97
Rozwiązywanie problemów z instalacją...................................................................................... 97Instalacja zdalna ....................................................................................................................... 98Instalacja nienadzorowana......................................................................................................... 98Instalowanie kopii SQL Servera o określonej nazwie ................................................................... 99
Po co instalować wiele kopii SQL Servera ............................................................................ 99Uaktualnianie z wcześniejszych wersji ..................................................................................... 100
���������'��+,���-���,�!�����,��/���%���-�!,�� �����������������������������������������&�Architektura klienta SQL Servera ............................................................................................ 101Instalowanie narzędzi klienckich.............................................................................................. 103
Wymagania klientów......................................................................................................... 103Opcje instalacyjne............................................................................................................. 103
Konfiguracja klientów............................................................................................................. 105Narzędzie konfiguracji sieci SQL Servera ........................................................................... 106
Obsługa protokołów sieciowych .............................................................................................. 109Protokoły sieciowe............................................................................................................ 109Rozwiązywanie problemów z połączeniami klienckimi ........................................................ 112
Instalowanie ODBC................................................................................................................ 115Konfiguracja źródeł danych ODBC .................................................................................... 115Rozwiązywanie problemów z połączeniami ODBC.............................................................. 116OLE DB .......................................................................................................................... 116
Łączenie się z SQL Serverem za pośrednictwem Internetu ......................................................... 117Zabezpieczanie połączeń przychodzących z Internetu .......................................................... 117Łączenie się z SQL Serverem za pośrednictwem Microsoft Proxy Server .............................. 118
����������"����#����#$�����%�����#$���� ����&��'��$�$�������������������������������������������������� !!�
���������0��1��������!���,�%!���,�����������2�,������������������������������Obowiązki administratora systemu........................................................................................... 121Systemowe bazy danych......................................................................................................... 122
master.............................................................................................................................. 122msdb ............................................................................................................................... 122model .............................................................................................................................. 123tempdb ............................................................................................................................ 123Baza distribution............................................................................................................... 123
Tabele systemowe.................................................................................................................. 123Katalog systemowy........................................................................................................... 124Katalog baz danych........................................................................................................... 125
8 Microsoft SQL Server 2000. Księga eksperta
Katalog replikacji.............................................................................................................. 125Tabele systemowe w msdb ................................................................................................ 126
Procedury przechowywane w systemie..................................................................................... 127Specjalne cechy procedur przechowywanych w systemie ..................................................... 128
Przydatne procedury systemowe.............................................................................................. 128Inne sposoby wykonywania zapytań na tabelach systemowych................................................... 129
Widoki schematów informacyjnych.................................................................................... 129Funkcje systemowe i funkcje operujące na metadanych ....................................................... 130
���������*���� ��!�"!��3,�!�����!���,�/!� ��������������������������������������������������Tworzenie grup serwerów i rejestrowanie SQL Servera w Enterprise Managerze ......................... 132
Grupy serwerów............................................................................................................... 132Rejestrowanie serwerów.................................................................................................... 132Łączenie się z i odłączanie się od serwerów ........................................................................ 133Uruchamianie i zatrzymywanie serwerów ........................................................................... 134
Konfiguracja serwera.............................................................................................................. 134Opcje serwera .................................................................................................................. 135Opcje dotyczące bezpieczeństwa........................................................................................ 135Zmiana konfiguracji .......................................................................................................... 135
Bazy danych.......................................................................................................................... 136Tworzenie i modyfikacja baz danych.................................................................................. 136Tworzenie i przywracanie kopii bezpieczeństwa.................................................................. 138Praca z diagramami baz danych ......................................................................................... 138
Bezpieczeństwo...................................................................................................................... 139Zarządzanie nazwami użytkowników i rolami ..................................................................... 139Zarządzanie serwerami połączonymi i zdalnymi .................................................................. 141
Zarządzanie serwerem ............................................................................................................ 141SQL Server Agent............................................................................................................. 141Kopie bezpieczeństwa ....................................................................................................... 142Bieżące operacje............................................................................................................... 142Plany konserwacji baz danych ........................................................................................... 143Dzienniki SQL Servera ..................................................................................................... 143
Usługi przekształcania danych................................................................................................. 145Usługi pomocnicze ................................................................................................................. 145
Koordynator transakcji rozproszonych................................................................................ 145Wyszukiwanie pełnotekstowe ............................................................................................ 146SQL Mail......................................................................................................................... 146
Narzędzia systemowe ............................................................................................................. 146Query Analyzer ................................................................................................................ 146SQL Profiler..................................................................................................................... 147Zarządzanie komunikatami o błędach ................................................................................. 148
Replikacja.............................................................................................................................. 149Publikacje ........................................................................................................................ 149Subskrypcje ..................................................................................................................... 149
Korzystanie z narzędzia Database Taskpad............................................................................... 150Korzystanie z Query Designera................................................................................................ 151Obiekty skryptowe ................................................................................................................. 152Uzyskiwanie pomocy.............................................................................................................. 154
Spis treści 9
���������.��(����������$���$��,!�����!�������-!!4����������������������������''BCP...................................................................................................................................... 155Narzędzia związane z usługami przekształcania danych............................................................. 156ISQL i OSQL......................................................................................................................... 157makepipe i readpipe................................................................................................................ 158ODBCcmpt............................................................................................................................ 159odbcping................................................................................................................................ 159rebuildm................................................................................................................................ 160regrebld ................................................................................................................................. 161Narzędzia związane z replikacją danych ................................................................................... 161SQLDiag ............................................................................................................................... 163SQLMaint.............................................................................................................................. 164SQLServer............................................................................................................................. 165VSwitch ................................................................................................................................ 165
��������� ��5����!,�!�6�����,$�������7���,�!�,�2�������������������������������0*Co składa się na bazę danych SQL Servera............................................................................... 167Przechowywanie danych w SQL serwerze................................................................................ 168Pliki baz danych..................................................................................................................... 168
Pliki podstawowe.............................................................................................................. 169Pliki dodatkowe................................................................................................................ 169Korzystanie z grup plików ................................................................................................. 170Plik dziennika transakcji.................................................................................................... 171
Tworzenie baz danych............................................................................................................ 171Korzystanie z kreatora Create Database (utwórz bazę danych) .............................................. 172Korzystanie z Enterprise Managera..................................................................................... 172Korzystanie z T-SQL........................................................................................................ 174
Zarządzanie bazami danych..................................................................................................... 175Zarządzanie rozszerzaniem plików ..................................................................................... 175Rozszerzanie baz danych................................................................................................... 175Zmniejszanie baz danych................................................................................................... 176
Ustawianie opcji baz danych ................................................................................................... 179Opcje baz danych ............................................................................................................. 179Ustawianie opcji baz danych za pomocą Enterprise Managera .............................................. 179Ustawianie opcji baz danych w języku T-SQL .................................................................... 180Uzyskiwanie informacji o bieżących ustawieniach ............................................................... 181
����������&��5����!,�!���6!-�������7���,�!�,�2�����������������������������������������.'Typy danych.......................................................................................................................... 186
Znakowe i binarne typy danych.......................................................................................... 186uniqueidentifier ................................................................................................................ 188timestamp ........................................................................................................................ 188Typy danych datetime....................................................................................................... 188Logiczny typ danych: bit ................................................................................................... 190
Numeryczne typy danych........................................................................................................ 190Typy danych dla liczb całkowitych..................................................................................... 190Przybliżone typy numeryczne ............................................................................................ 191Precyzyjne typy numeryczne ............................................................................................. 191Typy money..................................................................................................................... 191
10 Microsoft SQL Server 2000. Księga eksperta
Synonimy typów danych......................................................................................................... 192Typy danych zdefiniowane przez użytkownika.......................................................................... 192Tworzenie tabel...................................................................................................................... 193
Nazywanie tabel ............................................................................................................... 194Tworzenie tabel w języku T-SQL ............................................................................................ 195
Definiowanie kolumn........................................................................................................ 195Właściwości kolumn ......................................................................................................... 196Wybór lokalizacji dla tabeli ............................................................................................... 197Definiowanie stałych......................................................................................................... 198Dodawanie, usuwanie i modyfikacja kolumn w języku T-SQL ............................................. 199
Tworzenie tabel za pomocą Table Designera............................................................................. 202Dodawanie, usuwanie i modyfikacja kolumn w Table Designerze ......................................... 202Generowanie skryptów tworzących tabele........................................................................... 203
Przeglądanie właściwości tabel i zawartych w nich danych w Enterprise Managerze .................... 204Ograniczenia rozmiarów i wymiarów tabel ............................................................................... 205Usuwanie tabel....................................................................................................................... 206Tabele tymczasowe ................................................................................................................ 206
Tworzenie tabel tymczasowych.......................................................................................... 206
�������������5����!,�!��,�!��8��������7���,�!�,�2� ��������������������������������&*Rodzaje indeksów .................................................................................................................. 208
Indeksy klastrowe............................................................................................................. 208Indeksy nieklastrowe......................................................................................................... 208
Tworzenie indeksów w języku T-SQL ..................................................................................... 209Składnia polecenia CREATE INDEX................................................................................. 209Przykłady użycia poleceń języka Transact-SQL do tworzenia indeksów ................................ 209
Tworzenie indeksów w Enterprise Managerze........................................................................... 211Zarządzanie indeksami............................................................................................................ 212Usuwanie indeksów................................................................................................................ 212
���������������8%,�)9���,$ �����������������������������������������������������������������������Rodzaje spójności danych ....................................................................................................... 213
Spójność domenowa ......................................................................................................... 214Spójność jednostkowa....................................................................................................... 214Spójność odwoławcza ....................................................................................................... 214
Wymuszanie spójności danych ................................................................................................ 214Deklaracje........................................................................................................................ 214Metody proceduralne ........................................................................................................ 215
Ograniczenia.......................................................................................................................... 215Ograniczenia PRIMARY KEY .......................................................................................... 215Ograniczenia UNIQUE ..................................................................................................... 216Ograniczenie zapewniające spójność odwoławczą: FOREIGN KEY...................................... 216Ograniczenia CHECK....................................................................................................... 218Nakładanie ograniczeń w Enterprise Managerze .................................................................. 220Zarządzanie ograniczeniami............................................................................................... 222Zbieranie informacji o istniejących ograniczeniach .............................................................. 222
Reguły................................................................................................................................... 223Stosowanie reguł............................................................................................................... 224Tworzenie reguł i zarządzanie nimi .................................................................................... 224Ograniczenia reguł ............................................................................................................ 225
Spis treści 11
Wartości domyślne ................................................................................................................. 225Deklaratywne wartości domyślne ....................................................................................... 226Związywane wartości domyślne ......................................................................................... 226Zastosowanie wartości domyślnych.................................................................................... 227Kiedy nadawane są wartości domyślne ............................................................................... 227Pierwszeństwo powiązań z regułami i wartościami domyślnymi............................................ 229
�������������5����!,�!������8��������7���,�!�,�2� �����������������������������������Definicja widoku.................................................................................................................... 231Widoki ułatwiające dostęp do danych....................................................................................... 232Widoki jako mechanizm bezpieczeństwa .................................................................................. 233Zmiany w danych a widoki...................................................................................................... 234Tworzenie widoków ............................................................................................................... 235
Wytyczne dotyczące tworzenia widoków............................................................................ 235Ograniczenia związane z tworzeniem widoków ................................................................... 236Tworzenie widoków w języku T-SQL ................................................................................ 236Tworzenie widoków za pomocą View Designera ................................................................. 238
Modyfikacja i usuwanie widoków............................................................................................ 240Modyfikacja widoków....................................................................................................... 240Usuwanie widoków........................................................................................................... 240
Widoki partycji ...................................................................................................................... 241Tworzenie widoku partycji ................................................................................................ 242Uaktualnianie danych za pośrednictwem widoku partycji ..................................................... 242
Widoki indeksowane............................................................................................................... 243Trochę teorii..................................................................................................................... 243Zalety widoków indeksowanych......................................................................................... 243Wady widoków indeksowanych ......................................................................................... 244
����������#��5����!,�!����!�������!��$��,$�,���!��!��!������7���,�!�,�2� ������������������������������������������������������������������������������������������#'
Zalety procedur przechowywanych na serwerze........................................................................ 245Tworzenie i wykonywanie procedur......................................................................................... 247
Grupy procedur ................................................................................................................ 248Odroczone odwzorowywanie nazw.......................................................................................... 249
Identyfikacja obiektów, do których odwołuje się procedura .................................................. 251Przeglądanie i modyfikacja treści procedur ............................................................................... 252Parametry wejściowe.............................................................................................................. 257
Ustawianie domyślnych wartości parametrów ..................................................................... 258Przekazywanie nazw obiektów w parametrach .................................................................... 260Stosowanie masek w parametrach ...................................................................................... 261
Parametry wyjściowe.............................................................................................................. 262Kod wyjścia........................................................................................................................... 263
Systemowe kody wyjścia................................................................................................... 264Stosowanie kursorów w procedurach ....................................................................................... 264
Zmienne typu cursor ......................................................................................................... 266Procedury zagnieżdżone.......................................................................................................... 269
Procedury rekurencyjne..................................................................................................... 270Stosowanie tabel tymczasowych w procedurach........................................................................ 273
Tabele tymczasowe a wydajność........................................................................................ 275
12 Microsoft SQL Server 2000. Księga eksperta
Posługiwanie się typem danych table ....................................................................................... 278Zdalne procedury ................................................................................................................... 280Usuwanie błędów w procedurach za pomocą Query Analyzera ................................................... 281Usuwanie błędów w procedurach w Microsoft Visual Studio i w Visual Basicu ........................... 282Procedury systemowe............................................................................................................. 283
Tworzenie własnych procedur systemowych....................................................................... 285Ostrzeżenie przed bezpośrednim odwoływaniem się do tabel systemowych ........................... 287Systemowe widoki schematów informacyjnych ................................................................... 287Widoki zgodne ze standardem ANSI .................................................................................. 288
Wydajność procedur............................................................................................................... 288Buforowanie informacji o zapytaniach ................................................................................ 289Pamięć podręczna procedur ............................................................................................... 290Współdzielone plany wykonywania.................................................................................... 291Automatyczna rekompilacja planów wykonywania .............................................................. 293Wymuszanie rekompilacji planów wykonywania ................................................................. 298
Stosowanie dynamicznych poleceń języka SQL w procedurach.................................................. 301Korzystanie z sp_executesql .............................................................................................. 303
Procedury wywoływane przy starcie ........................................................................................ 305Rozszerzone procedury przechowywane .................................................................................. 308
Tworzenie procedur rozszerzonych .................................................................................... 309Instalacja procedur rozszerzonych na serwerze.................................................................... 310Przeglądanie informacji na temat procedur rozszerzonych.................................................... 310Procedury rozszerzone dostarczane z SQL Serverem ........................................................... 310Posługiwanie się procedurą xp_cmdshell............................................................................. 311
Ograniczenia procedur i rady dla programistów......................................................................... 314Wywoływanie procedur w czasie trwania transakcji ............................................................. 315
����������'��5����!,�!��$���-��$�������7���,�!�,�2������������������������������ Zalety wyzwalaczy i ich zastosowania...................................................................................... 319Tworzenie wyzwalaczy........................................................................................................... 321Wyzwalacze AFTER .............................................................................................................. 323
Wykonywanie .................................................................................................................. 325Kolejność wywoływania wyzwalaczy................................................................................. 326Przypadki szczególne ........................................................................................................ 326Ograniczenia wyzwalaczy AFTER..................................................................................... 327
Tabele inserted i deleted.......................................................................................................... 327Sprawdzanie, czy kolumny były uaktualniane ........................................................................... 329Wyzwalacze zagnieżdżone ...................................................................................................... 330Wyzwalacze rekurencyjne....................................................................................................... 331Narzucanie spójności odwoławczej za pomocą wyzwalaczy....................................................... 332
Kaskadowe usuwanie danych............................................................................................. 333Kaskadowe uaktualnianie danych....................................................................................... 335
Wyzwalacze INSTEAD OF..................................................................................................... 337Wykonywanie .................................................................................................................. 338Porównanie wyzwalaczy AFTER i INSTEAD OF ............................................................... 339Jednoczesne stosowanie wyzwalaczy AFTER i INSTEAD OF.............................................. 340Definiowanie wyzwalaczy INSTEAD OF dla widoków........................................................ 341Ograniczenia wyzwalaczy INSTEAD OF............................................................................ 344
Spis treści 13
����������0��:�,�%!��!��,����,!����!���;$����,���������������������������������#'Po co korzystać z funkcji definiowanych przez użytkownika ...................................................... 345Rodzaje funkcji ...................................................................................................................... 347
Funkcje skalarne............................................................................................................... 347Funkcje zwracające wartości tabelowe................................................................................ 349
Tworzenie funkcji i zarządzanie nimi ....................................................................................... 351Tworzenie funkcji............................................................................................................. 351Przeglądanie i modyfikowanie funkcji ................................................................................ 357Zarządzanie uprawnieniami funkcji definiowanych przez użytkowników............................... 363
Uruchamianie funkcji zdefiniowanych przez użytkownika ......................................................... 363Globalne funkcje o wartościach tabelowych.............................................................................. 363Przepisywanie procedur przechowywanych na serwerze do postaci funkcji.................................. 364
����������*��<�/��,�!,���6!���!�!4����������7���,�!��;$����,���2� �����������������������������������������������������������������������0*
Ogólny opis systemu bezpieczeństwa SQL Servera ................................................................... 367Metody uwierzytelniania ......................................................................................................... 368
Tryb uwierzytelniania Windows......................................................................................... 368Tryb mieszany.................................................................................................................. 368Wybór trybu uwierzytelniania ............................................................................................ 368Uprawnienia..................................................................................................................... 369
Mechanizm bezpieczeństwa: loginy ......................................................................................... 370Mechanizm bezpieczeństwa: nazwy użytkowników................................................................... 370
dbo.................................................................................................................................. 371guest................................................................................................................................ 371
Mechanizm bezpieczeństwa: role ............................................................................................. 371Zdefiniowane na stałe role odnoszące się do całego serwera ................................................. 372Zarządzanie rolami odnoszącymi się do całego serwera........................................................ 372Zdefiniowane na stałe role odnoszące się do baz danych ...................................................... 373Zarządzanie rolami odnoszącymi się do baz danych............................................................. 373Role definiowane przez użytkownika.................................................................................. 374Role przeznaczone dla aplikacji.......................................................................................... 375
Zarządzanie loginami.............................................................................................................. 376Zarządzanie loginami za pomocą Enterprise Managera......................................................... 376Zarządzanie loginami za pomocą poleceń języka T-SQL...................................................... 378
Zarządzanie użytkownikami .................................................................................................... 379Zarządzanie użytkownikami za pośrednictwem Enterprise Managera..................................... 379Zarządzanie użytkownikami za pośrednictwem poleceń języka T-SQL.................................. 380
Zarządzanie rolami ................................................................................................................. 380Zarządzanie rolami za pośrednictwem Enterprise Managera.................................................. 380Zarządzanie rolami za pośrednictwem poleceń języka T-SQL............................................... 381
Zarządzanie uprawnieniami ..................................................................................................... 382Zarządzanie uprawnieniami poleceniowymi ........................................................................ 382Zarządzanie uprawnieniami poleceniowymi za pośrednictwem Enterprise Managera .............. 382Zarządzanie uprawnieniami poleceniowymi w języku T-SQL............................................... 383Zarządzanie uprawnieniami na poziomie obiektów .............................................................. 384Zarządzanie uprawnieniami na poziomie obiektów w Enterprise Managerze .......................... 384Zarządzanie uprawnieniami na poziomie obiektów w języku T-SQL..................................... 385
14 Microsoft SQL Server 2000. Księga eksperta
Różne podejścia do zagadnienia uprawnień............................................................................... 386Przydzielanie uprawnień do roli public ............................................................................... 386Przydzielanie uprawnień do ról zdefiniowanych przez użytkownika ...................................... 386Przydzielanie uprawnień za pośrednictwem widoków .......................................................... 386Przydzielanie uprawnień za pośrednictwem procedur przechowywanych na serwerze............. 386Przedzielanie uprawnień za pośrednictwem ról przeznaczonych dla aplikacji ......................... 387
Właściciele obiektów.............................................................................................................. 387Zmiana właściciela obiektu................................................................................................ 387
Szyfrowanie obiektów............................................................................................................. 387
����������.��5����!,�!�������6!���!�!4����������$�����,�!���,$�����. Opracowanie planu tworzenia kopii bezpieczeństwa.................................................................. 389Po co tworzy się kopie bezpieczeństwa..................................................................................... 390Typowy proces tworzenia kopii bezpieczeństwa i odzyskiwania danych...................................... 391Rodzaje kopii bezpieczeństwa ................................................................................................. 392
Pełne kopie baz danych..................................................................................................... 392Różnicowe kopie baz danych............................................................................................. 393Kopie plików i grup plików ............................................................................................... 393Kopie dziennika transakcji................................................................................................. 394Tryby odzyskiwania danych............................................................................................... 394Tryb pełny ....................................................................................................................... 394Tryb logowany ................................................................................................................. 395Tryb prosty ...................................................................................................................... 395
Wybór trybu odzyskiwania danych .......................................................................................... 396Urządzenia do wykonywania kopii........................................................................................... 396
Urządzenia taśmowe ......................................................................................................... 396Urządzenia dyskowe ......................................................................................................... 397Taśma czy dysk................................................................................................................ 397Urządzenia dostępne w sieci na określonych kanałach.......................................................... 398Wykonywanie kopii na kilku urządzeniach.......................................................................... 398
Nośniki.................................................................................................................................. 398Wprowadzanie informacji o nowych urządzeniachdo tworzenia kopii za pomocą poleceń języka T-SQL................................................................ 399Wprowadzanie informacji o nowych urządzeniachdo tworzenia kopii za pomocą Enterprise Managera................................................................... 402Tworzenie kopii bazy danych .................................................................................................. 402
Tworzenie kopii baz danych za pomocą poleceń języka T-SQL ............................................ 403Tworzenie kopii baz danych za pomocą Enterprise Managera ............................................... 405
Tworzenie kopii dziennika transakcji........................................................................................ 408Tworzenie kopii dziennika transakcji za pomocą poleceń języka T-SQL................................ 408NO_LOG oraz TRUNCATE_ONLY.................................................................................. 408NO_TRUNCATE............................................................................................................. 409NORECOVERY | STANDBY= nazwa_pliku_undo............................................................. 409Przykłady użycia polecenia BACKUP LOG........................................................................ 410Tworzenie kopii dziennika transakcji za pomocą Enterprise Managera................................... 410Tworzenie kopii bezpieczeństwa baz systemowych.............................................................. 412
Odtwarzanie zawartości bazy danych z kopii bezpieczeństwa..................................................... 412Uzyskiwanie informacji na temat posiadanych kopii bezpieczeństwa..................................... 413Odtwarzanie zawartości baz danych za pomocą poleceń języka T-SQL ................................. 413Odtwarzanie zawartości dziennika transakcji za pomocą poleceń języka T-SQL..................... 415
Spis treści 15
Przykłady odzyskiwania danych za pomocą poleceń języka T-SQL ............................................ 416Odtwarzanie danych z kopii bezpieczeństwa za pomocą Enterprise Managera ........................ 417
Umieszczanie danych odzyskanych z kopii bezpieczeństwa w innej bazie danych........................ 419Odzyskiwanie plików i grup plików ......................................................................................... 420Odtwarzanie stanu bazy z określonej chwili .............................................................................. 420Częściowe odtwarzanie bazy danych z kopii bezpieczeństwa...................................................... 421Odtwarzanie systemowych baz danych..................................................................................... 421Inne zagadnienia dotyczące kopii bezpieczeństwa ..................................................................... 422
Częstotliwość wykonywania kopii baz danych .................................................................... 422Korzystanie z serwera standby........................................................................................... 423Uwagi dotyczące bardzo dużych baz danych....................................................................... 424
���������� ��1�!-�/,�%��6�����,$��������������������������������������������������������#�'Co wymaga pielęgnacji ........................................................................................................... 425Kreator planu konserwacji bazy danych (DBMPW)................................................................... 425
Wybór baz danych............................................................................................................ 426Aktualizacja informacji optymalizujących dostęp do danych i ich przechowywania ................ 426Kontrola integralności bazy danych.................................................................................... 427Określenie planu tworzenia kopii zapasowych..................................................................... 428Wybór katalogu dyskowego dla kopii bazy danych.............................................................. 428Określenie planu tworzenia kopii transakcji......................................................................... 428Wybór katalogu dyskowego dla kopii transakcji .................................................................. 429Generowanie raportów ...................................................................................................... 429Historia konserwacji bazy danych ...................................................................................... 430Zakończenie pracy kreatora ............................................................................................... 430
Ustalanie własnych zadań pielęgnacyjnych ............................................................................... 431Polecenia konsoli bazy danych (DBCC) ................................................................................... 432
Wykrywanie i rozwiązywanie problemów związanych z uszkodzeniem baz danych................ 433Użycie DBCC do włączenia znaczników śledzenia .............................................................. 434
Użycie SQLMAINT.exe do pielęgnacji bazy danych................................................................. 434
����������&���� ��!�"!��=�����,������������2��,�! �����������������������������#�'SQL Agent ............................................................................................................................ 435Konfigurowanie SQL Agenta .................................................................................................. 436
Konto początkowe............................................................................................................ 436Profil pocztowy ................................................................................................................ 436Agent jako użytkownik...................................................................................................... 437Konto proxy SQL Agenta .................................................................................................. 437
Przeglądanie dzienników błędów agenta ................................................................................... 437Operatorzy............................................................................................................................. 438Zadania ................................................................................................................................. 439
Definiowanie właściwości zadań........................................................................................ 439Definiowanie elementów zadań.......................................................................................... 440Tworzenie terminarza zadań .............................................................................................. 442Określenie sposobów powiadamiania.................................................................................. 442Przeglądanie historii zadań ................................................................................................ 443
Ostrzeżenia ............................................................................................................................ 443Definiowanie właściwości ostrzeżeń................................................................................... 443Definiowanie operatorów i odpowiedzi na ostrzeżenia.......................................................... 444
16 Microsoft SQL Server 2000. Księga eksperta
Skrypty zadań i ostrzeżeń........................................................................................................ 445Zarządzanie zadaniami wielu serwerów.................................................................................... 446
Utworzenie SQL Agenta dla serwera głównego ................................................................... 446Lista serwerów docelowych............................................................................................... 446Zadania dla wielu serwerów............................................................................................... 446
Przesyłanie informacji o zdarzeniach........................................................................................ 446
�������������<���7���,�!��!��!��2�������;�,$2�������-,$2� ����������������## Zdalne serwery....................................................................................................................... 449
Konfigurowanie zdalnego serwera...................................................................................... 450Serwery sprzężone ................................................................................................................. 454
Rzeczywiście sprzężone .................................................................................................... 454Zapytania rozproszone ...................................................................................................... 455Transakcje rozproszone..................................................................................................... 455
Dodawanie, usuwanie i konfigurowanie serwerów sprzężonych.................................................. 456sp_addlinkedserver ........................................................................................................... 456sp_linkedserver................................................................................................................. 458sp_dropserver................................................................................................................... 459sp_serveroption ................................................................................................................ 459
Mapowanie lokalnych logowań do logowań na serwerach sprzężonych....................................... 461sp_addlinkedserverlogin .................................................................................................... 461sp_droplinkedserverlogin................................................................................................... 462sp_helplinkedsrvlogin ....................................................................................................... 463
Uzyskiwanie informacji o serwerach sprzężonych..................................................................... 464Wykonanie procedury przechowywanej na serwerze sprzężonym............................................... 465Konfigurowanie serwerów przyłączonych przez Enterprise Manager........................................... 465
�������������+2�������!���������,$��� ��!�"!�����$����$���,�!2����/��2��2����!/���������,���>?@1A �����������������#0
Program masowego kopiowania (BCP) .................................................................................... 475Podstawy eksportu i importu danych .................................................................................. 477Typy danych pliku ............................................................................................................ 480Plik formatu danych.......................................................................................................... 480Używanie widoków........................................................................................................... 487Ładowanie danych binarnych............................................................................................. 488
Operacje rejestrowane i nierejestrowane................................................................................... 489Pakiety ............................................................................................................................ 489Ładowanie współbieżne..................................................................................................... 490Wskazówki sposobu kopiowania ........................................................................................ 491
Instrukcja T-SQL BULK INSERT........................................................................................... 493Zwiększenie wydajności kopiowania........................................................................................ 494Dodatki do programu masowego kopiowania ............................................................................ 495
�������������+2�������,�!���!���������,�!���,$��� ��!�"!�������2�7�����/����,����2�%����,$�>B5�A������������������������������������������#
Koncepcja i architektura usług transformacji danych ................................................................. 502Narzędzia DTS................................................................................................................. 504
Narzędzia wspomagające uruchamianie pakietów...................................................................... 506Uruchamianie i wykorzystanie kreatora DTS............................................................................ 509
Spis treści 17
Projektowanie pakietów DTS (DTS Designer) .......................................................................... 513Pompa danych.................................................................................................................. 517Zapytania zależne od danych (DDQs)................................................................................. 518
Nieco więcej o metadanych..................................................................................................... 518
����������#����2�,�������,�!�6��������;$2�6���2����,$��� ��!�"!�������������������������������������������������������������������������'�
Czy moja baza to bardzo duża baza danych (BDBD)................................................................. 519Metody konserwacji BDBD .................................................................................................... 520
Tworzenie kopii zapasowej i odtwarzanie bazy danych ........................................................ 520Prowadzenie kontroli integralności ..................................................................................... 520Aktualizacja statystyk ....................................................................................................... 521Odbudowywanie indeksów ................................................................................................ 521Usuwanie zbędnych danych i archiwizacja .......................................................................... 522
Partycjonowanie danych ......................................................................................................... 522Partycjonowanie pionowe.................................................................................................. 522Partycjonowanie poziome.................................................................................................. 523Użycie rozproszonych widoków partycjonowanych ............................................................. 523
����������'���!�-���%����,$������������������������������������������������������������������'�'Czym jest replikacja ............................................................................................................... 525Publikator, dystrybutor i subskrybent ....................................................................................... 527
Publikacje i artykuły ......................................................................................................... 528Filtrowanie artykułów ....................................................................................................... 528
Scenariusze replikacji ............................................................................................................. 531Centralny publikator.......................................................................................................... 531Centralny publikator ze zdalnym dystrybutorem .................................................................. 532Publikujący subskrybent.................................................................................................... 533Centralny subskrybent....................................................................................................... 534Wiele publikatorów lub wiele subskrybentów...................................................................... 534Modyfikujący subskrybent................................................................................................. 535Subskrypcje ..................................................................................................................... 536Subskrypcja anonimowa (żądana) ...................................................................................... 537Dystrybucyjna baza danych............................................................................................... 537
Agenci replikacji .................................................................................................................... 538Agent migawki ................................................................................................................. 539Agent odczytu dziennika transakcji (Log Reader Agent)....................................................... 541Agent dystrybucji (Distribution Agent) ............................................................................... 542Agent scalający (Merge Agent) .......................................................................................... 542Pozostałe agenty replikacji (Miscellaneous Agents) ............................................................. 543
Planowanie replikacji danych SQL Servera............................................................................... 544Autonomia, synchronizowanie i opóźnienie danych ............................................................. 544Metody dystrybucji danych................................................................................................ 545
Typy replikacji w SQL Serverze .............................................................................................. 546Replikacja migawkowa...................................................................................................... 546Replikacja transakcyjna..................................................................................................... 547Replikacja scalająca .......................................................................................................... 548
Wymagania użytkowników a projektowanie replikacji............................................................... 549Charakterystyki danych..................................................................................................... 550
18 Microsoft SQL Server 2000. Księga eksperta
Konfigurowanie replikacji ....................................................................................................... 551Włączenie publikowania.................................................................................................... 552Tworzenie publikacji......................................................................................................... 554Tworzenie subskrypcji ...................................................................................................... 555
Skrypty replikacji ................................................................................................................... 558Monitorowanie replikacji ........................................................................................................ 560
Polecenia SQL.................................................................................................................. 560SQL Enterprise Manager ................................................................................................... 562Rozwiązywanie problemów związanych z błędami replikacji................................................ 563Monitor wydajności .......................................................................................................... 566Replikacja w środowiskach heterogenicznych...................................................................... 566Replikacja do subskrybentów internetowych ....................................................................... 567Konfiguracja publikatora lub dystrybutora do nasłuchu na TCP/IP........................................ 567Konfiguracja publikacji do użycia FTP............................................................................... 567Konfiguracja subskrypcji do wykorzystania FTP................................................................. 567Tworzenie kopii zapasowej i odzyskiwanie konfiguracji replikacyjnej ................................... 568Kilka uwag o wydajności................................................................................................... 569Przesyłanie dziennika transakcji jako alternatywa replikacji danych ...................................... 569
����������0��B!��,����,�!�)������������ ��!�"!�������,�!,%��,�������'*�Określenie środowisk SQL Servera .......................................................................................... 573
Środowisko tworzenia oprogramowania.............................................................................. 574Środowisko testowania aplikacji......................................................................................... 578Środowisko eksploatacyjne................................................................................................ 580Wykorzystanie kontroli kodu źródłowego ........................................................................... 581
Konwencje używania nazw w SQL Serverze ............................................................................ 581Nazwy SQL Servera ......................................................................................................... 582Przykład konwencji nazwania ............................................................................................ 591Standardy nazw systemu operacyjnego ............................................................................... 591
�������(�)��%��*+��� ������������������������������������������������������������������������ ,�,
����������*���$����$���,�!�%��$���5C�� ��������������������������������������������������' *T-SQL i ANSI i ISO SQL ....................................................................................................... 597Co nowego w T-SQL.............................................................................................................. 598
Nowe typy danych............................................................................................................ 599Funkcje definiowane przez użytkowników .......................................................................... 603Widoki indeksowane......................................................................................................... 604Nowości wprowadzone w SQL Server 7.0 .......................................................................... 604
SELECT, INSERT, UPDATE i DELETE................................................................................. 605Instrukcja SELECT........................................................................................................... 606GRUP BY i HAVING....................................................................................................... 609CUBE, ROLLUP, GROUPING ......................................................................................... 610Łączenie tabel................................................................................................................... 614Podzapytania.................................................................................................................... 617Dodawanie wierszy za pomocą INSERT............................................................................. 620Modyfikacja wierszy tabeli — UPDATE............................................................................ 621Usuwanie wierszy za pomocą DELETE.............................................................................. 622
Spis treści 19
Funkcje SQL Servera ............................................................................................................. 622Funkcje łańcuchowe (String Functions)............................................................................... 623Funkcje matematyczne...................................................................................................... 623Funkcje daty .................................................................................................................... 624Funkcje metadanych ......................................................................................................... 626Funkcje systemowe........................................................................................................... 626Funkcje dostępu ............................................................................................................... 629Funkcje Text i Image......................................................................................................... 629Funkcje zestawu rekordów ................................................................................................ 630Funkcje bez argumentów................................................................................................... 632Funkcje agregujące ........................................................................................................... 633
Konstrukcje programowe ........................................................................................................ 639Instrukcja IF..................................................................................................................... 639WHILE, BREAK i CONTINUE ........................................................................................ 639Wyrażenie CASE.............................................................................................................. 640RETURN......................................................................................................................... 641GOTO............................................................................................................................. 642WAITFOR....................................................................................................................... 642EXECUTE....................................................................................................................... 642Wsady (Batches) .............................................................................................................. 643Komentarze...................................................................................................................... 644Zmienne lokalne ............................................................................................................... 645Funkcje nazywane zmiennymi globalnymi .......................................................................... 646Zwracanie wiadomości z T-SQL........................................................................................ 650Zarządzanie komunikatami o błędach SQL Servera.............................................................. 653Opcje SET ....................................................................................................................... 654
Kursory ................................................................................................................................. 664Przykłady kursorów i nieco składni .................................................................................... 665Używanie zmiennych CURSOR......................................................................................... 672Uzyskiwanie informacji o kursorach................................................................................... 674Interfejs programowania kursora ........................................................................................ 678Kiedy należy używać kursorów.......................................................................................... 680
����������.��<���7���,�!����,���%�2�������!,,������,���%�������������������0.�Czym jest transakcja............................................................................................................... 683Jak SQL Server obsługuje transakcje........................................................................................ 684Definiowanie transakcji........................................................................................................... 685
Transakcje zatwierdzane automatycznie (AutoCommit)........................................................ 685Transakcje definiowane jawnie przez użytkownika .............................................................. 686Transakcje niejawne (Implicit Transactions)........................................................................ 690Transakcje niejawne czy jawne.......................................................................................... 692
Dziennik transakcji i proces odzyskiwania ................................................................................ 692Proces punktu kontrolnego (Checkpoint)............................................................................. 693Proces odzyskiwania ......................................................................................................... 696
Transakcje i wsady................................................................................................................. 698Transakcje i procedury zapamiętane......................................................................................... 700Transakcje i wyzwalacze......................................................................................................... 704
Używanie punktów kontrolnych w wyzwalaczach................................................................ 706Transakcje i blokady............................................................................................................... 708Kodowanie efektywnych transakcji .......................................................................................... 709
20 Microsoft SQL Server 2000. Księga eksperta
Transakcje o długim czasie wykonywania................................................................................. 710Połączenia związane ............................................................................................................... 712
Tworzenie połączeń związanych ........................................................................................ 712Wiązanie wielu aplikacji.................................................................................................... 713
Transakcje rozproszone .......................................................................................................... 714
���������� ��1��!������,�!����,���%�����������,$������������������������������*�'Przetwarzanie transakcji rozproszonych ................................................................................... 715Zapytania rozproszone............................................................................................................ 717Serwery sprzężone ................................................................................................................. 719
Konfiguracja serwera sprzężonego do zdalnego źródła danych.............................................. 719Polecenia T-SQL dla serwerów sprzężonych....................................................................... 723
Transakcje rozproszone .......................................................................................................... 724Architektura MS DTC ............................................................................................................ 724
Dwufazowy protokół zatwierdzania zmian .......................................................................... 725
������(���������������������� �������� %#������ ���������������� -��
����������&���,����!��� ��!�"!�� ���������������������������������������������������������������*�'Zarządzanie pamięcią w SQL Serverze..................................................................................... 735
Zarządzanie buforem i pule pamięci ................................................................................... 736Kontroler bufora ............................................................................................................... 736Dostęp do buforów pamięci ............................................................................................... 736Proces punktu kontrolnego................................................................................................. 737Proces lazywritera............................................................................................................. 738Ciągłe utrzymywanie stron w pamięci................................................................................. 739Wsparcie dla dużych pamięci ............................................................................................. 740Kontroler dziennika........................................................................................................... 741
Zarządzanie procesami w SQL Serverze................................................................................... 742Wątki SQL Servera........................................................................................................... 742
Dyskowe operacje wejścia-wyjścia w SQL Serverze ................................................................. 743Asynchroniczne operacje wejścia-wyjścia ........................................................................... 743Operacje wejścia-wyjścia typu rozrzuć i zbieraj ................................................................... 744Czytanie z wyprzedzeniem ................................................................................................ 744Skanowanie karuzeli ......................................................................................................... 745
Struktury danych w SQL Serverze ........................................................................................... 745Pliki baz danych i grupy plików............................................................................................... 746
Podstawowe pliki danych .................................................................................................. 747Dodatkowe pliki danych.................................................................................................... 748Plik dziennika transakcji.................................................................................................... 749Wykorzystanie grup plików ............................................................................................... 755Zarządzanie dyskami......................................................................................................... 757
Strony bazy danych................................................................................................................ 758Typy stron ....................................................................................................................... 758Kontrola zawartości strony ................................................................................................ 758Strony danych .................................................................................................................. 762Strony indeksowe ............................................................................................................. 775Alokacja przestrzeni.......................................................................................................... 778Strony różnicowego mapowania zmian ............................................................................... 783Strony masowego mapowania zmian .................................................................................. 783
Spis treści 21
Tabele ................................................................................................................................... 784Ograniczenie rozmiarów wierszy i kolumn.......................................................................... 784Tabele o strukturze stosu (nieuporządkowane)..................................................................... 784Tabele zgrupowane........................................................................................................... 785
Indeksy ................................................................................................................................. 786Indeksy zgrupowane ......................................................................................................... 787Indeksy niezgrupowane ..................................................................................................... 798Pielęgnacja indeksów w SQL Serverze ............................................................................... 809
Modyfikacje danych a wydajność ............................................................................................ 815Wprowadzanie danych ...................................................................................................... 815Usuwanie wierszy ............................................................................................................. 818Modyfikacje wierszy ......................................................................................................... 821
�������������+,�!��$����$��%,�)9���������������������������������������������������������������.�'Kryteria wykorzystania indeksów ............................................................................................ 826Wybór indeksów .................................................................................................................... 827Określanie użyteczności indeksu.............................................................................................. 828Statystyki indeksów................................................................................................................ 830
Histogram statystyk .......................................................................................................... 832Gęstość indeksu................................................................................................................ 834Wykorzystanie statystyk indeksów do określania liczby wierszy ........................................... 835Tworzenie i utrzymywanie statystyk indeksów .................................................................... 836
Zasady projektowania indeksów .............................................................................................. 842Używanie indeksu zgrupowanego....................................................................................... 843Używanie indeksu niezgrupowanego .................................................................................. 845Indeksy zawierający odpowiedź ......................................................................................... 847Indeksy złożone czy wiele indeksów................................................................................... 849
Widoki indeksowane............................................................................................................... 849Zasady tworzenia widoków indeksowanych ........................................................................ 850
Indeksy na kolumnach obliczanych .......................................................................................... 850Kreator dostrajania indeksów................................................................................................... 851
Wykorzystanie programu itwiz........................................................................................... 858Wybór indeksów: zapytania czy zwiększenie wydajności ........................................................... 858
�������������<����$����$2�-���%�����$��4����������������������������������������������.0�Czym jest optymalizator zapytań ............................................................................................. 864Kompilacja i optymalizacja zapytania....................................................................................... 864
Kompilacja poleceń DML.................................................................................................. 865Kroki optymalizacji........................................................................................................... 865
Krok 1. Analiza zapytania ....................................................................................................... 866Identyfikacja argumentów poszukiwania............................................................................. 866Identyfikacja klauzul OR................................................................................................... 868Identyfikowanie klauzul JOIN............................................................................................ 869Przetwarzanie podzapytań ................................................................................................. 870
Krok 2. Wybór indeksów ........................................................................................................ 871Obliczanie selektywności SARG i złączeń .......................................................................... 871Szacowanie kosztu indeksu................................................................................................ 872Wykorzystanie wielu indeksów.......................................................................................... 878Optymalizacja za pomocą widoków indeksowanych ............................................................ 885
22 Microsoft SQL Server 2000. Księga eksperta
Krok 3. Wybór złączeń ........................................................................................................... 885Strategie przetwarzania złączeń.......................................................................................... 887
Krok 4. Wybór planu wykonania ............................................................................................. 891Wielokrotne wykorzystanie planów wykonania zapytań............................................................. 893
Wiele planów w buforze pamięci........................................................................................ 893Inne strategie przetwarzania zapytań ........................................................................................ 896
Predykat przechodniości .................................................................................................... 896Optymalizacja GROUP BY............................................................................................... 897Zapytania z DISTINCT..................................................................................................... 897Zapytania z UNION.......................................................................................................... 898
Równoległe przetwarzanie zapytań .......................................................................................... 898Hurtownie danych i strategie zapytań w dużych bazach danych.................................................. 902
Iloczyn kartezjański tabel wymiarowych............................................................................. 903Redukcja niepełnego złączenia........................................................................................... 903
Najczęstsze problemy optymalizowania zapytań ....................................................................... 903Nieaktualne lub niedostępne statystyki................................................................................ 904Źle zaprojektowane indeksy............................................................................................... 904Problemy z argumentem poszukiwania ............................................................................... 905Wyzwalacze ..................................................................................................................... 907
Zarządzanie optymalizatorem .................................................................................................. 907Wskazówki optymalizatora ................................................................................................ 908Ograniczanie wykonywania planu zapytania za pomocą zarządcy zapytań ............................. 912
��������������,�-�������$��4����������������������������������������������������������������������� �'Wyświetlanie planów wykonania przy użyciu analizatora zapytań .............................................. 916
Wskazówki analizatora...................................................................................................... 918Ikony operatorów logicznych i fizycznych .......................................................................... 920Analizowanie procedur składowanych ................................................................................ 926
Ślady serwera w analizatorze zapytań....................................................................................... 928Statystyki klienta w analizatorze zapytań .................................................................................. 929SHOWPLAN_ALL oraz SHOWPLAN_TEXT......................................................................... 929Statystyki............................................................................................................................... 932
statistics profile................................................................................................................. 932statistics io ....................................................................................................................... 933statistics time.................................................................................................................... 936Wykorzystywanie datediff() do pomiaru czasu wykonania.................................................... 938
Analiza zapytań za pomocą SQL Profilera ................................................................................ 938
����������#���� ��!�"!��1����-!��������������������������������������������������������������������� #�Architektura SQL Profilera...................................................................................................... 941Tworzenie śladów .................................................................................................................. 943
Właściwości — zakładka General....................................................................................... 944Właściwości — zakładka Events ........................................................................................ 945Właściwości — zakładka Data Columns ............................................................................. 950Właściwości — zakładka Filters......................................................................................... 952
Zapisywanie i eksportowanie śladów........................................................................................ 953Analizowanie śladów przy użyciu kreatora dostrajania indeksów .......................................... 954
Odtwarzanie danych śladu....................................................................................................... 955Tworzenie śladów po stronie serwera ....................................................................................... 956
Spis treści 23
Scenariusze SQL Profilera....................................................................................................... 957Powolne procedury składowane ......................................................................................... 957Kontrola zmian fizycznych ................................................................................................ 958Określanie zapytań utworzonych ad hoc ............................................................................. 958Określanie wąskiego gardła wydajności .............................................................................. 959Statystyki uaktualniane w sposób automatyczny.................................................................. 959Śledzenie postępu wykonywania programu ......................................................................... 960
����������'���$����$��$��,�!��!6�//!����� ���,�-�������!����$��4�������������������������������������������������������������������������������� 0�
Pierwszy debugger T-SQL ...................................................................................................... 964Wykorzystywanie debuggera T-SQL w analizatorze zapytań...................................................... 965
Powszechne problemy podczas testowania .......................................................................... 965Konfiguracja DCOM......................................................................................................... 967
Ograniczenia debuggera .......................................................................................................... 968Krokowe wykonywanie procedury składowanej ........................................................................ 968
Testowanie wyzwalaczy i funkcji użytkownika.................................................................... 968
����������0����,�������,�!��$��%,�)���� ��!�"!�������������������������������� 0 Podejście do monitorowania wydajności................................................................................... 970Monitor wydajności ................................................................................................................ 971
Widoki monitora wydajności ............................................................................................. 972Monitorowanie wartości .................................................................................................... 972
Liczniki wydajności w systemie Windows................................................................................ 974Monitorowanie interfejsu sieciowego.................................................................................. 974Monitorowanie procesorów ............................................................................................... 977Monitorowanie pamięci ..................................................................................................... 978Monitorowanie systemu dyskowego ................................................................................... 980
Liczniki wydajności SQL Servera ............................................................................................ 983Obiekt MSSQL: Cache Manager ........................................................................................ 984Monitorowanie obciążenia dysku przez SQL Server ............................................................ 984Blokady ........................................................................................................................... 985Użytkownicy .................................................................................................................... 985Pamięć podręczna procedur ............................................................................................... 985Liczniki definiowane przez użytkownika............................................................................. 986
Obsługa SNMP...................................................................................................................... 986Badanie wydajności za pomocą DBCC..................................................................................... 987
SQLPERF........................................................................................................................ 988PERFMON...................................................................................................................... 989SHOWCONTIG............................................................................................................... 989PROCCACHE.................................................................................................................. 989INPUTBUFFER i OUTPUTBUFFER ................................................................................ 990
Inne czynniki wpływające na wydajność SQL Servera............................................................... 990
����������*��?-�����,�!����$��%,�)9 �������������������������������������������������������� �Konieczność używania blokad................................................................................................. 991Poziomy izolowania transakcji w SQL Serverze........................................................................ 992
Read Uncommitted ........................................................................................................... 993Read Committed............................................................................................................... 994Repeatable Read............................................................................................................... 994Serializable ...................................................................................................................... 995
24 Microsoft SQL Server 2000. Księga eksperta
Zarządca blokad..................................................................................................................... 996Badanie stanu blokad w SQL Serverze ..................................................................................... 997
Korzystanie z procedury składowanej sp_lock..................................................................... 997Przeglądanie tabeli syslockinfo .......................................................................................... 999Oglądanie stanu blokad w Enterprise Managerze ................................................................1000Oglądanie stanu blokad w SQL Profilerze ..........................................................................1002Oglądanie aktualnych blokad w monitorze wydajności ........................................................1005
Rodzaje blokad w SQL Serverze ............................................................................................1006Blokady dzielone .............................................................................................................1007Blokady do aktualizacji ....................................................................................................1007Blokady na wyłączność ....................................................................................................1008Blokady intencyjne ..........................................................................................................1009Blokady struktury ............................................................................................................1010Blokady hurtowej aktualizacji ...........................................................................................1010Rodzaje blokad i tabela syslockinfo ...................................................................................1011
Ziarnistość blokad SQL Servera..............................................................................................1014Serializacja i blokowanie zakresu kluczy............................................................................1016Wykorzystywanie blokad aplikacji ....................................................................................1018Blokowanie indeksów ......................................................................................................1020Blokowanie na poziomie wierszy a blokowanie na poziomie stron .......................................1021Zmiana rodzaju blokady ...................................................................................................1022Ustawienie konfiguracji blokad — opcja locks ...................................................................1023
Zgodność blokad ...................................................................................................................1024Rywalizacja o blokadę i zakleszczenia.....................................................................................1024
Wykrywanie rywalizacji o blokady....................................................................................1025Ustawianie czasu oczekiwania na blokadę..........................................................................1028Ograniczanie rywalizacji o blokadę ...................................................................................1029Zakleszczenia ..................................................................................................................1030Obsługa i kontrolowanie zakleszczeń.................................................................................1033
Wskazówki dotyczące blokad na poziomie tabel ......................................................................1038Wskazówki dotyczące transakcyjnego poziomu izolowania tabel .........................................1039Wskazówki dotyczące ziarnistości blokad ..........................................................................1040Wskazówki dotyczące rodzaju blokady..............................................................................1041
Blokowanie optymistyczne.....................................................................................................1041Blokowanie optymistyczne z użyciem danych typu Timestamp............................................1042
����������.��1��%!���6��$���,$����$��%,�)9��������������������������������������&#'Podstawowe zasady projektowania .........................................................................................1045Logiczne projektowanie bazy danych......................................................................................1046
Warunki normalizacji .......................................................................................................1047Postaci normalne .............................................................................................................1047
Denormalizacja bazy danych..................................................................................................1049Wskazówki denormalizacji ...............................................................................................1049Podstawowe techniki denormalizacji .................................................................................1050
Indeksy a wydajność .............................................................................................................1054Badanie przydatności indeksów.........................................................................................1055Rozkład danych...............................................................................................................1057
Wskazówki projektowania indeksów.......................................................................................1062Wskazania używania indeksów klastrowych.......................................................................1063Wskazówki projektowania indeksów zwykłych (nieklastrowych) .........................................1063
Spis treści 25
Pokrycie indeksem...........................................................................................................1064Indeksy złożone a wiele indeksów.....................................................................................1064
Pielęgnacja indeksów w SQL Serverze....................................................................................1065Używanie DBCC SHOWCONTIG....................................................................................1066Fragmentacja obszarów....................................................................................................1068Naprawianie tabel z dużą fragmentacją ..............................................................................1069Ustawianie współczynnika wypełnienia .............................................................................1071Aktualizacja współczynnika wypełnienia ...........................................................................1072
Aktualizacja a wydajność.......................................................................................................1072Aktualizacja odłożona ......................................................................................................1072Aktualizacja w miejscu.....................................................................................................1072
Grupy plików bazy danych a wydajność..................................................................................1073Technologia RAID ................................................................................................................1074
RAID poziom 0 ...............................................................................................................1074RAID poziom 1 ...............................................................................................................1075RAID poziom 10 .............................................................................................................1076RAID poziom 5 ...............................................................................................................1076
���������� ��D�,��/�����,�!E�����%!,�!�����$2�-�����,�!�������!4��� ��!�"!���������������������������������������������������&*
Architektura instancji SQL Servera .........................................................................................1079Zmienne konfiguracyjne.........................................................................................................1080Zmiana błędnego ustawienia zmiennej.....................................................................................1086Ustawianie zmiennych konfiguracyjnych przy użyciu SQL Enterprise Manager ..........................1087Przestarzałe zmienne konfiguracyjne.......................................................................................1087Opcje konfiguracyjne a wydajność..........................................................................................1088
Affinity Mask..................................................................................................................1088Allow Update ..................................................................................................................1089AWE Enabled..................................................................................................................1091Cost Threshold for Parallelism ..........................................................................................1091Cursor Threshold .............................................................................................................1092Default language..............................................................................................................1093Fill Factor .......................................................................................................................1093Index Create Memory (kB)...............................................................................................1094Lightweight Pooling.........................................................................................................1094Locks .............................................................................................................................1095Max Degree of Parallelism................................................................................................1095Max Server Memory oraz Min Server Memory ..................................................................1096Max Text Repl Size..........................................................................................................1097Max Worker Threads .......................................................................................................1098Min Memory Per Query ...................................................................................................1099Nested Triggers ...............................................................................................................1100Network Packet Size ........................................................................................................1100Open Objects ..................................................................................................................1101Priority Boost ..................................................................................................................1101Query Governor Cost Limit ..............................................................................................1101Query Wait .....................................................................................................................1102Recovery Interval ............................................................................................................1103Remote Proc Trans ..........................................................................................................1103Scan for Startup Procs......................................................................................................1104
26 Microsoft SQL Server 2000. Księga eksperta
Set Working Set Size........................................................................................................1105Show Advanced Options ..................................................................................................1106User Connections.............................................................................................................1106User Options ...................................................................................................................1106
������(�����'�����������������������.����/��������� ���������� !!0�
���������#&���� ����- ��������������������������������������������������������������������������������������Konfiguracja klienta poczty oraz profilu pocztowego................................................................1111
Jak skonfigurować SQL Mail do współpracy z serwerem Exchange .....................................1113Jak skonfigurować SQL Mail do współpracy z internetowym serwerem poczty .....................1114Jak skonfigurować SQL Mail do współpracy z serwerem poczty Lotus Notes .......................1115Co dalej?.........................................................................................................................1117
Konfiguracja programu SQL Mail...........................................................................................1117Automatyczne uruchamianie programu SQL Mail...............................................................1118
Konfiguracja programu SQL Agent Mail .................................................................................1119Konfiguracja powiadomień operatorów w programie SQL Server Agent...............................1119Konfiguracja powiadomień dla zdarzeń programu SQL Server Agent ...................................1122Konfiguracja powiadomień dla zadań programu SQL Server Agent......................................1124
Procedury składowane programu SQL Mail .............................................................................1125xp_startmail ....................................................................................................................1125xp_stopmail.....................................................................................................................1126xp_sendmail ....................................................................................................................1126xp_findnextmsg ...............................................................................................................1129xp_readmail ....................................................................................................................1129xp_deletemail ..................................................................................................................1132sp_processmail ................................................................................................................1132
���������#���F;$��,�!�%��$���G� ����� ��!�"!��!��&&&��������������������������'Tworzenie katalogu wirtualnego na potrzeby SQL Server 2000.................................................1135Poznawanie rozszerzalnego języka znaczników (Extensible Markup Language — XML) ............1137Pobieranie danych za pomocą klauzuli FOR XML ...................................................................1140Wykorzystanie klauzuli FOR XML RAW................................................................................1140Wykorzystanie klauzuli FOR XML AUTO..............................................................................1142Wykorzystanie klauzuli FOR XML AUTO, ELEMENTS.........................................................1143Wykorzystanie klauzuli FOR XML EXPLICIT........................................................................1143Odczytywanie schematów danych XML..................................................................................1147Pobieranie danych binarnych w postaci dokumentu XML .........................................................1149Podstawy języka XPath .........................................................................................................1150Wykorzystywanie XML w procedurach składowanych.............................................................1151Wykorzystanie OPENXML do odczytu dokumentu XML.........................................................1153Używanie zapytań w URL .....................................................................................................1156Stosowanie szablonów XML ..................................................................................................1158Szablony uaktualniające .........................................................................................................1160
���������#���F���/���,�-��$���,$����� ��!�"!��! ���������������������������������0�Co oznaczają usługi analizy danych i OLAP............................................................................1163Podstawy środowiska usług analizy danych .............................................................................1165
OLAP a OLTP ................................................................................................................1169MOLAP..........................................................................................................................1170
Spis treści 27
ROLAP ..........................................................................................................................1170HOLAP ..........................................................................................................................1170
Metodologia projektowania analitycznego ...............................................................................1171Uproszczona metodologia analityczna ...............................................................................1172
Przykład wymagań OLAP......................................................................................................1174Tworzenie kostki OLAP ........................................................................................................1175
Program Analysis Manager...............................................................................................1175Tworzenie bazy danych OLAP...............................................................................................1176
Dodawanie źródła danych.................................................................................................1177Dodawanie wymiarów......................................................................................................1177Tworzenie kostki .............................................................................................................1184Miary..............................................................................................................................1185Elementy obliczeniowe.....................................................................................................1188Projektowanie sposobu przechowywania danych................................................................1189Przetwarzanie kostki ........................................................................................................1191Przeglądanie kostki danych za pomocą aplikacji Analysis Manager ......................................1192Analiza zapytań i optymalizacja ........................................................................................1194Podział kostki ..................................................................................................................1195Tworzenie kostki wirtualnej..............................................................................................1195
Praca z relacyjną bazą danych ................................................................................................1196Ograniczenia relacyjnych baz danych ................................................................................1196Dostarczanie danych do użytkowników .............................................................................1197Wyrażenia wielowymiarowe.............................................................................................1197Wielowymiarowe obiekty danych ActiveX.........................................................................1199
Pliki na poziomie systemu operacyjnego..................................................................................1199Bezpieczeństwo podczas analizy danych............................................................................1199Modele pobierania danych................................................................................................1200Usługi przekształcania danych ..........................................................................................1204Repozytorium metadanych ...............................................................................................1205
���������#������������5��,�����,��!�"!� ��������������������������������������������������&*MTS w skrócie......................................................................................................................1207
Dlaczego należy używać serwera transakcji........................................................................1208Podstawy przetwarzania za pomocą MTS ..........................................................................1210Konfiguracja serwera transakcji ........................................................................................1211Eksplorator MTS.............................................................................................................1211Poznawanie hierarchii MTS..............................................................................................1211
Tworzenie komponentu MTS.................................................................................................1212ObjectContext .................................................................................................................1213Metody realizujące zadania bazy danych............................................................................1214
Instalowanie komponentu MTS..............................................................................................1216Tworzenie pakietu ...........................................................................................................1216Ustawianie właściwości komponentu.................................................................................1218
Konfiguracja zabezpieczeń.....................................................................................................1219Opcje bezpieczeństwa pakietu...........................................................................................1220Tworzenie ról ..................................................................................................................1220Ustawianie członkostwa roli dla komponentu .....................................................................1221Jakie jest powiązanie zabezpieczeń MTS i MS-SQL Servera ...............................................1221Scenariusz 1. Dostęp według użytkowników ......................................................................1222
28 Microsoft SQL Server 2000. Księga eksperta
Scenariusz 2. Dostęp według pakietów...............................................................................1222Inne zagadnienia związane z bezpieczeństwem...................................................................1222
Uruchamianie aplikacji MTS..................................................................................................1222Uruchamianie przykładowej aplikacji ................................................................................1224Rozwiązywanie problemów ..............................................................................................1225
Użycie puli połączeń..............................................................................................................1226Zmiana czasu działania sterownika ....................................................................................1227
���������##��<��������,�!��� ��!�"!������-�������������������������������������� Od Windows NT Enterprise Edition do Windows 2000 Advanced Server...................................1230
Serwer transakcji .............................................................................................................1231Serwer kolejkujący — Message Queue Server....................................................................1231
Klastry .................................................................................................................................1232Obsługa klastrów w SQL Serverze..........................................................................................1234
Unikanie niebezpiecznych sytuacji ....................................................................................1236Przykład procedury odtwarzania .......................................................................................1237
Równoważenie obciążenia sieci ..............................................................................................1237
���������#'��1��!�������,�!��!���� �������������������������������������������������������������� W jaki sposób działa serwer przeszukiwania ............................................................................1239Konfiguracja indeksu.............................................................................................................1240Utrzymywanie aktualnej zawartości indeksów..........................................................................1242
Wybór najlepszego harmonogramu uaktualniania indeksu ...................................................1242Odtwarzanie poprzedniej zawartości indeksu......................................................................1243Skutki posiadania niespójnych danych...............................................................................1244
Przeszukiwanie całego tekstu..................................................................................................1245CONTAINS()..................................................................................................................1245FREETEXT()..................................................................................................................1246CONTAINSTABLE() oraz FREETEXTTABLE() ..............................................................1247
Stosowanie filtrów dokumentów.............................................................................................1248Index Server oraz pełne przeszukiwanie plików danych ............................................................1248
1�#�� �������������������������������������������������������������������������������������������� !2,!
��������� �������������������������������������������������������������������������������������������������������'�
���������
������������ ���
������������������������
����������
W tym rozdziale omówiona zostanie rola administratora SQL Servera, a także syste-
mowe bazy danych i tabele. Ponadto powiemy, w jaki sposób administrator może zdo-bywać informacje o systemie. Zrozumienie tych podstawowych struktur ma kluczowe
znaczenie przy administrowaniu bazami danych SQL Servera. Podobnie jak mechaniknaprawiający samochody, administrator musi wiedzieć, gdzie należy zajrzeć, gdy poja-
wią się problemy.
������������ ��������������
Administrator odpowiada za spójność i dostępność danych. Jest to proste w założeniu,ale to wielka odpowiedzialność. Niektóre duże firmy szacują wartość swych danych na
milion dolarów za każde 100 MB. Nie chodzi tu jednak tylko o pieniądze. Wiele firm,które utraciły dane o krytycznym dla siebie znaczeniu, po prostu nigdy już nie podnio-
sło się po tej stracie.
To, co w praktyce wchodzi w zakres obowiązków administratora systemu, określane jest
dość ogólnie. W małych firmach zadaniem administratora może być wykonanie i wdro-
żenie projektu sieci lokalnej, zainstalowanie SQL Servera, implementacja struktury lo-gicznej, wyregulowanie zainstalowanej kopii serwera oraz zajmowanie się codziennymi
czynnościami, takimi jak tworzenie kopii bezpieczeństwa. W większych zakładach zada-nia te mogą być rozbite na kilka stanowisk. Najczęściej zarządzaniem użytkownikami
i tworzeniem kopii bezpieczeństwa zajmuje się niezależna osoba. Jednak wciąż powinnoistnieć stanowisko głównego administratora, który będzie określał politykę postępowania
z systemem i koordynował prowadzone działania. Niezależnie od tego, czy zadania tewykonywane są przez parę osób czy w pojedynkę, administrator:
� Instaluje i konfiguruje SQL Server.
� Rozplanowuje i tworzy bazy danych.
� Zarządza przechowywaniem danych.
122 Część III � Narzędzia administracyjne i administrowanie programem...
� Kontroluje bezpieczeństwo.
� Ulepsza konfigurację baz danych.
� Wykonuje kopie bezpieczeństwa i przywraca z nich system w razie awarii.
Inną czynnością wykonywaną niekiedy przez administratorów jest zarządzanie procedu-rami przechowywanymi na serwerze. Ponieważ procedury przechowywane na serwerze,
przeznaczone dla aplikacji użytkowników, często zapisane są w postaci skomplikowanegokodu T-SQL, w zasadzie zajmowanie się nimi wchodzi w zakres obowiązków programi-
stów. Jednak procedury przechowywane na serwerze są także obiektami w bazie danych,więc również administrator jest za nie odpowiedzialny. Jeżeli aplikacje stosowane w fir-
mie czytelnika wywołują niestandardowe procedury przechowywane na serwerze, czytel-
nik musi być tego świadomy i koordynować swoje działania z twórcami aplikacji.
Praca administratora systemu potrafi być źródłem stresów i frustracji. Jest także wyma-
gająca, ale i ciekawa, a stanowisko administratora jest wysoce poważane. Od admini-stratora wymaga się, aby wszystko wiedział, wszystko widział i wszystko przewidywał,
ale jest on za to adekwatnie wynagradzany.
������������� ���
Systemowe bazy danych zostały stworzone, by wspomagać pracę SQL Servera. Pro-gram instalacyjny tworzy cztery systemowe bazy danych — ������, ����, ��� oraz
�����. Mówi się, że systemowe bazy danych zawierają „metadane” lub inaczej daneo danych. Nie można wykonywać zrzutów tych baz danych.
������
Jak sama nazwa wskazuje, w bazie danych ������ zawarte są wszystkie informacjesystemowe dotyczące SQL Servera. Jeżeli jakikolwiek obiekt zdefiniowany jest na po-
ziomie całego serwera, jest on przechowywany w bazie ������. Konta logowania, usta-wienia konfiguracyjne, systemowe procedury przechowywane na serwerze oraz infor-
macje o istnieniu innych baz danych zapisane są w bazie ������. Jeżeli baza danych������ ulegnie uszkodzeniu, SQL Server nie uruchomi się, tak więc regularne tworzenie
kopii bezpieczeństwa tej bazy jest sprawą priorytetową. Dalsze informacje można zna-leźć w rozdziale 18.
����
Baza danych ��� przechowuje informacje dla SQL Server Agenta. Gdy administratorokreśla zadania, alarmy i wyznacza operatorów, informacje o nich są trzymane w bazie
���. W bazie tej znajdują się też informacje o operacjach tworzenia kopii bezpieczeń-stwa, tak więc nawet jeżeli nie korzysta się z SQL Agenta, należy pamiętać o tworzeniu
kopii zapasowych bazy ���. W wersji Enterprise Edition w bazie tej występuje dodat-kowa tabela obsługująca przenoszenie dziennika.
Rozdział 6. � Podstawowe funkcje i narzędzia administratora 123
���
Baza danych ���� jest szablonem, na którego podstawie tworzone są wszystkie bazy
danych użytkowników. Wszystkie bazy danych muszą zawierać podstawowy zbiór
obiektów, znany jako katalog bazy danych. Gdy tworzona jest nowa baza danych, tak
naprawdę kopiowana jest baza ����, dzięki czemu w nowej bazie znajdują się już
wszystkie wymagane obiekty. Oczywiście do bazy ���� można w wygodny sposób
dodawać nowe obiekty. Jeżeli chcemy na przykład, aby we wszystkich naszych bazach
danych występowała określona tabela, wówczas wystarczy utworzyć ją w bazie danych
����. Modyfikując bazę ����, należy pamiętać o zapisaniu jej na dysku, gdyż w prze-
ciwnym razie wprowadzone zmiany zostaną utracone.
������
Baza ����� przechowuje obiekty tymczasowe. Bezpośrednio utworzone tabele tymcza-
sowe, a także tymczasowe procedury przechowywane na serwerze i obiekty tworzone
przez system trafiają do bazy �����. O ����� należy myśleć jak o przestrzeni robo-
czej, swego rodzaju podręcznym notesie, w którym SQL Server przechowuje przej-
ściowe dane. Na przykład, zanim wynik złożonej operacji sortowania zostanie zwrócony
do użytkownika, jest ona przeprowadzana w bazie �����. Można również tak skonfigu-
rować system, aby baza ����� była wykorzystywana podczas tworzenia indeksów.
Przechowywanie bazy ����� na osobnym dysku może wyraźnie skrócić czas tworzenia
indeksów. Po każdym uruchomieniu SQL Servera baza danych ����� tworzona jest na
nowo, więc nie ma potrzeby tworzenia jej kopii bezpieczeństwa.
�� �������������
Baza ������ ���� nie jest domyślnie tworzona, choć z technicznego punktu widzenia
jest to systemowa baza danych. Zostanie ona zainstalowana z chwilą, gdy użytkownik
zdecyduje się korzystać z replikacji danych. Więcej informacji na ten temat znajduje się
w rozdziale 25.
��������������
SQL Server wykorzystuje tabele systemowe do przechowywania informacji o obiektach
i ustawieniach konfiguracyjnych. Generalnie nazwy tabel systemowych zaczynają się
przedrostkiem sys, od systemowetabele. Z tego powodu tabele te są często nazywane
tabelami ���. Niektóre z nich, takie jak ��������, zostały zaimplementowane jako wi-
doki. Tabele systemowe dzielą się na dwie główne kategorie. Tabele katalogu systemo-
wego znajdują się w bazie danych ������ i przechowują informacje wspólne dla całej
kopii SQL Servera. Tabele katalogu baz danych znajdują się w każdej bazie danych,
w tym w bazie ������, i zawierają informacje specyficzne dla danej bazy. Baza danych
��� ma — oprócz swego katalogu baz danych — dodatkowe tabele systemowe, zwią-
zane z SQL Agentem, narzędziem Backup and Recovery oraz z przenoszeniem dziennika
124 Część III � Narzędzia administracyjne i administrowanie programem...
(tylko w wersji Enterprise). Gdy uaktywniona jest replikacja danych, w bazie ������,
������ ���� i w bazach danych użytkowników, które biorą udział w procesie replika-
cji, tworzone są dodatkowe tabele systemowe.
��������������
W tabeli 6.1 wymieniono tabele i widoki z katalogu systemowego.
�����������Tabele i widoki z katalogu systemowego
���� � � ����
���������� Tabela Zawiera informacje o plikach bazy danych ��� . Ponieważ baza��� tworzona jest na nowo przy każdym uruchomieniu SQLServera, informacje te muszą być przechowywane w bazie ����.
�������� ���� Tabela Zawiera informacje o wykorzystaniu skompilowanych obiektóww pamięci podręcznej. Jest to tabela wirtualna, która materializuje sięza każdym razem, gdy jest na niej wykonywane jakieś zapytanie.
���������� Tabela Zawiera zainstalowane zestawy znaków i porządki sortowania.
������������ Tabela Przechowuje informacje o konfiguracji systemu, które mają zostaćwykorzystane przy najbliższym uruchomieniu SQL Servera.
������������� Tabela Przechowuje informacje o bieżącej konfiguracji systemu. Jest totabela wirtualna, która materializuje się za każdym razem, gdy jestna niej wykonywane jakieś zapytanie.
������� ��� Tabela Zawiera informacje o wszystkich bazach danych.
�������� Tabela Zawiera osobny wpis dla każdego pliku bazy danych, a także plikówprzechowywanych na dyskach i taśmowych kopiach bezpieczeństwa.
����������� Tabela Zawiera osobny wpis dla każdego języka zainstalowanego naserwerze. Nie ma jedynie wpisu dla amerykańskiej odmiany językaangielskiego, choć jest on zawsze dostępny.
����������� Tabela Przechowuje informacje o wszystkich aktywnych blokadachw systemie.
��������� Widok Przechowuje wszystkie nazwy użytkowników w oparciuo informacje zawarte w tabeli ����������.
�������� Tabela Przechowuje systemowe komunikaty o błędach i ostrzeżenia.
������ ���� Widok Przechowuje informacje o mapowanych nazwach użytkownikówi hasłach na złączonych serwerach w oparciu o dane dostępnew tabeli ����������.
��������� Tabela Zawiera mierniki wydajności, które mogą być wyświetlane przezPerformance Monitor.
���������� Tabela Przechowuje informacje o wszystkich procesach klienckichi systemowych pracujących pod SQL Serverem.
������������ Widok Zawiera osobny wpis dla każdego zdalnego użytkownika mogącegowywoływać zdalne procedury przechowywane na serwerze.
���������� Tabela Zawiera informacje o wszystkich nazwach użytkowników.
Rozdział 6. � Podstawowe funkcje i narzędzia administratora 125
�������� �������
W tabeli 6.2 wymieniono tabele i widoki z katalogu baz danych.
������������Tabele i widoki z katalogu baz danych
���� � � ����
��������� Tabela Zawiera osobny wpis dla każdej kolumny ze wszystkich tabeli widoków, a także osobny wiersz dla każdego parametru proceduryprzechowywanej na serwerze.
�������� Tabela Zawiera wpisy dla wszystkich widoków, reguł, wartości domyślnych,wyzwalaczy, ograniczeń CHECK, ograniczeń DEFAULT i procedurprzechowywanych na serwerze.
�������������� Widok Przyporządkowuje ograniczenia do obiektów, które są ich właścicielami.Informacje tu zawarte opierają się na danych z tabeli ���� ���.
�������� Tabela Zawiera informacje na temat zależnych od siebie obiektów, takiejak relacje między widokami a tabelami.
������������ Tabela Zawiera informacje o grupach plików.
������� Tabela Zawiera informacje o plikach baz danych, w tym nazwy logicznei fizyczne, a także rozmiary plików.
������������ Tabela Zawiera informacje o występujących w bazie danych zależnościachmiędzy obcojęzycznymi kluczami.
������������������ Tabela Zawiera osobny wpis dla każdego katalogu pełnotekstowego.
�������� Tabela Zawiera informacje o indeksach w bazie danych.
���������� Widok Zawiera informacje o kluczach indeksów.
��� �� Tabela Zawiera informacje o rolach nadanych poszczególnym użytkownikom.
���� ���� Widok Zawiera osobny wpis dla każdego obiektu występującego w bazie danych.
������������ Tabela Przechowuje informacje o pozwoleniach związanych z określonymirolami, pozwoleniach przyznanych i odmówionych użytkownikomoraz grupom użytkowników.
���������� Tabela Zawiera informacje o pozwoleniach przyznanych kontombezpieczeństwa za pomocą deklaracji ����� i ��� .
��������� Tabela Zawiera informacje o mapowaniu kolumn dla dopuszczalnychzakresów danych, określonych dla obcojęzycznych kluczy.
������� Tabela Zawiera informacje o wszystkich typach danych zdefiniowanychprzez system i przez użytkowników.
������� Tabela Zawiera osobny wpis dla każdego użytkownika Windows, grupyużytkowników Windows, użytkownika SQL Servera oraz roli SQLServera, mających dostęp do bazy danych.
���������������
Tabele katalogu replikacji tworzone są dopiero wówczas, gdy zostanie skonfigurowana re-
plikacja danych. Po jej skonfigurowaniu odpowiednie tabele tworzone są w bazie ������,
���, ������ ���� oraz w bazach danych użytkowników, biorących udział w procesie re-plikacji. Konfiguracja tabel może być różna w zależności od przyjętego modelu replikacji.
126 Część III � Narzędzia administracyjne i administrowanie programem...
���������������������
Poza standardowymi tabelami katalogu baz danych baza ��� zawiera tabele charakte-
rystyczne dla SQL Server Agenta, tworzonych kopii bezpieczeństwa, przenoszeniadziennika oraz narzędzia Database Maintenance Plan (plan zarządzania bazą danych).
W tabeli 6.3 pokazano tabele SQL Server Agenta.
������������Tabele SQL Server Agenta
���� ����
�������� Nazwa, numer błędu itd. dla wszystkich określonych komunikatów o błędach.
����������� Kategorie używane do segregowania zadań, alarmów i operatorów.
�����!��������� Kolejka zadań mająca być rozesłana do innych serwerów.
����� ������� Tabela z historią zadań zaplanowanych w czasie.
����� � Informacja o zadaniach SQL Server Agenta.
����� ������� Informacje o tym, kiedy mają być wykonane poszczególne, zaplanowanezadania.
����� ����� Zależności między danym zadaniem a jednym lub kilkoma serwerami,na których ma ono zostać wykonane.
����� ���� Poszczególne kroki składające się na wszystkie zaplanowane zadania.
���������������� Informacje dla każdego operatora uszeregowane według zadań.
����������� Informacje o operatorach, takie jak nazwisko, adres e-mail itd.
����������������� �� Serwery docelowe wchodzące w skład grupy wieloserwerowej.
������������������ Grupy serwerów docelowych zdefiniowane na serwerze.
������������� Lista serwerów docelowych.
���������� Odwzorowanie zadań z wcześniejszej wersji na zadania realizowanew bieżącej wersji systemu.
W tabeli 6.4 znalazły się informacje na temat tabel odnoszących się do kopii bezpieczeństwa.
������������Tabele odnoszące się do kopii bezpieczeństwa
���� ����
�������� Zawiera informacje o każdym pliku dziennika i pliku z danymi, którezostały uwzględnione przy tworzeniu kopii bezpieczeństwa.
������������� Zawiera informacje o rodzinach mediów, na których tworzone są kopiebezpieczeństwa, takie jak nazwa, zbiór mediów, fizyczne i logicznenazwy plików itd.
���������� Zawiera nazwę, opis itd. każdego zestawu mediów.
������� Zawiera osobny wiersz dla każdego zestawu kopii bezpieczeństwa.
������������� Zawiera informacje o każdej przeprowadzonej, oznaczonej transakcji.
�������� Zawiera osobny wpis dla każdego pliku przywróconego z kopiibezpieczeństwa.
������������� Zawiera osobny wpis dla każdej przywróconej grupy plików.
������������ Zawiera osobny wiersz dla każdej przeprowadzonej operacjiprzywracania danych.
Rozdział 6. � Podstawowe funkcje i narzędzia administratora 127
W tabeli 6.5 wymieniono tabele związane z planem konserwacji systemu.
������������Tabele związane z planem konserwacji systemu
���� ����
���� ��������"���� ��� Zawiera po jednym wierszu dla każdej bazy danych uwzględnionejw planie.
���� ��������"������� Historia zadań przeprowadzonych w ramach planu konserwacji systemu.
���� ��������"�� � Zawiera osobny wiersz dla każdego zadania stanowiącego część planu.
���� ��������� Zawiera osobny wiersz dla każdego planu. Znajduje się w nim nazwa,identyfikator oraz data utworzenia planu.
W tabeli 6.6 wymieniono tabele związane z przenoszeniem dziennika.
������������Tabele związane z przenoszeniem dziennika
���� ����
���"��������"���� ��� Nazwa i identyfikator przenoszonej bazy danych.
���"��������"������ Nazwa serwera monitorującego przenoszenie dziennika.
���"��������"����"���� ��� Nazwy baz danych i uaktywnionych opcji występujących w planieprzenoszenia dziennika.
���"��������"����"������� Historia planu przenoszenia dziennika.
���"��������#����� Informacje konfiguracyjne planu przenoszenia dziennika.
���"��������"������� Serwer podstawowy, informacje konfiguracyjne, historia oraz wartościgraniczne.
���"��������"��������� Serwer zapasowy, informacje konfiguracyjne, historia oraz wartościgraniczne.
������������������� ����������
Procedury przechowywane w systemie, tworzone przy instalacji SQL Servera, mają
bardzo istotne znaczenie dla administrowania nim. Zadaniem procedur przechowywa-
nych w systemie jest uwolnienie administratora od konieczności bezpośredniej edycji
i wykonywania zapytań na tabelach systemowych i tabelach katalogu baz danych.
Obecnie duża część czynności administracyjnych może być przeprowadzona z poziomu
Enterprise Managera, ale warto znać też procedury przechowywane na serwerze. Na
przykład, aby dodać nowy identyfikator użytkownika w Enterprise Managerze, wystar-
czy kliknąć prawym przyciskiem myszy Logins, wybrać w pojawiającym się oknie New
Login, a następnie wpisać żądane informacje. Jest to dobry sposób, jeżeli chcemy dodać
jeden nowy identyfikator, ale co zrobić, jeśli chcielibyśmy dodać ich dwieście? W tym
przypadku pisze się skrypt wywołujący procedurę przechowywaną w systemie o nazwie
���������� i dostarcza się wszystkie dane niezbędne do utworzenia nowych identyfi-
katorów (nazwy użytkowników, hasła itd.).
128 Część III � Narzędzia administracyjne i administrowanie programem...
Wymienienie wszystkich procedur przechowywanych w systemie byłoby niepraktyczne.
Nawet przy pobieżnym spojrzeniu na bazę danych ������ widać prawie tysiąc takich
procedur. Dokumentacja SQL Servera w postaci elektronicznej oraz biblioteka MSDN są
doskonałymi źródłami informacji na temat procedur przechowywanych w systemie. In-
ną metodą na zapoznanie się z tymi procedurami jest przejrzenie listy obiektów w Query
Analyzerze. Doświadczenia autora wskazują na to, że w ten sposób można sobie szybko
przypomnieć, której procedury należy użyć do wykonania określonego zadania. Jeżeli
chcemy wyświetlić więcej informacji, należy przeciągnąć procedurę do okna zapytań
i nacisnąć Shift+F1. Spowoduje to wyświetlenie informacji na temat danej procedury
pochodzących z dokumentacji elektronicznej.
������������������������� ����������������������
Ogólnie rzecz biorąc, procedury przechowywane w systemie mają następujące wła-
ściwości:
� Są przechowywane w bazie danych ������.
� Ich nazwy rozpoczynają się od przedrostka sp_.
� Właścicielem procedury jest dbo (ang. database owner — właściciel bazy
danych).
� Mają one zasięg globalny. Oznacza to, że mogą zostać wywołane z dowolnej
bazy danych i będą się wykonywały w kontekście tej bazy.
Podobnie jak nigdy nie powinno się bezpośrednio modyfikować tabel systemowych, tak
samo nie powinno się zmieniać procedur przechowywanych w systemie. Jeżeli trzeba
zmienić procedurę przechowywaną w systemie, należy skopiować definicję procedury
z kolumny ���� tabeli ����������� lub z okna właściwości procedury w Enterprise Ma-
nagerze, a następnie wkleić ją do nowej, utworzonej w tym celu procedury, którą będzie
można modyfikować do woli. Nawet jeżeli zrobimy w definicji procedury jakiś błąd,
zawsze będzie dostępna oryginalna wersja.
Należy uważać, aby nie modyfikować procedur przechowywanych na serwerze
operujących na tabelach systemowych. Procedury te są bardzo złożone i zależą
od siebie nawzajem. Jeżeli przydarzy się awaria i administrator zadzwoni do Microsoftu
z prośbą o pomoc, zapewne usłyszy w odpowiedzi: „Nie odpowiadamy na pytaniadotyczące bezpośredniej modyfikacji obiektów systemowych. Miłego dnia”.
������ �������������������
Choć istnieją setki procedur systemowych, najczęściej używa się około 10 czy 20 z nich.
Wiele procedur o nazwach zaczynających się od ������ jest naprawdę pomocnych. Na
przykład ������� zwraca informacje o wszystkich bazach danych, a jeżeli podana jest
konkretna nazwa bazy, tylko o tej jednej bazie danych. Na przykład ���������� ��.
W tabeli 6.7 wymieniono kilka popularnych procedur przechowywanych w systemie.
Rozdział 6. � Podstawowe funkcje i narzędzia administratora 129
������������Popularne procedury przechowywane w systemie
������������� ����
��"��� Wyświetla listę obiektów występujących w danej bazie danych lub zwracainformację na temat określonego obiektu. Może być używana do zdobywaniainformacji o dowolnych obiektach z bazy danych.
��"���� Wyświetla listę baz danych lub informacje o konkretnej bazie.
��"�������� Wyświetla informacje o obiektach i pozwoleniach.
��"!�� Zwraca informacje o połączeniach SQL Servera.
��"���� Informacje o blokadach wszystkich, jednego bądź dwóch procesów.Pomocna przy diagnozowaniu problemów z blokowaniem.
��"�������� Wyświetla lub zmienia globalne ustawienia konfiguracyjne.
��"� ������ Wyświetla lub zmienia ustawienia konfiguracyjne bazy danych.
� ������������ �� ������ �����������������
Jak dotąd w rozdziale tym skupiliśmy się na procedurach przechowywanych w syste-
mie, za pomocą których można uzyskać informacje z baz danych i z katalogu systemo-
wego. Istnieją dwie inne metody pozwalające na odczytywanie metadanych. Są to wi-
doki schematów informacyjnych i funkcje systemowe.
�����������������������������
Widoki schematów informacyjnych określone są w standardzie ANSI-92 jako zbiór
widoków prezentujących dane systemowe. Dzięki zastosowaniu widoków rzeczywiste
tabele systemowe są ukryte przed aplikacjami. Zmiany wprowadzane w tabelach sys-
temowych nie mają wpływu na aplikacje, ponieważ te ostatnie nie korzystają bezpo-
średnio z tabel systemowych. W ten sposób aplikacje mogą pobierać dane z dowolnego
systemu zgodnego ze schematami informacyjnymi ANSI-92, niezależnie od dostawcy
i wersji baz danych.
SQL Server, odwołując się do obiektów umieszczonych na lokalnym serwerze, posłu-
guje się trójczłonowym schematem nazewnictwa określonym w standardzie ANSI-92.
W terminologii ANSI-92 jest to katalog.schemat.obiekt, zaś wg słownictwa Microsoftu
baza_danych.właściciel.obiekt. Jeżeli baza danych nie została określona, domyślnie
przyjmowane jest, że chodzi o bieżącą bazę. Jeżeli nie został podany właściciel, przyj-
muje się, że chodzi o aktualnie stosowaną nazwę użytkownika. Ma to istotne znaczenie,
jeśli chodzi o widoki schematów informacyjnych, ponieważ są one „posiadane” przez
������������� !"��. Tak więc odwołując się do widoku schematów informacyjnych
w bieżącej bazie danych, trzeba podać część schematu nazewnictwa obejmującą właści-
ciela.obiekt. Na przykład chcąc uzyskać informacje o tabelach, należałoby wpisać:
��$�%�#&#'�()#*�'(�)��*(�"�%+�)�,��-$��
130 Część III � Narzędzia administracyjne i administrowanie programem...
Na szczęście nazwy widoków schematów informacyjnych są dość intuicyjne. Niektóre
z dostępnych widoków schematów informacyjnych to ��#$"�, �$%���, ��#$"�&��'�$"("�
oraz '�")�.
Należy unikać tworzenia zapytań odwołujących się bezpośrednio do tabel systemowych.
Microsoft stara się zapewniać kompatybilność z wcześniejszymi wersjami systemu
wszędzie, gdzie jest to możliwe, ale nie ma na to gwarancji. Oznacza to, że Microsoft
zastrzega sobie prawo do zmiany nazw tabel systemowych w dowolnej chwili. Jeżeli
aplikacje użytkownika odwołują się do tych tabel, wówczas może wystąpić problem
przy próbie przeniesienia ich do nowszej wersji SQL Servera. Z kolei widoki schematów
informacyjnych pozostaną w przyszłości niezmienione.
�������������������������������� ����������������
Innym sposobem na uzyskanie informacji o systemie z poziomu poleceń Transact-SQL
jest wykorzystanie funkcji systemowych i funkcji operujących na metadanych. Są to
funkcje skalarne, co oznacza, że zwracają one pojedyncze, określone wartości. Na przy-
kład, aby odczytać nazwę użytkownika z bieżącej sesji, należy zastosować polecenie:
��$�%�#�.���"��)�/0
Kilka innych funkcji, których można użyć do odczytania informacji systemowych, to
*#��*, *#����", �#+" �����", ��$"����" oraz ("�*��".