Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00433 009645 10447682 na godz. na dobę w sumie
SQL Server 2005 Express. Skuteczne rozwiązania - książka
SQL Server 2005 Express. Skuteczne rozwiązania - książka
Autor: , Liczba stron: 432
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-1131-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> sql server
Porównaj ceny (książka, ebook, audiobook).

Zbiór praktycznych porad dla programistów i administratorów baz danych

MS SQL Server to baza danych od dawna kojarzona ze stabilnością, wydajnością i... wysoką ceną. Jednak najnowsza edycja tej bazy, oznaczona symbolem 2005, ma także swoją nieodpłatną wersję. SQL Server 2005 Express dystrybuowany jest za darmo, a co więcej -- licencja pozwala na wykorzystywanie go do celów komercyjnych. Oczywiście ta wersja posiada wiele ograniczeń w stosunku do wersji płatnej, mimo to jednak doskonale spełnia zadania zaplecza bazodanowego dla aplikacji i portali internetowych, zapasowej bazy danych dla rozbudowanych systemów informatycznych i uniwersalnego narzędzia do nauki.

Książka 'SQL Server 2005 Express' to zbiór porad dotyczących instalacji i konfiguracji tej aplikacji oraz sposobów jej wykorzystania. Autor książki -- doświadczony administrator i programista baz danych -- umieścił tu rozwiązania niemal wszystkich typowych zadań, jakie stają przed użytkownikami bazy SQL Server 2005. Z tej książki dowiesz się, jak optymalnie skonfigurować bazę danych, zabezpieczyć serwer czy zaprojektować struktury baz i tabel. Nauczysz się korzystać z języka SQL, formułować i optymalizować zapytania, tworzyć kopie zapasowe danych i zarządzać transakcjami.

Usprawnij swoją pracę, korzystając z doświadczenia profesjonalistów.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

SQL Server 2005 Express. Skuteczne rozwi„zania Autor: Danuta Mendrala, Marcin Szeliga ISBN: 978-83-246-1131-7 Format: B5, stron: 432 Zbi(cid:243)r praktycznych porad dla programist(cid:243)w i administrator(cid:243)w baz danych (cid:149) Instalacja i konfiguracja SQL Server 2005 Express (cid:149) Zabezpieczanie serwera i danych (cid:149) Projektowanie baz i tabel (cid:149) Tworzenie optymalnych zapytaæ MS SQL Server to baza danych od dawna kojarzona ze stabilno(cid:156)ci„, wydajno(cid:156)ci„ i(cid:133) wysok„ cen„. Jednak najnowsza edycja tej bazy, oznaczona symbolem 2005, ma tak¿e swoj„ nieodp‡atn„ wersjŒ. SQL Server 2005 Express dystrybuowany jest za darmo, a co wiŒcej -- licencja pozwala na wykorzystywanie go do cel(cid:243)w komercyjnych. Oczywi(cid:156)cie ta wersja posiada wiele ograniczeæ w stosunku do wersji p‡atnej, mimo to jednak doskonale spe‡nia zadania zaplecza bazodanowego dla aplikacji i portali internetowych, zapasowej bazy danych dla rozbudowanych system(cid:243)w informatycznych i uniwersalnego narzŒdzia do nauki. Ksi„¿ka (cid:132)SQL Server 2005 Express(cid:148) to zbi(cid:243)r porad dotycz„cych instalacji i konfiguracji tej aplikacji oraz sposob(cid:243)w jej wykorzystania. Autor ksi„¿ki (cid:150) do(cid:156)wiadczony administrator i programista baz danych (cid:150) umie(cid:156)ci‡ tu rozwi„zania niemal wszystkich typowych zadaæ, jakie staj„ przed u¿ytkownikami bazy SQL Server 2005. Z tej ksi„¿ki dowiesz siŒ, jak optymalnie skonfigurowa(cid:230) bazŒ danych, zabezpieczy(cid:230) serwer czy zaprojektowa(cid:230) struktury baz i tabel. Nauczysz siŒ korzysta(cid:230) z jŒzyka SQL, formu‡owa(cid:230) i optymalizowa(cid:230) zapytania, tworzy(cid:230) kopie zapasowe danych i zarz„dza(cid:230) transakcjami. (cid:149) Instalacja i konfiguracja SQL Server 2005 Express (cid:149) Zarz„dzanie bazami danych (cid:149) Tworzenie kopii zapasowych i odtwarzanie danych (cid:149) Zabezpieczanie serwera (cid:149) Konta i role u¿ytkownik(cid:243)w (cid:149) Typy danych (cid:149) Projektowanie baz i tabel (cid:149) Generowanie indeks(cid:243)w (cid:149) Tworzenie i wykorzystywanie procedur sk‡adowanych (cid:149) Pobieranie i modyfikowanie danych (cid:149) Transakcje i blokady Usprawnij swoj„ pracŒ, korzystaj„c z do(cid:156)wiadczenia profesjonalist(cid:243)w Wydawnictwo Helion ul. Ko(cid:156)ciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Spis tre(cid:264)ci Wst(cid:246)p ............................................................................................ 11 SQL Server 2005 Express ...............................................................................................11 O czym jest ta ksi(cid:261)(cid:298)ka? ..................................................................................................12 Konwencje i oznaczenia .................................................................................................13 Cz(cid:246)(cid:264)(cid:232) I Administracja ............................................................... 15 Rozdzia(cid:228) 1. Instalacja ....................................................................................... 17 Przygotowanie instalacji .................................................................................................17 Wymagania ..............................................................................................................17 Ograniczenia ............................................................................................................19 Licencje ....................................................................................................................19 Instalacja .........................................................................................................................20 Wybór konta us(cid:225)ugi serwera SQL 2005 ....................................................................20 Instalacja serwera .....................................................................................................21 Instalacja narz(cid:266)dzi administracyjnych ......................................................................23 Instalacja pomocy BOL ............................................................................................23 Weryfikacja instalacji .....................................................................................................24 Pliki dziennika ..........................................................................................................24 Us(cid:225)ugi serwera ..........................................................................................................25 Po(cid:225)(cid:261)czenie z baz(cid:261) master i sprawdzenie wersji serwera ..................................................25 SQLDIAG ................................................................................................................25 Uwaga na kontrol(cid:266) konta u(cid:298)ytkownika systemu Windows Vista .............................26 Definiowanie aliasów po stronie komputerów klienckich ........................................26 Instalacja przyk(cid:225)adowej bazy AdventureWorks ..............................................................27 Zmiana nazwy serwera SQL ...........................................................................................27 Usuwanie instalacji serwera SQL 2005 ..........................................................................28 MSDE a SQL 2005 Express ...........................................................................................29 Workload Governor ..................................................................................................30 Porównanie funkcjonalno(cid:286)ci obu wersji serwera ......................................................30 SharePoint ......................................................................................................................30 WSS 2.0 i WSDE .....................................................................................................30 WSS 3.0 i Windows Internal Database .....................................................................31 MOSS 2007 i SQL 2005 Express .............................................................................31 Windows Server Update Services 3.0 .............................................................................32 Rozdzia(cid:228) 2. Aktualizacja ................................................................................... 29 4 SQL Server 2005 Express. Skuteczne rozwi(cid:241)zania Rozdzia(cid:228) 3. Konfiguracja serwera i baz danych .................................................. 49 Aktualizacja serwera .......................................................................................................32 Scenariusze aktualizacji ...........................................................................................33 Aktualizacja baz danych .................................................................................................34 Upgrade Advisor ......................................................................................................35 Aktualizacja bazy danych .........................................................................................36 Zadania po aktualizacji .............................................................................................40 Migracja do edycji p(cid:225)atnych ...........................................................................................42 Dodatkowe funkcje edycji Standard .........................................................................43 Dodatkowe funkcje edycji Enterprise .......................................................................45 Architektura serwera .......................................................................................................49 Aparat relacyjny .......................................................................................................50 Aparat sk(cid:225)adowania danych ......................................................................................51 SQLOS .....................................................................................................................51 Konfiguracja serwera ......................................................................................................52 Protoko(cid:225)y sieciowe ...................................................................................................52 Us(cid:225)ugi .......................................................................................................................56 Wybrane opcje serwera ............................................................................................56 Bazy danych ...................................................................................................................58 Systemowe bazy danych ..........................................................................................59 Pliki bazodanowe .....................................................................................................61 Naprawa b(cid:225)(cid:266)dów .......................................................................................................68 Zarz(cid:261)dzanie bazami danych ............................................................................................70 Tworzenie baz danych ..............................................................................................70 Obiekty systemowe ..................................................................................................70 Wybrane opcje bazy danych .....................................................................................72 Modyfikowanie baz danych .....................................................................................73 Skrypty administracyjne ...........................................................................................75 Usuwanie baz danych ...............................................................................................77 XML dla administratorów ..............................................................................................77 Pliki konfiguracyjne .................................................................................................77 Plany wykonania zapyta(cid:276) .........................................................................................78 Zapisane plany wykonania instrukcji .......................................................................79 Statystyki wykonania instrukcji ...............................................................................79 Dyrektywy optymalizatora .......................................................................................79 Wyniki funkcji EventData() .....................................................................................79 Pliki formatu programu BCP ....................................................................................80 Best Practices Analyzer 2.0 ............................................................................................80 Tworzenie kopii zapasowych .........................................................................................81 Urz(cid:261)dzenia kopii zapasowych ..................................................................................81 Typy kopii zapasowych ............................................................................................83 Strategie ...................................................................................................................85 Automatyczne tworzenie kopii zapasowych .............................................................88 Sprawdzanie aktualno(cid:286)ci kopii .................................................................................90 Odtwarzanie kopii zapasowych ......................................................................................91 Spójno(cid:286)(cid:252) bazy ...........................................................................................................91 Odtwarzanie kopii danych ........................................................................................92 Odtwarzanie kopii dzienników transakcyjnych ........................................................93 Odtwarzanie pojedynczych stron ..............................................................................94 Weryfikacja kopii poprzez SMO ..............................................................................95 Zmiana nazwy i lokalizacji bazy ..............................................................................96 Odtwarzanie serwera ................................................................................................96 Rozdzia(cid:228) 4. Kopie zapasowe ............................................................................. 81 Spis tre(cid:264)ci 5 Rozdzia(cid:228) 5. Bezpiecze(cid:254)stwo ............................................................................. 99 Model dog(cid:225)(cid:266)bnej obrony .................................................................................................99 Zagro(cid:298)enia ................................................................................................................99 Zabezpieczenia na poziomie systemu Windows ...........................................................100 Lista us(cid:225)ug ..............................................................................................................101 Us(cid:225)ugi serwera SQL ...............................................................................................101 Protoko(cid:225)y sieciowe serwera SQL ...........................................................................102 Microsoft Baseline Security Analyzer ....................................................................102 Zabezpieczenia na poziomie instancji ..........................................................................103 Model bezpiecze(cid:276)stwa serwera SQL 2005 .............................................................103 Uwierzytelnianie ....................................................................................................104 Role serwera ...........................................................................................................108 Dodatkowe po(cid:286)wiadczenia .....................................................................................109 Delegowanie po(cid:286)wiadcze(cid:276) .....................................................................................109 Dodatkowe funkcje serwera ...................................................................................110 Zabezpieczenia na poziomie bazy danych ....................................................................111 Zaufane bazy danych ..............................................................................................111 Konta u(cid:298)ytkowników .............................................................................................111 Role bazy danych ...................................................................................................112 Schematy ................................................................................................................115 Monitorowanie .............................................................................................................116 Dzienniki systemu Windows ..................................................................................116 Dzienniki serwera SQL ..........................................................................................116 Cz(cid:246)(cid:264)(cid:232) II Programowanie .......................................................... 119 Rozdzia(cid:228) 6. Narz(cid:246)dzia, tabele, zmienne i typy danych ...................................... 121 Narz(cid:266)dzia ......................................................................................................................121 Diagramy baz danych .............................................................................................122 Szablony instrukcji .................................................................................................123 SQLCMD ...............................................................................................................124 BCP i BULK INSERT ...........................................................................................125 Typy danych .................................................................................................................125 Warto(cid:286)(cid:252) NULL .......................................................................................................126 Typy daty i czasu ....................................................................................................127 Typy znakowe ........................................................................................................129 Du(cid:298)e obiekty ..........................................................................................................129 Typy CLR ..............................................................................................................130 XML .......................................................................................................................130 Zmienne ........................................................................................................................132 Inicjowanie zmiennych ...........................................................................................132 Konwersja typów ....................................................................................................133 Warto(cid:286)(cid:252) czy wyra(cid:298)enie? .........................................................................................133 Zmienne tabelaryczne .............................................................................................133 Tabele ...........................................................................................................................134 Tworzenie tabel ......................................................................................................134 Ograniczenia ..........................................................................................................137 Modyfikowanie tabeli .............................................................................................139 Tabele tymczasowe ................................................................................................142 Instancje u(cid:298)ytkowników ...............................................................................................143 Pod(cid:225)(cid:261)czenie pliku bazy danych ..............................................................................144 SQL Server Express Utility ....................................................................................145 6 SQL Server 2005 Express. Skuteczne rozwi(cid:241)zania Rozdzia(cid:228) 7. Indeksy ........................................................................................ 147 Podstawowe struktury danych ......................................................................................147 Sterta ......................................................................................................................148 Indeks zgrupowany ................................................................................................148 Indeks niezgrupowany ............................................................................................151 Mechanizmy odczytywania i modyfikowania danych ..................................................152 Odczytywanie wierszy ...........................................................................................152 Wstawianie wierszy ................................................................................................156 Usuwanie wierszy ..................................................................................................157 Modyfikowanie wierszy .........................................................................................157 Tworzenie indeksów .....................................................................................................158 Opcje indeksów ......................................................................................................158 Indeksy z(cid:225)o(cid:298)one ......................................................................................................159 Dodatkowe kolumny indeksów ..............................................................................160 Indeksowanie kolumn wyliczeniowych ..................................................................160 Wielko(cid:286)(cid:252) indeksów ................................................................................................161 Statystyki ......................................................................................................................162 Wy(cid:225)(cid:261)czenie aktualizacji statystyki ..........................................................................163 Zarz(cid:261)dzanie indeksami .................................................................................................164 Tworzenie widoków .....................................................................................................165 Restrykcje ...............................................................................................................165 Opcje widoków ......................................................................................................167 Indeksowanie widoków ................................................................................................170 Korzystanie z indeksów ..........................................................................................171 Indeksowanie wybranych wierszy tabeli ................................................................173 Partycjonowanie danych ...............................................................................................174 Modyfikowanie widoku ................................................................................................175 Sprawdzanie zale(cid:298)no(cid:286)ci mi(cid:266)dzy obiektami ............................................................175 Aktualizacja metadanych .......................................................................................176 (cid:224)a(cid:276)cuchy w(cid:225)asno(cid:286)ci ......................................................................................................177 Funkcje skalarne ...........................................................................................................179 T-SQL ....................................................................................................................180 CLR ........................................................................................................................182 Proste funkcje tabelaryczne ..........................................................................................186 Ograniczenie dost(cid:266)pu do danych ............................................................................187 Skrypty administracyjne .........................................................................................187 Modu(cid:225)owo(cid:286)(cid:252) ...........................................................................................................187 Z(cid:225)o(cid:298)one funkcje tabelaryczne .......................................................................................188 Procedury sk(cid:225)adowane ..................................................................................................191 Tworzenie procedur ................................................................................................192 Przetwarzanie procedur przez serwer SQL 2005 ....................................................193 Interfejs procedur ...................................................................................................195 Wywo(cid:225)ywanie procedur .........................................................................................199 Zmiana kontekstu wykonania .................................................................................205 Wyzwalacze ..................................................................................................................206 Wyzwalacze DML ..................................................................................................207 Wyzwalacze DDL ..................................................................................................211 Wyzwalacze logowania ..........................................................................................213 Rozdzia(cid:228) 10. Procedury i wyzwalacze ................................................................ 191 Rozdzia(cid:228) 8. Widoki ......................................................................................... 165 Rozdzia(cid:228) 9. Funkcje u(cid:276)ytkownika .................................................................... 179 Spis tre(cid:264)ci 7 Rozdzia(cid:228) 11. Obs(cid:228)uga b(cid:228)(cid:246)dów ............................................................................ 215 Rozdzia(cid:228) 12. Kryptografia ................................................................................. 229 Komunikaty b(cid:225)(cid:266)dów .....................................................................................................215 Kategorie b(cid:225)(cid:266)dów ...................................................................................................216 Zasi(cid:266)g b(cid:225)(cid:266)dów ........................................................................................................217 Niespójna obs(cid:225)uga b(cid:225)(cid:266)dów ......................................................................................218 Tworzenie w(cid:225)asnych komunikatów b(cid:225)(cid:266)dów ...........................................................219 Blok TRY … CATCH ..................................................................................................220 Unikajmy b(cid:225)(cid:266)dów, zamiast je przechwytywa(cid:252) .......................................................220 Informacje o b(cid:225)(cid:266)dach ..............................................................................................221 B(cid:225)(cid:266)dy, których nie przechwycimy ..........................................................................221 Transakcje ..............................................................................................................222 Zg(cid:225)aszanie b(cid:225)(cid:266)dów ........................................................................................................225 Ponowne zg(cid:225)oszenie b(cid:225)(cid:266)du .....................................................................................226 Algorytmy ....................................................................................................................229 Si(cid:225)a kryptografii .....................................................................................................230 Algorytmy symetryczne .........................................................................................231 Algorytmy asymetryczne .......................................................................................234 Funkcje mieszania ..................................................................................................235 Klucze ...........................................................................................................................237 G(cid:225)ówny klucz serwera ............................................................................................237 G(cid:225)ówny klucz bazy danych ....................................................................................239 Klucze u(cid:298)ytkowników ............................................................................................240 Podpisy cyfrowe ...........................................................................................................243 Sprawdzanie autentyczno(cid:286)ci danych ......................................................................244 Podpisywanie modu(cid:225)ów kodu .................................................................................246 Szyfrowanie danych .....................................................................................................248 Ograniczenie dost(cid:266)pu do klucza .............................................................................249 Indeksowanie szyfrogramów ..................................................................................250 Cz(cid:246)(cid:264)(cid:232) III Praca z danymi ........................................................... 253 Rozdzia(cid:228) 13. Wykonywanie zapyta(cid:254) przez serwer SQL 2005 ............................... 255 Rozdzia(cid:228) 14. Pobieranie danych ........................................................................ 275 Logiczny plan wykonania .............................................................................................256 Kolejno(cid:286)(cid:252) wykonywania klauzul instrukcji SELECT ............................................256 Fizyczny plan wykonania .............................................................................................264 Optymalizator.........................................................................................................264 Odczytywanie informacji o planach wykona(cid:276) ........................................................266 Podstawowe operatory ...........................................................................................269 Automatyczne tworzenie zapyta(cid:276) .................................................................................275 Graficzny konstruktor zapyta(cid:276) ...............................................................................275 Szablony zapyta(cid:276) ....................................................................................................278 Wyszukiwanie danych ..................................................................................................278 Klauzula WHERE ..................................................................................................278 Wydajne wyszukiwanie danych .............................................................................280 (cid:224)(cid:261)czenie (cid:296)róde(cid:225) danych ................................................................................................283 Z(cid:225)(cid:261)czenie krzy(cid:298)owe ................................................................................................283 Z(cid:225)(cid:261)czenia naturalne ................................................................................................284 Z(cid:225)(cid:261)czenia zewn(cid:266)trzne .............................................................................................285 Z(cid:225)(cid:261)czenia wielokrotne ............................................................................................285 Z(cid:225)(cid:261)czenia w(cid:225)asne ....................................................................................................287 8 SQL Server 2005 Express. Skuteczne rozwi(cid:241)zania Rozdzia(cid:228) 16. Podzapytania ............................................................................... 307 Rozdzia(cid:228) 17. Modyfikowanie danych ................................................................. 323 Rozdzia(cid:228) 15. Grupowanie danych ...................................................................... 293 (cid:224)(cid:261)czenie wyników zapyta(cid:276) ....................................................................................287 Operator APPLY ....................................................................................................289 Porz(cid:261)dkowanie zwracanych wierszy i ograniczanie ich liczby .....................................289 Klauzula ORDER BY ............................................................................................289 Klauzula TOP .........................................................................................................291 Klauzula TABLESAMPLE ....................................................................................292 Funkcje grupuj(cid:261)ce ........................................................................................................293 Klauzula GROUP BY ...................................................................................................295 Operator CUBE ......................................................................................................295 Operator ROLLUP .................................................................................................297 Funkcja GROUPING() ...........................................................................................297 Klauzula HAVING .......................................................................................................298 Klauzula OVER ............................................................................................................298 Partycje ...................................................................................................................299 Funkcje rankingu ....................................................................................................299 Operator PIVOT .....................................................................................................303 Operator UNPIVOT ...............................................................................................305 Podzapytania jako zmienne ..........................................................................................307 Podzapytania niepowi(cid:261)zane ....................................................................................308 Podzapytania powi(cid:261)zane ........................................................................................310 Predykat EXISTS ...................................................................................................312 Podzapytania jako (cid:296)ród(cid:225)a danych .................................................................................314 Tabele pochodne ....................................................................................................314 Proste CTE .............................................................................................................316 Rekurencyjne CTE .................................................................................................318 Wstawianie danych .......................................................................................................323 Wstawianie wyników zapyta(cid:276) ................................................................................324 Wstawianie wyników procedur ..............................................................................326 Klauzula OUTPUT .................................................................................................326 Usuwanie danych ..........................................................................................................326 Instrukcja DELETE ................................................................................................327 Instrukcja TRUNCATE ..........................................................................................330 Modyfikowanie danych ................................................................................................331 Klauzula OUTPUT .................................................................................................331 Eksport i import danych ...............................................................................................332 Program BCP .........................................................................................................332 Instrukcja BULK INSERT .....................................................................................332 Funkcja OPENROWSET() .....................................................................................333 Transakcje ....................................................................................................................336 W(cid:225)a(cid:286)ciwo(cid:286)ci transakcji ...........................................................................................336 Zagnie(cid:298)d(cid:298)anie transakcji ........................................................................................338 Blokady ........................................................................................................................339 Charakterystyka blokad ..........................................................................................340 Jak serwer SQL 2005 zarz(cid:261)dza blokadami? ...........................................................344 Informacje o blokadach ..........................................................................................345 Zakleszczenia .........................................................................................................347 Modyfikowanie blokad zak(cid:225)adanych przez serwer .................................................349 Rozdzia(cid:228) 18. Transakcje, blokady i wersjonowanie ............................................ 335 Spis tre(cid:264)ci 9 Poziomy izolowania transakcji .....................................................................................351 Read Uncommited ..................................................................................................351 Read Commited ......................................................................................................352 Repeatable Read .....................................................................................................352 Serializable .............................................................................................................353 Wersjonowanie wierszy ................................................................................................354 Read Commited Snapshot ......................................................................................354 Snapshot .................................................................................................................355 Magazyn wersji ......................................................................................................357 Cz(cid:246)(cid:264)(cid:232) IV Optymalizacja ............................................................ 359 Rozdzia(cid:228) 19. Mierzenie wydajno(cid:264)ci ................................................................... 361 Narz(cid:266)dzia ......................................................................................................................361 Monitor wydajno(cid:286)ci ................................................................................................361 Raporty konsoli SSMSE .........................................................................................364 Performance Dashboard Reports ............................................................................366 (cid:285)ledzenie aktywno(cid:286)ci u(cid:298)ytkowników .....................................................................368 Widoki dynamiczne ................................................................................................370 Linia bazowa ................................................................................................................370 Próbkowanie danych zwracanych przez liczniki serwera SQL 2005 .....................371 Czyszczenie buforów i dokumentowanie wydajno(cid:286)ci zapyta(cid:276) ...............................372 W(cid:261)skie gard(cid:225)a ...............................................................................................................373 Na co czeka serwer SQL 2005? ..............................................................................373 Procesor ..................................................................................................................376 Pami(cid:266)(cid:252) ....................................................................................................................378 Dysk .......................................................................................................................380 Sie(cid:252) .........................................................................................................................382 Dziennik transakcyjny ............................................................................................382 Baza tempdb ...........................................................................................................383 Indeksy ...................................................................................................................384 Blokady i zatrzaski .................................................................................................387 Wolno wykonywane instrukcje ..............................................................................390 Optymalizacja baz danych ............................................................................................394 Struktura logiczna ..................................................................................................394 Struktura fizyczna ..................................................................................................397 Baza tempdb ...........................................................................................................399 Optymalizacja zapyta(cid:276) .................................................................................................400 Uwagi dotycz(cid:261)ce optymalizacji zapyta(cid:276) ................................................................400 Refaktoryzacja kursorów ........................................................................................403 Indeksy .........................................................................................................................405 U(cid:298)yteczne i nieu(cid:298)yteczne indeksy ..........................................................................406 Defragmentacja i przebudowa indeksów ................................................................407 Typowe b(cid:225)(cid:266)dy .........................................................................................................408 Blokady ........................................................................................................................409 Rozbudowa serwera ......................................................................................................410 Skorowidz .................................................................................... 411 Rozdzia(cid:228) 20. Poprawa wydajno(cid:264)ci ..................................................................... 393 Rozdzia(cid:228) 10. Procedury i wyzwalacze Procedury sk(cid:225)adowane i wyzwalacze to wykonuj(cid:261)ce okre(cid:286)lone zadania podprogramy sk(cid:225)adaj(cid:261)ce si(cid:266) z dowolnych instrukcji T-SQL lub CLR. W przeciwie(cid:276)stwie do funkcji u(cid:298)ytkownika, procedury i wyzwalacze mog(cid:261) modyfikowa(cid:252) stan bazy danych, dzi(cid:266)ki czemu obiekty obu typów u(cid:298)ywane s(cid:261) do implementacji logiki aplikacyjnej po stronie bazy danych. Procedury sk(cid:228)adowane 1.Poprawiaj(cid:261) bezpiecze(cid:276)stwo bazy danych. Odbieraj(cid:261)c u(cid:298)ytkownikom uprawnienia do tabel i zezwalaj(cid:261)c im na wywo(cid:225)ywanie procedur, zyskujemy pewno(cid:286)(cid:252), (cid:298)e nikt przypadkowo nie wykona b(cid:225)(cid:266)dnej instrukcji, np. instrukcji UPDATE bez klauzuli WHERE.Procedury sk(cid:225)adowane s(cid:261) te(cid:298) jedyn(cid:261) skuteczn(cid:261) obron(cid:261) przed atakami polegaj(cid:261)cymi na iniekcji kodu SQL. Dodatkowo ukrywaj(cid:261) one struktur(cid:266) bazy danych przed u(cid:298)ytkownikami. Iniekcja kodu SQL polega na podstawieniu pod zmienne dowolnych instrukcji j(cid:246)zyka SQL. Poniewa(cid:276) SQL jest j(cid:246)zykiem interpretowanym, odczytuj(cid:241)ca warto(cid:264)(cid:232) zmiennej instrukcja mo(cid:276)e zosta(cid:232) zmodyfikowana, a nast(cid:246)pnie wykonana. To zagro(cid:276)enie mo(cid:276)na wyeliminowa(cid:232), przekazuj(cid:241)c warto(cid:264)ci zmiennych jako parametry wywo(cid:228)ania procedur. Drugie zagro(cid:276)enie zwi(cid:241)zane jest z wykonywaniem dynamicznie skonstruowanych in- strukcji T-SQL. Konstruowanie dynamicznych instrukcji w ciele procedury nie chroni przed iniekcj(cid:241) kodu. Dlatego nale(cid:276)y sprawdza(cid:232) poprawno(cid:264)(cid:232) wszystkich zmiennych i uniemo(cid:276)liwia(cid:232) ich b(cid:228)(cid:246)dn(cid:241) interpretacj(cid:246) przez serwer SQL 2005. Je(cid:276)eli np. warto- (cid:264)ci(cid:241) zmiennej powinna by(cid:232) nazwa obiektu bazy danych, nale(cid:276)y umie(cid:264)ci(cid:232) j(cid:241) w wy- wo(cid:228)aniu funkcji QUOTENAME(). 2.Tworz(cid:261),wraz z widokami i funkcjami u(cid:298)ytkownika, warstw(cid:266) abstrakcji oddzielaj(cid:261)c(cid:261) u(cid:298)ytkowników od tabel. Je(cid:298)eli u(cid:298)ytkownicy nie odwo(cid:225)uj(cid:261) si(cid:266) bezpo(cid:286)rednio do tabel, zmiana ich struktury nie wymaga zmian aplikacji klienckich1. 1 Zmiana definicji procedur czy widoków, o ile tylko ich interfejs pozostanie taki sam, jest dla u(cid:298)ytkowników niewidoczna. 192 Cz(cid:246)(cid:264)(cid:232) II (cid:105) Programowanie 3.Zwi(cid:266)kszaj(cid:261) wydajno(cid:286)(cid:252) instrukcji. Domy(cid:286)lnie, skompilowane plany wykonania procedur sk(cid:225)adowanych s(cid:261) buforowane i wykorzystywane do ich kolejnych wywo(cid:225)a(cid:276). Ponadto wszystkie dane potrzebne do wykonania procedury u(cid:298)ytkownik jednorazowo przesy(cid:225)a poprzez sie(cid:252) w postaci nazwy procedury i parametrów jej wywo(cid:225)ania. 4.Zmniejszaj(cid:261) zasi(cid:266)g ewentualnych b(cid:225)(cid:266)dów i umo(cid:298)liwiaj(cid:261) ich spójn(cid:261) obs(cid:225)ug(cid:266). Wykorzystanie procedur do obs(cid:225)ugi b(cid:225)(cid:266)dów zosta(cid:225)o opisane w nast(cid:266)pnym rozdziale. Tworzenie procedur Procedury sk(cid:225)adowane: 1.pozwalaj(cid:261) na wywo(cid:225)ywanie innych procedur lub rekurencyjne wywo(cid:225)ywanie samej siebie; maksymalny poziom zagnie(cid:298)d(cid:298)enia procedur wynosi 32, po jego przekroczeniu serwer SQL 2005 zg(cid:225)asza b(cid:225)(cid:261)d i wycofuje wszystkie znajduj(cid:261)ce si(cid:266) na stosie wywo(cid:225)a(cid:276) procedury, 2.akceptuj(cid:261) do 2 100 parametrów wywo(cid:225)ania; parametrami wywo(cid:225)ania procedury nie mog(cid:261) by(cid:252) dane tabelaryczne, 3.zwracaj(cid:261) warto(cid:286)(cid:252) statusu, domy(cid:286)lnie informuj(cid:261)c(cid:261) o tym, czy procedura zosta(cid:225)a wykonana bez b(cid:225)(cid:266)dów, 4.mog(cid:261) zwraca(cid:252) wiele warto(cid:286)ci w postaci parametrów wyj(cid:286)ciowych (ang.output), 5.ich definicje mog(cid:261) zosta(cid:252) zaszyfrowane za pomoc(cid:261) opcji ENCRYPTION, 6.umo(cid:298)liwiaj(cid:261) wy(cid:225)(cid:261)czenie buforowania planu ich wykonania za pomoc(cid:261) opcji RECOMPILE i zmiany kontekstu wykonania przy u(cid:298)yciu opcji EXECUTE AS. Te kwestie zosta(cid:225)y opisane w dalszej cz(cid:266)(cid:286)ci rozdzia(cid:225)u. Uwaga na dodatkowe instrukcje wsadu Cia(cid:225)o procedury nie jest umieszczane w bloku BEGIN … END. W rezultacie wszystkie instrukcje wsadu wyst(cid:266)puj(cid:261)ce po klauzuli CREATE PROCEDURE … AS zostan(cid:261) dodane do cia(cid:225)a procedury. Zwracamy na to uwag(cid:266), bo cz(cid:266)sto podczas modyfikowania czy testo- wania procedur w tym samym oknie edytora umieszcza si(cid:266) inne instrukcje, np. wywo- (cid:225)uje si(cid:266) testowan(cid:261) procedur(cid:266) (rysunek 10.1). Rozwi(cid:241)zaniem tego problemu jest jawne ko(cid:254)czenie cia(cid:228)a procedury dyrektyw(cid:241) GO. Najlepiej wyrobi(cid:232) sobie nawyk stawiania s(cid:228)owa GO zaraz po zadeklarowaniu nag(cid:228)ówka procedury, tak samo jak natychmiast po rozpocz(cid:246)ciu bloku BEGIN powinni(cid:264)my wpi- sywa(cid:232) ko(cid:254)cz(cid:241)c(cid:241) go instrukcj(cid:246) END. Rozdzia(cid:228) 10. (cid:105) Procedury i wyzwalacze 193 Rysunek 10.1. Je(cid:298)eli spróbujemy wywo w jej ciele, to próba zako zagnie(cid:298)d(cid:298)enia procedur Przetwarzanie procedur przez serwer SQL 2005 (cid:276)czy si(cid:266) zg(cid:225)oszeniem przez serwer b (cid:225)a(cid:252) procedur(cid:266), której wywo(cid:225)anie przypadkowo umie (cid:286)cili(cid:286)my (cid:225)(cid:266)du przekroczenia maksymalnego poziomu Przetwarzanie procedury przebiega dwuetapowo. 1.Podczas tworzenia procedury sprawdzana jest poprawno(cid:286)(cid:252) syntaktyczna instrukcji CREATE PROCEDURE. Je(cid:298)eli instrukcja jest poprawna, procedura zostanie utworzona, a jej definicja i metadane zapisane w bazie danych. 2.Podczas wywo(cid:225)ywania procedury wyszukiwane s(cid:261) obiekty, do których odwo(cid:225)uje si(cid:266) procedura. Je(cid:298)eli który(cid:286) z nich jest w(cid:225)asno(cid:286)ci(cid:261) innego u(cid:298)ytkownika ni(cid:298) w(cid:225)a(cid:286)ciciel procedury, serwer SQL 2005 sprawdzi równie(cid:298), czy procedura ma nadane wystarczaj(cid:261)ce uprawniania do wszystkich obiektów bazowych. Nast(cid:266)pnie dochodzi do optymalizacji procedury, w której wyniku najlepszy ze znalezionych plan jej wykonania jest kompilowany, wykonywany i zapisywany w buforze procedur (rysunek 10.2). Je(cid:276)eli plan wykonania procedury znajduje si(cid:246) w buforze, serwer SQL 2005 b(cid:246)- dzie korzysta(cid:228) z niego przy kolejnych wywo(cid:228)aniach procedury, a wi(cid:246)c b(cid:246)d(cid:241) one wymaga(cid:228)y jedynie odczytania i wykonania wcze(cid:264)niej skompilowanego planu wy- konania. Je(cid:276)eli jednak nazwa procedury musia(cid:228)a by(cid:232) sprawdzona, jej kolejne wy- wo(cid:228)ania b(cid:246)d(cid:241) wymaga(cid:228)y ponownego sprawdzenia, optymalizacji i kompilacji. Po- niewa(cid:276) serwer SQL 2005 zak(cid:228)ada, (cid:276)e procedury o nazwach zaczynaj(cid:241)cych si(cid:246) od prefiksu sp_ znajduj(cid:241) si(cid:246) w bazie master, nie nale(cid:276)y go u(cid:276)ywa(cid:232) w nazwach w(cid:228)asnych procedur. Cz(cid:246)(cid:264)(cid:232) II (cid:105) Programowanie 194 Rysunek 10.2. Taki proces przetwarzania procedur powoduje, (cid:298)e ewentualne b(cid:225)(cid:266)dy, z wyj(cid:261)tkiem syntaktycznych, ujawni(cid:261) si(cid:266) dopiero podczas pierwszego ich wywo(cid:225)ania Opó(cid:274)nione sprawdzanie nazw Skoro podczas tworzenia procedury nie jest przygotowywany plan jej wykonania, mo(cid:298)- liwe jest utworzenie procedur odwo(cid:225)uj(cid:261)cych si(cid:266) do nieistniej(cid:261)cych obiektów — tabel, widoków, funkcji czy innych procedur2: USE AdventureWorks GO CREATE PROC uspTest AS SELECT kol1 FROM nieMaTakiejTabeli ------------------------------------------------------------ Command(s) completed successfully. Oczywi(cid:286)cie, próba wywo(cid:225)ania procedury sko(cid:276)czy si(cid:266) b(cid:225)(cid:266)dem: EXEC uspTest ------------------------------------------------------------ Msg 208, Level 16, State 1, Procedure uspTest, Line 3 Invalid object name nieMaTakiejTabeli . W zwi(cid:261)zku z tym, (cid:298)e serwer SQL 2005 sprawdza, czy obiekty, do których odwo(cid:225)uje si(cid:266) tworzona lub zmieniana procedura, istniej(cid:261), odwo(cid:225)ania do nich musz(cid:261) by(cid:252) poprawne: ALTER PROC uspTest AS SELECT kol7 FROM tab1 ------------------------------------------------------------ Msg 207, Level 16, State 1, Procedure uspTest, Line 3 Invalid column name kol7 . 2 Jak pokazali(cid:286)my we wcze(cid:286)niejszym przyk(cid:225)adzie, mo(cid:298)liwo(cid:286)(cid:252) odwo(cid:225)ania si(cid:266) w ciele procedury do niej samej (a wi(cid:266)c do nieistniej(cid:261)cej jeszcze procedury) pozwala na ograniczone stosowanie rekurencji. Rozdzia(cid:228) 10. (cid:105) Procedury i wyzwalacze 195 Interfejs procedur W nag(cid:225)ówku procedury nale(cid:298)y okre(cid:286)li(cid:252) nazwy i typy jej parametrów. Parametry pro- cedury dziel(cid:261) si(cid:266) na: 1.parametry wywo(cid:225)ania, w ciele procedury b(cid:266)d(cid:261) one dost(cid:266)pne jako jej zmienne lokalne, 2.parametry wyj(cid:286)ciowe; dodaj(cid:261)c po typie parametru s(cid:225)owo kluczowe OUTPUT, dodatkowo umo(cid:298)liwimy procedurze zwrócenie warto(cid:286)ci takiego parametru. W ramach procedur nale(cid:298)y okre(cid:286)li(cid:252) domy(cid:286)ln(cid:261) warto(cid:286)(cid:252) parametrów i sprawdzi(cid:252), czy podane przez u(cid:298)ytkownika dane s(cid:261) prawid(cid:225)owe. Poni(cid:298)sza procedura mo(cid:298)e by(cid:252) wywo(cid:225)ana z jednym parametrem — nazw(cid:261) kategorii. Je(cid:298)eli nie zostanie ona podana, procedura zwróci informacje o wszystkich produktach: nazw(cid:266) kategorii, podkategorii i produktu uzupe(cid:225)nione o cen(cid:266) i pozycj(cid:266) produktu w ramach podkategorii. Je(cid:286)li nato- miast nazwa kategorii b(cid:266)dzie zawiera(cid:225)a niedozwolone znaki, dzia(cid:225)anie procedury zo- stanie przerwane3: EXEC uspDaneProduktu EXEC uspDaneProduktu a OR 1=1-- 3 Funkcja ufnLikeRegEx zosta(cid:225)a utworzona w poprzednim rozdziale. CREATE Procedure uspDaneProduktu (@Categoryname varchar(50) = ) AS IF dbo.ufnLikeRegEx (@Categoryname, ^[a-zA-Z s’]*$ ) = 0 IF dbo.ufnLikeRegEx (@Categoryname, /( 27)|(--)|( 23)|(#)/ix ) = 1 RETURN -1 -- nazwa nie sk(cid:225)ada si(cid:266) z samych liter i symbolu RETURN -1 -- nazwa zawiera zabronione znaki DENSE_RANK() OVER -- funkcja DENSE_RANK() ponumeruje wiersze (PARTITION BY sc.Name -- w ramach poszczególnych podkategorii ORDER BY p.ListPrice DESC) as Pozycja -- numerowane wiersze musz (cid:261) by(cid:252) posortowane SELECT c.Name AS Kategoria, sc.Name AS Podkategoria, p.Name Produkt, p.ListPrice, FROM Production.Product p JOIN Production.ProductSubcategory sc ON p.ProductSubcategoryID = sc.ProductSubcategoryID JOIN Production.ProductCategory c ON sc.ProductCategoryID = c.ProductCategoryID WHERE c.Name LIKE @CategoryName ORDER BY c.Name (cid:261) zwróconych wierszy RETURN @@ROWCOUNT -- zast(cid:266)pujemy systemowy status wykonania liczb Parametry do procedury mo(cid:298)na przekaza(cid:252) na dwa sposoby. 1.Podaj(cid:261)c rozdzielone przecinkami warto(cid:286)ci. W takim przypadku kolejno(cid:286)(cid:252) warto(cid:286)ci musi odpowiada(cid:252) kolejno(cid:286)ci parametrów, a dwa przecinki nie mog(cid:261) wyst(cid:261)pi(cid:252) bezpo(cid:286)rednio obok siebie. Oznacza to, (cid:298)e nawet parametry, dla których zdefiniowano warto(cid:286)ci domy(cid:286)lne, musz(cid:261) by(cid:252) podane, chyba (cid:298)e wyst(cid:266)puj(cid:261) na ko(cid:276)cu listy parametrów. 2.Podaj(cid:261)c nazw(cid:266) parametru i przypisuj(cid:261)c mu warto(cid:286)(cid:252). W poni(cid:298)szym przyk(cid:225)adzie pokazujemy, jak wywo(cid:225)a(cid:252) utworzon(cid:261) w poprzednim punkcie procedur(cid:266) bez parametrów i z b(cid:225)(cid:266)dnym parametrem: 196 Cz(cid:246)(cid:264)(cid:232) II (cid:105) Programowanie oraz z podaniem nazwy kategorii i sprawdzeniem zwróconego przez procedur(cid:266) statusu: DECLARE @l INT EXEC @l = uspDaneProduktu Accessories PRINT @l Poniewa(cid:298) procedury mog(cid:261) modyfikowa(cid:252) stan bazy, cz(cid:266)sto s(cid:261) u(cid:298)ywane do zautomaty- zowania zada(cid:276) administracyjnych, np. nadawania lub odbierania uprawnie(cid:276). W poni(cid:298)- szym przyk(cid:225)adzie pokazujemy rozbudowan(cid:261) procedur(cid:266) administracyjn(cid:261), której dzia(cid:225)anie polega na nadawaniu wskazanemu u(cid:298)ytkownikowi uprawnie(cid:276) do wywo(cid:225)ywania wszyst- kich procedur bazy danych: (cid:286)my w rozdziale 11. CREATE PROCEDURE uspGrantExec @user SYSNAME AS DECLARE @cSQL varchar(8000) DECLARE @Obj varchar(8000) DECLARE @Cur CURSOR BEGIN TRY -- blok TRY … CATCH opisali SET @Cur = CURSOR FOR SELECT QUOTENAME(routine_schema) + . + QUOTENAME(routine_name) FROM information_schema.routines WHERE routine_name NOT LIKE dt_ AND routine_type = PROCEDURE OPEN @Cur FETCH NEXT FROM @Cur INTO @Obj WHILE @@FETCH_STATUS = 0 BEGIN SET @cSQL = GRANT EXEC ON + @Obj + TO + @user EXEC (@cSQL) FETCH NEXT FROM @Cur INTO @Obj END DEALLOCATE @Cur END TRY BEGIN CATCH END CATCH RETURN -1 -- w rozdziale 11. wyja(cid:286)nili(cid:286)my te(cid:298) problemy zwi(cid:261)zane z tak(cid:261) -- obs(cid:225)ug(cid:261) wyj(cid:261)tków (cid:297)eby zezwoli(cid:252) u(cid:298)ytkownikowi na wywo(cid:225)ywanie wszystkich procedur, wystarczy wy- kona(cid:252) poni(cid:298)szy skrypt: DECLARE @w INT EXEC @w = uspGrantExec blabla IF @w 0 PRINT B(cid:273)(cid:230)d ------------------------------------------------------------ B(cid:273)(cid:230)d DECLARE @w INT EXEC @w = uspGrantExec Danka IF @w 0 PRINT B(cid:273)(cid:230)d ------------------------------------------------------------ Command(s) completed successfully. Wstawanie wyniku procedury do tabeli Procedura mo(cid:298)e by(cid:252) wywo(cid:225)ana w ramach instrukcji INSERT INTO. Takie wywo(cid:225)anie procedury spowoduje wstawienie zwracanych przez ni(cid:261) wyników do tabeli. Liczba i typ kolumn tabeli musz(cid:261) odpowiada(cid:252) strukturze wyniku dzia(cid:225)ania procedury: Rozdzia(cid:228) 10. (cid:105) Procedury i wyzwalacze 197 CREATE PROCEDURE uspPrac @Nazwisko nvarchar(50) = , @Imie nvarchar(50) = AS SELECT FirstName, LastName, JobTitle FROM HumanResources.vEmployeeDepartment WHERE FirstName LIKE @Imie AND LastName LIKE @Nazwisko GO CREATE TABLE #Pracownicy (Imie nvarchar(50), Nazwisko nvarchar(50), Stanowisko nvarchar(50)) GO INSERT INTO #Pracownicy EXEC uspPrac H , D SELECT * FROM #Pracownicy ------------------------------------------------------------ Doris Hartwig Production Technician - WC10 Douglas Hite Production Technician - WC45 David Hamilton Production Supervisor - WC40 Don Hall Production Technician - WC50 Gdyby(cid:286)my w ramach procedury utworzyli tabel(cid:266) tymczasow(cid:261), zosta(cid:225)aby automatycznie zniszczona po zako(cid:276)czeniu jej dzia(cid:225)ania, a wi(cid:266)c wywo(cid:225)anie procedury powiod(cid:225)oby si(cid:266), ale próba odczytania wyników sko(cid:276)czy(cid:225)aby si(cid:266) b(cid:225)(cid:266)dem: ALTER PROCEDURE uspPrac @Nazwisko nvarchar(50) = , @Imie nvarchar(50) = AS CREATE TABLE #tmpPracownicy (Imie nvarchar(50), Nazwisko nvarchar(50), Stanowisko nvarchar(50)) INSERT INTO #tmpPracownicy SELECT FirstName, LastName, JobTitle FROM HumanResources.vEmployeeDepartment WHERE FirstName LIKE @Imie AND LastName LIKE @Nazwisko GO EXEC uspPrac H , D SELECT * FROM #tmpPracownicy ------------------------------------------------------------ (4 row(s) affected) Msg 208, Level 16, State 0, Line 1 Invalid object name #tmpPracownicy . Parametry wyj(cid:264)ciowe Parametry wyj(cid:286)ciowe w rzeczywisto(cid:286)ci dzia(cid:225)aj(cid:261) jak znane z obiektowych j(cid:266)zyków programowania parametry przekazywane przez referencje. Mo(cid:298)emy za ich pomoc(cid:261) przekaza(cid:252) warto(cid:286)(cid:252) do procedury, która dowolnie j(cid:261) zmodyfikuje i ode(cid:286)le wynik do programu klienckiego: CREATE PROCEDURE uspParamOut @l1 INT, @l2 INT OUTPUT AS SET @l2= @l1*@l2 198 GO Cz(cid:246)(cid:264)(cid:232) II (cid:105) Programowanie DECLARE @w INT SET @w=10 EXEC uspParamOut 5,@w OUTPUT SELECT @w ------------------------------------------------------------ 50 Parametry tabelaryczne Mo(cid:298)liwo(cid:286)(cid:252) przekazywania jako parametru wywo(cid:225)ania procedur tabel, pozwoli(cid:225)aby m.in. na tworzenie procedur wywo(cid:225)ywanych z dowoln(cid:261) liczb(cid:261) parametrów (jednym para- metrem by(cid:225)oby jedno pole tabeli) lub na wykonanie dla ka(cid:298)dego wiersza tabeli w ra- mach procedury okre(cid:286)lonej operacji. Niestety, parametrem procedury nie mog(cid:261) by(cid:252) dane typu TABLE. W zamian za to serwer SQL 2005 obs(cid:225)uguje standard XML, pozwalaj(cid:261)cy na wywo(cid:225)y- wanie procedur z parametrami typu XML. Skoro dokument XML mo(cid:298)e zawiera(cid:252) wiele (do 2 GB) danych, rozwi(cid:261)zanie problemu sprowadza si(cid:266) do przekazania procedurze dokumentu XML, który nast(cid:266)pnie w ramach procedury b(cid:266)dzie przeanalizowany, a od- czytane z niego dane u(cid:298)yte w za(cid:225)o(cid:298)onym przez nas celu: --mo(cid:298)emy skorzysta(cid:252) z funkcji OPENXML CREATE PROCEDURE uspParamTab @doc XML AS DECLARE @h INT EXEC sp_xml_preparedocument @h OUTPUT, @doc SELECT * FROM OPENXML(@h, Towary/Towar ) WITH (id INT @id , -- klauzula WITH pozwala sformatowa (cid:252) wynik nazwa VARCHAR(30) @nazwa , cena DECIMAL @cena ) EXEC sp_xml_removedocument @h SELECT @doc.value ( (Towary/Towar/@nazwa)[1] , VARCHAR(30) ) --albo z metod typu XML Przyk(cid:225)adowa procedura jest bardzo prosta, a jej dzia(cid:225)anie sprowadza si(cid:266) do odczytania przekazanego jako parametr wywo(cid:225)ania dokumentu XML: DECLARE @Towary XML SET @Towary = Towary Towar id= 1 nazwa= Syrop cena= 1000 / Towar id= 4 nazwa= Zio(cid:273)a cena= 200 / /Towary EXEC uspParamTab @Towary ------------------------------------------------------------ 1 Syrop 1000 4 Zio(cid:273)a 200 Syrop Rozdzia(cid:228) 10. (cid:105) Procedury i wyzwalacze 199 Wywo(cid:228)ywanie procedur Procedury nale(cid:298)y wywo(cid:225)ywa(cid:252) za pomoc(cid:261) dyrektywy EXEC. W przeciwnym razie, je- (cid:298)eli nazwa procedury nie b(cid:266)dzie pierwszym wyra(cid:298)eniem wsadu, serwer SQL 2005 nie b(cid:266)dzie móg(cid:225) poprawnie jej zinterpretowa(cid:252)4: sp_who sp_who2 ------------------------------------------------------------ Msg 15007, Level 16, State 1, Procedure sp_who, Line 59 sp_who2 is not a valid login or you do not have permission. Automatyczne wywo(cid:228)anie procedury przy uruchomieniu serwera SQL 2005 Podczas uruchamiania serwer SQL 2005 sprawdza, które ze znajduj(cid:261)cych si(cid:266) w bazie master procedur sk(cid:225)adowanych maj(cid:261) by(cid:252) automatycznie wywo(cid:225)ane. Procedur(cid:266) jako startow(cid:261) mo(cid:298)emy oznaczy(cid:252) za pomoc(cid:261) procedury systemowej sp_procoption, usta- wiaj(cid:261)c warto(cid:286)(cid:252) parametru startup na True5. Plany wykonania procedur Optymalizacja i kompilacja s(cid:261) procesami silnie obci(cid:261)(cid:298)aj(cid:261)cymi procesor. (cid:297)eby zmniej- szy(cid:252) to obci(cid:261)(cid:298)enie, serwer SQL 2005 automatycznie buforuje i wielokrotnie wykorzy- stuje raz obliczone optymalne plany wykona(cid:276) procedur. Ten sam plan wykonania pro- cedury jest ponownie u(cid:298)ywany, chyba (cid:298)e: 1.serwer SQL 2005 zostanie zatrzymany i ponownie uruchomiony, 2.bufor procedur zostanie wyczyszczony; tak(cid:261) operacj(cid:266) mo(cid:298)na przeprowadzi(cid:252): a)na poziomie serwera, wykonuj(cid:261)c instrukcj(cid:266) DBCC FREEPROCCACHE; b)na poziomie wybranej bazy danych, wykonuj(cid:261)c instrukcj(cid:266) DBCC FLUSHPROCINDB(); 3.plan zostanie usuni(cid:266)ty z bufora z powodu d(cid:225)ugiego okresu jego nieu(cid:298)ywania albo z powodu braku dost(cid:266)pnej pami(cid:266)ci RAM, 4.plan zostanie uznany za przestarza(cid:225)y z powodu zmiany struktury obiektów bazowych procedury lub z powodu od(cid:286)wie(cid:298)enia statystyk opisuj(cid:261)cych przechowywane w indeksach tych tabel dane. (cid:297)eby przekona(cid:252) si(cid:266) o tym, jak dzia(cid:225)a mechanizm buforowania planów wykonania pro- cedur, utworzymy procedur(cid:266), która zwraca informacje o zamówieniach z podanego przedzia(cid:225)u czasu: 4 W j(cid:266)zyku T-SQL znak ko(cid:276)ca wiersza jest ignorowany. Nawet umieszczenie po nazwach obu
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

SQL Server 2005 Express. Skuteczne rozwiązania
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: