Download as pdf or txt
Download as pdf or txt
You are on page 1of 58

SQL Server 2005.

Wycinij wszystko
Autor: Eric L. Brown
Tumaczenie: Kosma Nitkiewicz
ISBN: 978-83-246-0549-1
Tytu oryginau: SQL Server 2005 Distilled
(MS Windows Server System)
Format: B5, stron: 320

Poznaj funkcje i moliwoci SQL Server 2005


Przegld architektury platformy SQL Server 2005
Zarzdzanie bazami danych i ich projektowanie
Zabezpieczenia w SQL Server 2005
SQL Server 2005 to najnowsza wersja flagowego produktu Microsoftu przeznaczonego
do zarzdzania danymi i ich analizowania. Zapewnia ona wiksz wydajno, bezpieczestwo,
a take udostpnia szereg nowych funkcji zwizanych midzy innymi z usugami
analitycznymi i raportowaniem. Jak dziaaj te funkcje i ktre z nich s Ci naprawd
potrzebne? Jakiej wersji SQL Server 2005 potrzebujesz? Jakie korzyci dla Twojej firmy
przyniesie zastosowanie nowych rozwiza bazodanowych? Jak wykorzysta
moliwoci SQL Server 2005, aby usprawni dziaanie uywanych baz danych?
W udzieleniu odpowiedzi na powysze pytania pomoe Ci ksika SQL Server 2005.
Wycinij wszystko; dziki niej w przystpny sposb poznasz moliwoci tej platformy.
Dowiesz si, jak dziaa SQL Server 2005 oraz jakie s rnice midzy jej poszczeglnymi
wersjami. Zrozumiesz funkcjonowanie i znaczenie rnych zabezpiecze oraz poznasz
funkcje i usugi zwizane z bezpieczestwem. Zobaczysz, na czym polega zarzdzanie
firmowymi bazami danych i jak wyglda projektowanie aplikacji bazodanowych.
Przeczytasz o generowaniu analiz i raportw oraz wykonywaniu innych zada za
pomoc platformy Business Intelligence.

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Przegld wersji i moliwoci SQL Server 2005


Zabezpieczenia i kontrola nad danymi
Administrowanie korporacyjnymi bazami danych
Projektowanie aplikacji bazodanowych
Analizy i raporty w Business Intelligence
Pisanie i diagnozowanie kodu za pomoc Visual Studio
Przykadowy kod demonstrujcy stosowanie nowych funkcji
Ta ksika bdzie dla Ciebie nieocenion pomoc przy podejmowaniu decyzji
dotyczcych technologii bazodanowych.

Spis treci
Wstp ..........................................................................................................11
O autorze ....................................................................................................17
Rozdzia 1. Wprowadzenie do platformy SQL Server 2005 ...........................................19
Wersje platformy SQL Server 2005 ...............................................................22
Rnice pomidzy SQL Server Enterprise a Standard Edition ................... 22
SQL Server 2000 w wersji 64-bitowej ........................................................... 25
Nowoci w SQL Server 2005 .......................................................................... 26
Skalowalno bazy danych podstawy .........................................................30
Baza danych jako serwer aplikacji ..................................................................32
Zwikszenie dostpnoci systemw SQL Server ...........................................36
Wysoka dostpno na platformie SQL Server 2005 .....................................36
Rozszerzenie wysokiej dostpnoci
do wszystkich aplikacji bazodanowych ....................................................... 39
Dystrybucja dziennikw kopii zapasowej ...................................................... 41
Oglna dostpno danych .............................................................................42
Partycjonowanie tabel horyzontalne partycjonowanie danych ................ 43
Widoki materializowane ................................................................................. 44
Indeksowanie w trybie online ........................................................................ 45
Utrzymywanie bardzo duych baz danych .....................................................45
Rozszerzenia funkcjonalnoci wykonywania kopii zapasowej
i odzyskiwania danych ................................................................................. 46
Przegld funkcji Business Intelligence platformy SQL Server 2005 ............46
Przegld usug Analysis Services .................................................................... 48
Data Mining .................................................................................................... 50

SQL Server 2005. Wycinij wszystko

Funkcje relacyjne hurtowni danych ............................................................... 51


Ekstrakcja, transformacja i adowanie danych w SQL Server 2005 ............. 52
Reporting Services .......................................................................................... 53
Najbardziej wysublimowane funkcje SQL Server 2005 ................................54
Podsumowanie ................................................................................................56

Rozdzia 2. Co wszyscy powinni wiedzie o bezpieczestwie .......................................57


Podstawowe funkcje zabezpieczajce silnik SQL Server ..............................60
Wymuszanie polityki hase ............................................................................. 61
Zasada najmniejszych przywilejw ................................................................ 62
Kontekst wykonawczy ..................................................................................... 67
Powiadczenia ................................................................................................. 67
Certyfikaty i Secure Socket Layer .................................................................. 69
Szyfrowanie ..................................................................................................... 71
Koncepcja bezpieczestwa punktu kocowego .............................................77
Bezpieczestwo usug sieciowych .................................................................. 77
Bezpieczestwo usug Notification Services ................................................. 78
Bezpieczestwo mirroringu bazy danych ...................................................... 78
Bezpieczestwo usugi SQL Service Broker ................................................. 79
Bezpieczestwo kodu zarzdzanego ...............................................................80
Bezpieczestwo usugi Analysis Services ......................................................81
Bezpieczestwo na poziomie kostki ............................................................... 84
Bezpieczestwo na poziomie wymiaru .......................................................... 84
Bezpieczestwo na poziomie komrki ........................................................... 84
Bezpieczestwo struktury i modelu drenia danych oraz rda danych ... 85
Dostp Analysis Services do procedur skadowanych CLR .......................... 85
Funkcje bezpieczestwa usugi SQL Server Integration Services ...............86
Bezpieczestwo na poziomie pakietu ............................................................ 86
Role bazy danych w usudze SSIS ................................................................. 87
Zabezpieczanie rodowiska operacyjnego ..................................................... 87
Podpisywanie pakietw certyfikatami ............................................................ 88
Szyfrowanie pakietw SSIS ............................................................................ 88
Bezpieczestwo usugi Reporting Services ................................................... 89
Zabezpieczanie serwera ..................................................................................90
Usuga SQL Browser Service ......................................................................... 91
SQL Server Configuration Manager .............................................................. 92
Narzdzie SQL Server Surface Area Configuration ...................................... 93
Podsumowanie ................................................................................................95
Rozdzia 3. Korporacyjne zarzdzanie danymi ..............................................................97
SQL Server Management Studio ...................................................................99
Stan poczenia lub rozczenia .................................................................... 101
Object Explorer ............................................................................................ 102
Tworzenie bazy danych ................................................................................ 103
Tworzenie tabel ............................................................................................. 103

Spis treci

Query Editor ................................................................................................. 104


Niemodalne okna dialogowe ........................................................................ 104
Dostosowywanie SQL Server Management Studio .................................... 106
Projekty i rozwizania zwizane z SQL Server Management Studio ......... 106
Pomoc ............................................................................................................ 108
Zarzdzanie infrastruktur SQL Server 2005 ..............................................108
Migawka bazy danych ................................................................................... 110
Co nowego w programie instalacyjnym? ...................................................... 111
Integracja z programem Dr Watson ............................................................. 113
Narzdzia do zarzdzania operacyjnego ......................................................114
SQL Computer Manager .............................................................................. 114
SQL Server Agent ......................................................................................... 115
Funkcje zdalnego zarzdzania platform SQL Server 2005 ........................116
SQLCMD ...................................................................................................... 117
SQL Server Management Objects ............................................................... 118
Windows Management Instrumentation ..................................................... 118
Monitorowanie SQL Server .........................................................................119
Monitoring reaktywny .................................................................................. 120
Monitoring proaktywny ................................................................................ 125
Zarzdzanie bardzo duymi bazami danych .................................................130
Partycjonowanie tabel i indeksw ................................................................ 130
Rozszerzenia replikacji SQL Server .............................................................135
Replikacja peer-to-peer ................................................................................ 137
Oracle Publication ......................................................................................... 138
Uaktualnienie replikacji opartej na sieci WWW ......................................... 138
Wydajno i skalowalno ............................................................................... 139
Wysoka dostpno dla wszystkich ..............................................................140
Rozwizania zapewniajce wysok dostpno ........................................... 140
Oglna dostpno danych ...........................................................................149
Izolacja migawki ............................................................................................ 150
Widoki indeksowane .....................................................................................152
Common Language Runtime i administrator baz danych ...........................153
Jak gboka jest integracja? .......................................................................... 153
Business Intelligence i administrator baz danych .......................................156
Podsumowanie ..............................................................................................157

Rozdzia 4. Funkcje do projektowania baz danych ......................................................159


Integracja z Visual Studio .............................................................................160
Integracja z .NET Framework .....................................................................162
SQL Server jako rodowisko uruchomieniowe ............................................ 163
Wybr pomidzy SQL transakcyjnym a kodem zarzdzanym .................... 164
Typy danych zdefiniowane przez uytkownika ........................................... 165
Funkcje uytkownika .................................................................................... 166
Funkcje agregujce definiowane przez uytkownika .................................. 166

SQL Server 2005. Wycinij wszystko

SQL Server Manager Provider .....................................................................167


Zarzdzane typy SQL ................................................................................... 168
Technologia XML .........................................................................................170
Po co wykorzystywa relacyjne bazy danych
do przechowywania danych w formacie XML? ........................................ 170
Wybr technologii XML ............................................................................... 172
Typ danych XML .......................................................................................... 174
Klauzula FOR XML ...................................................................................... 176
OPENXML ................................................................................................... 177
Obsuga XQuery ............................................................................................ 177
Rozwinicia DML ......................................................................................... 178
Native XML Web Services ........................................................................... 178
WSDL ........................................................................................................... 180
SQL Server jako platforma serwera aplikacji ...............................................181
SQL Service Broker ...................................................................................... 182
Notification Services ..................................................................................... 187
SQL Server Mobile Edition .........................................................................195
Ustawienia jzykowe w SQL Server 2005 ...................................................196
Wyszukiwanie penotekstowe ......................................................................198
Zapytania serwerw poczonych ................................................................. 199
Przeszukiwanie rnych kolumn .................................................................. 199
Specyfikacja jzyka w zapytaniu ................................................................... 199
SQL Server Express .....................................................................................201
Integracja z Visual Studio ............................................................................. 202
Czy SQL Server Express wystarczy? ........................................................... 203
Ograniczenia platformy SQL Server Express .............................................. 205
Instalacja i konfiguracja ................................................................................ 206
Protokoy obsugiwane przez SQL Server Express ..................................... 208
Podsumowanie ..............................................................................................209

Rozdzia 5. Przegld funkcji Business Intelligence ......................................................211


Przegld Analysis Services ...........................................................................213
Architektura Analysis Services ..................................................................... 214
Ujednolicony model wymiarowy .................................................................. 216
Widoki rda danych ................................................................................... 219
Kreator kostki ................................................................................................ 220
Business Intelligence Wizard ....................................................................... 221
Lokalizacja reprezentacji danych ................................................................. 222
Gdzie przechowuje si UDM? ..................................................................... 223
Modele dostpu do danych OLAP ............................................................... 224
BI czasu rzeczywistego i proaktywne buforowanie ..................................... 224
Analiza przechowywania danych w usudze Analysis Services ................... 227
Kluczowe wskaniki wydajnoci ................................................................... 229
Jzyk MDX (Multidimensional Expression) ................................................ 230

Spis treci

Bezpieczestwo usugi Analysis Services .................................................... 231


Funkcje relacyjne dla hurtowni danych ....................................................... 231
Drenie danych w SQL Server 2005 .......................................................... 234
SQL Server Integration Service ...................................................................236
Architektura SSIS ......................................................................................... 237
Przepyw danych ........................................................................................... 238
Kontrola przepywu danych nowe zastosowanie SSIS ........................... 241
Obsuga bdw w SSIS ............................................................................... 242
Rozmieszczanie pakietw ............................................................................. 243
Skalowanie SSIS wybr pomidzy 32-bitow
a 64-bitow platform sprztow ............................................................... 243
Kompatybilno wstecz ................................................................................ 245
SQL Server Reporting Services ...................................................................245
Architektura usugi Reporting Services ....................................................... 247
Projektowanie raportw ................................................................................ 248
Projektowanie modelu raportu ..................................................................... 249
Kreator raportu ............................................................................................. 249
Definiowanie raportu .................................................................................... 251
Kontrolki do przegldania raportu ............................................................... 251
Grupa wykonania raportu ............................................................................. 251
Zarzdzanie raportami .................................................................................. 252
Meneder konfiguracji Reporting Services ................................................. 253
Wdraanie mechanizmw raportowania ...................................................... 254
Rozwaania na temat Reporting Services .................................................... 254
Zarzdzanie i rozwijanie aplikacji Business Intelligence ............................255
SQL Server Management Studio ................................................................. 255
Business Intelligence Studio Development ................................................ 256
Administrator baz danych Business Intelligence ........................................ 256
Podsumowanie ..............................................................................................258

Rozdzia 6. Kod ............................................................................................................259


Obsuga wyjtkw transakcji ........................................................................260
Model programistyczny duych obiektw ...................................................260
Nowe funkcje analityczne .............................................................................261
Warunek TABLESAMPLE ..........................................................................263
Nowy operator APPLY .................................................................................263
Operatory PIVOT i UNPIVOT ....................................................................264
Zapytania rekurencyjne ................................................................................266
Rozszerzenia operatora TOP ........................................................................269
Wyzwalacze DDL .........................................................................................271
DML Output .................................................................................................273
Rozszerzenia obsugi kolejkowania ..............................................................274
Widoki indeksowane .....................................................................................275
Kolumny wyliczane w sposb cigy ............................................................277
Synonimy ......................................................................................................278

10

SQL Server 2005. Wycinij wszystko

SQL transakcyjny a kwestia bezpieczestwa ...............................................279


Zastosowanie rl ............................................................................................ 282
Szyfrowanie i certyfikaty ............................................................................... 283
Praca z zestawami .........................................................................................285
Praca z XML .................................................................................................286
Usugi sieciowe XML ................................................................................... 286
Widok Dynamic Management ......................................................................287
Wyczanie niektrych funkcji bazy danych ................................................289
Partycjonowanie tabeli .................................................................................290
Podsumowanie ..............................................................................................293

Dodatek A Informacje o systemie SQL Server 2005 ....................................................295


Dodatek B Tabele systemowe i widoki w SQL Server 2005 ........................................301
Dodatek C Funkcje wbudowane w SQL Server ...........................................................305
Skorowidz .................................................................................................307

ROZDZIA 4.

Funkcje do projektowania
baz danych

W tym rozdziale omwi zestaw funkcji, z jakimi projektanci baz danych s zazwyczaj zaznajomieni. Administratorzy baz danych mog skania si do pominicia tego zagadnienia, ja jednake tak nie postpi. Zmiany, ktre wprowadzono w prezentowanej wersji SQL Server, mona po prostu opisa jako ponowne
opracowanie struktur sucych do projektowania nowych klas aplikacji. W SQL
Server 2005 rozszerzalno caociowej platformy baz danych zostaa znacznie
zwikszona. Moliwoci SQL Server w zakresie obsugi wsplnego rodowiska
uruchomieniowego (ang. Common Language Runtime CLR) mog spowodowa
oszoomienie. Takich elementw jest wicej. Wprowadzenie kodu zarzdzanego
do SQL Server oznacza wiksze moliwoci integracji dla rozwoju pakietw
programw i niestandardowych aplikacji. Zasadniczo platforma SQL Server
skada si z trzech warstw.
Pierwsz warstw stanowi podstawowe mechanizmy, takie jak SQL

Server Engine SQL Server.exe.


Drug warstw jest szkielet. Std interfejsy uzyskuj dostp do

poszczeglnych komponentw. Ta warstwa jest warstw prywatn


firmy Microsoft.

160

Rozdzia 4. Funkcje do projektowania baz danych

W trzeciej warstwie moemy znale zestaw programw dostarczonych

przez Microsoft, wicych interfejs aplikacji z obiektami SQL Server.


SQL Server 2005 zapewnia nowy zakres funkcjonalnoci, wczajc w to
usugi Analysis Services i Replication, jak rwnie dotychczasowe
elementy platformy SQL Server.
Deweloperzy mog pracowa z trzeci warstw opisywanej architektury bez korzystania z interfejsu uytkownika. Oznacza to moliwo uywania takich elementw jak usuga SQL Server Integration Service do programowego przenoszenia danych. Mona tworzy usugi, ktre bd zarzdzay kopiami zapasowymi
caego serwera baz danych, nie korzystajc przy tym z programu SQL Management Studio. W rzeczywistoci najlepszym sposobem na zaprojektowanie
aplikacji SQL jest skorzystanie z interfejsu uytkownika w celu utworzenia podstawowego szkieletu, a nastpnie opisanie skryptami caej aplikacji.
KRTKI PRZEGLD: FUNKCJE SQL SERVER DLA PROJEKTANTW
SQL Server 2005 oferuje projektantom baz danych duo nowych udogodnie.
Projektowanie obiektw bazy danych w jzykach platformy .NET. Mona pisa
obiekty proceduralne, zawierajce funkcje, procedury i wyzwalacze, w takich
jzykach, jak C# i VB.NET.
Nowy zestaw obiektw kodu zarzdzanego dla rozszerzenia i pracy z obiektami
SQL Server.
Projektowanie i uruchamianie programu zostao zintegrowane ze rodowiskiem
Visual Studio. Pozwala to projektantom na uywanie tych samych narzdzi
zarwno do tworzenia obiektw baz danych i skryptw, jak i do pisania
komponentw i usug .NET.
Przechowywanie dokumentw w jzyku XML (ang. Extensible Markup Language),
tworzenie zapyta XML i zwracanie wynikw zapyta w postaci dokumentw XML.
SQL Service Broker wprowadza moliwo tworzenia aplikacji bazodanowych
zorientowanych na usugi (SOA).

Integracja z Visual Studio


Dla administratorw czy projektantw baz danych Visual Studio .NET 2005
stanowi ogromny krok naprzd w pracy z bazami danych. Microsoft zawsze zapewnia lepsz obsug wasnych baz danych przykadowo, w przypadku
SQL Server wyglda to lepiej ni dla IBM DB2. Dziki rwnoczesnemu utworzeniu platformy SQL Server 2005, .NET Framework 2.0, ASP.NET 2.0 i na-

Integracja z Visual Studio

161

rzdzi do projektowania aplikacji, Microsoft skutecznie zsynchronizowa lini


swoich produktw. Poszczeglne wersje .NET Framework mog funkcjonowa
rwnoczenie w tym samym systemie operacyjnym, zatem wprowadzanie nowych produktw powinno przebiega bezproblemowo i nie wymaga usuwania
poprzedniej wersji danego oprogramowania.
W poprzedniej wersji SQL Server trzeba byo samodzielnie zaprojektowa pakiety usug transformacji danych (ang. Data Transformation Services DTS),
kostki Analysis Services i moduy transakcyjnego SQL, uywajc odpowiednich
narzdzi dla kadej technologii. W SQL Server 2005 mona wykorzystywa Visual Studio do projektowania wszystkich elementw i instalowa ca aplikacj
jednym klikniciem myszy. Dziki Visual Studio z jego wszystkimi narzdziami
dla deweloperw uzyskujemy liczne korzyci.
Projektowanie zespoowe. Dziki kontroli systemu i rde projektu

mona monitorowa cay proces budowy aplikacji, poczwszy od


moduw bazy danych, na interfejsie uytkownika skoczywszy.
Narzdzie to uatwia rwnie kontrol nad poszczeglnymi wersjami
tworzonej aplikacji.
Uruchamianie i wdraanie. Visual Studio obsuguje teraz uruchamianie

procedur skadowanych i kodu zarzdzanego w tym samym procesie


usuwania bdw. W celu instalacji nowej aplikacji wystarczy skorzysta
z funkcji instalacji wtedy instalacja odbywa si za pomoc jednego
kliknicia.
Dowiadczenie uytkownika. Nowe SQL Server Management Studio

i Business Intelligence Development Studio zostay zaprojektowane na


podstawie interfejsu uytkownika Visual Studio. Funkcjonalno pomocy
zostaa zintegrowana w ten sposb, aby projektant mg skorzysta z SQL
Sever i Visual Studio Books Online z poziomu jednej aplikacji.
Klasycznym uytkownikom baz danych SQL Server zapewnia wszystkie potrzebne narzdzia poprzez SQL Server Management Studio. Typowy projektant
rozwiza Business Intelligence (BI)1 moe wykonywa swoj prac na poziomie serwera i korzysta z usug Analysis Services, hurtowni danych, SQL Server
Integration Services oraz Reporting Services za pomoc Business Intelligence
Development Studio. Mona by si zastanawia, jak bdzie wygldao projektowanie bazy danych SQL Server, Business Intelligence albo aplikacji ASP.NET
z wykorzystaniem Visual Studio 2005? Jeeli wszystkie komponenty SQL Server
zostay zainstalowane na komputerze razem z Visual Studio 2005, do dyspozycji
1

Business Intelligence oprogramowanie wspomagajce procesy podejmowania decyzji poprzez


analiz danych zgromadzonych w systemach informatycznych. rdo: http://pl.wikipedia.org/wiki/
Business_intelligence przyp. tum.

162

Rozdzia 4. Funkcje do projektowania baz danych

pozostaj wszystkie narzdzia, a Visual Studio jest rozszerzone o now moliwo projektowania komponentw SQL Server. Niestety, nie ma moliwoci
tworzenia aplikacji w C# za pomoc Business Intelligence Development Studio.
Warto teraz zapozna si z najczciej omawian funkcj SQL Server 2005, zapewniajc moliwo wsppracy z .NET Framework.

Integracja z .NET Framework


Wydawa by si mogo, e klienci Microsoftu s jednymi z bardziej przedsibiorczych i kreatywnych ludzi w dziedzinie projektowania aplikacji. Kiedy menederowie produktu i menederowie projektu z tej firmy rozmawiaj z klientami o ich aplikacjach, czsto wypytuj o sposb wykorzystywania technologii
SQL Server. Czsto te sysz gosy oburzenia klientw na wprowadzanie nowych funkcji projektowania aplikacji do produktw lub jzykw Microsoftu. Jeeli baza danych prezentuje sob pewne moliwoci, osoby takie uwaaj si za
ekspertw. Tymczasem warto wiedzie, e wdraajc SQL Server jako rodowisko
uruchomieniowe, wchodzimy w now er kreatywnoci.
Dziki integracji z CLR moemy pisa wasne procedury skadowane, wybierajc do tego celu dowolny jzyk .NET Framework. Jzyki programowania
Microsoft Visual Basic .NET i C# umoliwiaj tworzenie konstrukcji zorientowanych obiektowo, a take zapewniaj strukturaln obsug wyjtkw, tablic, przestrzeni nazewniczych i klas. Dodatkowo .NET Framework dostarcza
tysicy wbudowanych klas i metod, ktre mog by atwo implementowane po
stronie serwera. Wiele zada, ktre byy niewygodne lub trudne do wykonania
za pomoc kodu transakcyjnego SQL, mona zrealizowa za pomoc kodu zarzdzanego. Dodatkowo s dostpne dwa nowe typy danych zoenia i typy
definiowane przez uytkownika. Teraz mona lepiej wykorzysta swoj wiedz
i umiejtnoci nabyte podczas pisania kodu poredniego. W skrcie rzecz ujmujc, SQL Server 2005 pozwala na rozwijanie bazy danych, aby moga atwiej
wykonywa odpowiednie obliczenia i operacje po stronie wewntrznej.
Taka integracja SQL Server z CLR daje kilka wanych korzyci.
Poprawa zabezpiecze i ochrona dla nietypowych typw danych

z wykorzystaniem kodu zarzdzanego poprzez CLR.


Funkcje i funkcje agregujce definiowane przez uytkownika. S to dwa

nowe obiekty baz danych, ktre rozszerzaj moliwoci przechowywania


i wykonywania zapyta. S dostpne dziki wsppracy z CLR.

Integracja z .NET Framework

163

Blisza wsppraca pomidzy baz danych a logik aplikacji. W bazie

danych mona umieci wicej logiki biznesowej, ktra moe by


obsugiwana przez rozwinite komponenty zarzdzania baz danych.
Piszc kod, ktry ma bardziej zoon logik i jest lepiej dopasowany do zada
obliczeniowych, mona oprze si na integracji z CRL i korzysta z takiego jzyka programowania, jak VB .NET czy C#. Dodatkowo Visual Basic .NET i C#
umoliwiaj wykorzystywanie pewnych waciwoci programowania zorientowanego obiektowo, takich jak hermetyzacja, dziedziczenie i polimorfizm. Z atwoci mona zorganizowa powizany kod w klasy i przestrzenie nazewnicze.
Oznacza to, e pracujc z du iloci kodu, moemy atwiej go organizowa
i utrzymywa. Taka logiczna i fizyczna organizacja kodu w zestawy (ang. assemblies) i przestrzenie nazewnicze jest wielk korzyci. Pozwala lepiej odnajdywa i czy rne czci kodu w implementacj duej bazy danych.

SQL Server jako rodowisko uruchomieniowe


W przeciwiestwie do COM (ang. Component Object Model) i rozszerzonych procedur skadowania, umieszczenie na serwerze SQL Server 2005 kodu zarzdzanego, oddziaujcego na baz danych, nie stwarza zagroe. rodowisko .NET Framework uwzgldnia kilka istotnych aspektw wykorzystywania kodu zarzdzanego.
Kod .NET wykorzystuje zabezpieczenia zapewniane przez kod dostpu. Zastosowano tu polityk bezpieczestwa opart na gwnym uruchomieniu kodu.
Naley pamita, e zazwyczaj istotn rol w tym zakresie peni konto uytkownika. Przywileje gwnego uytkownika wpywaj zarwno na sam kod, jak
i na miejsce, z ktrego zosta zaadowany. Po wczytaniu zestawu do pamici, jego
moliwoci s automatycznie ograniczane do samego uruchomienia. Proces pamici i rodowisko systemowe, ktre zaadowao zestaw, rwnie moe go ogranicza. Uywajc metafory, zestaw jest zmuszony do zabawy tylko w jednej piaskownicy (ang. sandbox). W SQL Server 2005 ta koncepcja zostaa przeksztacona
do tzw. AppDomain. AppDomain izoluje wszystkie zasoby wykorzystywane
przez SQL Server, ktrych wymaga kod .NET. Dzieje si tak nawet wtedy, gdy
SQL Server i kod .NET znajduj si w tej samej przestrzeni procesowej. AppDomain chroni SQL Server przed niewaciwym lub zoliwym uyciem poszczeglnych elementw zestawu, takich jak procedury skadowane.
Podczas instalacji SQL Server 2005 mona zauway, e nowa architektura zabezpiecze domylnie wycza zainstalowane funkcje. Co wicej, administrator bazy
danych albo administrator systemowy musi jawnie przyzna uytkownikowi prawo
do utworzenia zestawu w SQL Server 2005. Tworzenie zestawu w rzeczywistoci
jest zaadowaniem wstpnie skompilowanego zapytania DDL do bazy danych.

164

Rozdzia 4. Funkcje do projektowania baz danych

Zestaw jest przechowywany w wierszu tabeli bazy danych. Aby sprawdzi, ktre
zestawy zostay zaadowane, naley przejrze katalog sys.assemblies. Po zaadowaniu zestawu nastpuje ustawienie atrybutu polecenia DDL verbiage w celu
ustalenia stanu bezpieczestwa tego zestawu. Moliwe s trzy podstawowe stany:
SAFE. Ten tryb dostpu przypisuje zestaw do procesu SQL Server.
External_Access. W ten sposb zestaw moe uzyskiwa dostp

do systemu operacyjnego i korzysta z zasobw systemu plikw.


UNSAFE. To najmniej bezpieczny tryb. Zezwala zestawowi na szeroki,

potencjalnie stwarzajcy zagroenia dostp do instancji bazy danych


i obszaru systemu operacyjnego, wic nie jest polecany do uytku.

Wybr pomidzy SQL transakcyjnym


a kodem zarzdzanym
Podczas tworzenia procedur skadowanych, wyzwalaczy i funkcji uytkownika
trzeba podj decyzj, czy korzysta z kodu SQL transakcyjnego, czy z jakiego
jzyka programowania kompatybilnego z .NET Framework, takiego jak Visual
Basic .NET czy C#. Odpowied na to pytanie zaley od konkretnej sytuacji.
W niektrych przypadkach warto uy SQL transakcyjnego, w innych kodu
zarzdzanego.
Jzyk SQL jest najlepszy w sytuacjach, kiedy kod przede wszystkim uzyskuje
dostp do danych, jednak zastosowana logika proceduralna jest bardzo niewielka albo nawet w ogle jej nie ma. Jzyki programowania kompatybilne z .NET
s najodpowiedniejsze dla intensywnie wykorzystywanych funkcji procedur,
ktre cechuje zoona logika, lub dla sytuacji, kiedy trzeba skorzysta z zalet biblioteki klas .NET Freamework.
Kod zarzdzany jest bardziej efektywny ni SQL transakcyjny przy przetwarzaniu liczb i zarzdzaniu skomplikowan logik wykonawcz. Zapewnia rozszerzon obsug cigw znakowych i wyrae regularnych. Wszystkie operacje,
poczwszy od rozwinitych funkcji matematycznych, poprzez operacje na datach, uzyskiwanie dostpu do zasobw systemowych czy plikw, zaawansowanych algorytmw sortujcych, przetwarzanie obrazw, a na przetwarzaniu danych
w formacie XML skoczywszy, s prostsze do wykonania za pomoc zarzdzanych procedur skadowanych, funkcji i funkcji agregujcych. Wraz z .NET
Framework mona rozszerzy typy i funkcje dostpne w SQL Server.

Integracja z .NET Framework

165

Typy danych zdefiniowane przez uytkownika


Typy danych definiowane przez uytkownika, ktre wprowadzono w SQL Server 2000, nie byy atwe w stosowaniu i niewiele byo informacji na ten temat.
Tworzenie i korzystanie z typw danych uytkownika we wczeniejszych wersjach nie byo trudne, ale miao ograniczon uyteczno. Zostao to zmienione
w SQL Server 2005. Nowe typy danych zdefiniowane przez uytkownika (ang.
User-defined data types UDT) pozwalaj na okrelenie abstrakcyjnych typw
danych w dowolnym jzyku obsugiwanym przez .NET CLR. Takie typy danych mog mie skomplikowan struktur, a ich zachowanie jest zdeterminowane poprzez metody, pola i waciwoci klasy zdefiniowane w zestawie .NET.
UDT s mocno zintegrowane z systemem typw i silnikiem SQL Server i mog
by wykorzystane w kadym kontekcie, w jakim wbudowane typy s dozwolone.
Serwer pozwala na indeksowanie, replikacj i adowanie duej iloci UDT.
Typy danych zdefiniowane przez uytkownika mona wykorzystywa podczas
definiowania kolumn w tabeli, w kodzie funkcji lub argumentach procedur
skadowanych. Takie dane mog te by zmiennymi w funkcjach lub procedurach skadowanych. Wyraenia zawierajce UDT mog by stosowane w kontekcie zapytania SQL transakcyjnego. Mimo e w tej ksice nie bd zagbia
si w tematyk UDT, administrator baz danych musi wiedzie, w jaki sposb odczyta kod VB .NET albo C#, aby zrozumie dziaanie UDT. UDT musz by
skonstruowane w pewien okrelony sposb. Projektanci znajcy obiekty Struct
mog tworzy UDT w atwiejszy sposb. Podczas tworzenia UDT trzeba skonkretyzowa ponisze deklaracje.
Naley wyspecyfikowa SqlUserDefiniedTypeAttribute. W tabeli 4.1

przedstawiem wszystkie potrzebne atrybuty.


Trzeba okreli atrybut Serializable.
Naley zaimplementowa interfejs IsNullable w klasie lub strukturze,
tworzc pust metod public static (albo shared w Microsoft
Visual Basic). SQL Server jest domylnie ustawiony jako null-aware.

Jest to niezbdne podczas wykonywania kodu, aby dane typu UDT


zostay rozpoznane z wartoci pust.
UDT musz zawiera metody konwersji public state (albo shared)
Parse i ToString, ktre umoliwiaj przeksztacenie do cigu znakowego

reprezentujcego obiekt i analiz jego skadni.


Naley zapewni metody odczytu i zapisu w klasach, w ktrych

wyspecyfikowano format serializacji uytkownika. UDT zdefiniowane


w klasie musz mie publiczny bezargumentowy konstruktor. Mona
opcjonalnie utworzy dodatkowy, przeciony konstruktor.
Trzeba wyeksponowa elementy danych jako publiczne pola lub

waciwoci procedury.

166

Rozdzia 4. Funkcje do projektowania baz danych

Tabela 4.1. Waciwoci atrybutu SqlUserDefinedTypeAttribute


Waciwo

Opis

Format

Okrela format serializacji, ktry moe przybiera warto Native


lub UserDefined, zalenie od typu danych UDT.

MaxByteSize

Maksymalny rozmiar instancji w bajtach. Naley zdefiniowa


MaxByteSize z okrelonym formatem serializacji UserDefined.

IsByteOrdered

Warto logiczna (Boolean), ktra okrela, jak SQL Server wykonuje


porwnania binarne UDT.

ValidationMethodName

Metoda wykorzystywana do sprawdzania poprawnoci instancji tego typu.

IsFixedLength

Warto logiczna, ktra okrela, czy wszystkie instancje tego typu maj tak
sam dugo.

Funkcje uytkownika
Metody napisane w dowolnym jzyku programowania .NET mog zosta zarejestrowane jako funkcje uytkownika. Wprowadzone w SQL Server 2000 funkcje
uytkownika s podprogramami, ktre na wejciu akceptuj zerowe lub skalarne wartoci albo parametry tabelaryczne oraz zwracaj wartoci skalarne lub tabelaryczne. Zamy, e projektant pracuje nad aplikacj ksigow i musi zaimplementowa obliczanie podatku dochodowego, paconego przez poszczeglnych
pracownikw w cigu pewnego czasu. W tym celu projektant rejestruje metod,
specjalnie napisan w C#, jako funkcj zdefiniowan przez uytkownika. Mona wtedy atwo napisa zapytania, ktre bd wykorzystywa funkcj uytkownika, suc do wyliczania podatku dochodowego pracownikw.

Funkcje agregujce definiowane


przez uytkownika
Funkcje agregujce zdefiniowane przez uytkownika (UDAggs) mona tworzy
za pomoc dowolnego jzyka .NET. UDAggs pozwalaj na zdefiniowanie dowolnych funkcji agregujcych. W tym celu wykorzystuje si wbudowane funkcje agregujce, takie jak SUM i MAX. Mona si do nich odwoywa w zapytaniach SELECT w taki sam sposb, jak do wbudowanych funkcji agregacji.
UDAggs reprezentuj inny sposb wczania skomplikowanej logiki biznesowej,
zwizanej z wykonywaniem zapyta. Proces ten zachodzi wewntrz serwera,
blisko danych. Moe by bardziej efektywny ni dostarczanie danych do rodkowej warstwy aplikacji i agregowanie ich w tym miejscu. Przy projektowaniu
UDAggs trzeba speni pewne kryteria projektowe, aby wszystko dziaao poprawnie. Ukad agregacji skada si z mechanizmu zapisujcego poredni stan

SQL Server Manager Provider

167

agregacji i mechanizmu gromadzcego nowe wartoci, ktry skada si z czterech metod: Init(), Accumulate(), Merge() i Terminate (). Podczas deklarowania UDAgg konieczne jest jawne okrelenie atrybutu SqlUserDefinedAggregate, ktry informuje SQL Server, e deklarowany typ danych dostosowuje
si do struktury UDAgg. Dwie obowizkowe waciwoci atrybutu SqlUserDefinedAggregate s wymagane przez format serializacji i s to:
waciwo Format okrela rodzaj serializacji dla kadego formatu

serializacji istnieje okrelony zestaw wymaga (zalecam sprawdzenie tej


informacji w SQL Server Books Online);
MaxByteSize jest maksymalnym rozmiarem, wyraanym w bajtach,

potrzebnym do przechowywania danych podczas oblicze. Maksymalna


dopuszczalna warto wynosi 8 000.
W celu poprawnego utworzenia i wykorzystywania UDAgg trzeba zadeklarowa
cztery funkcje. W tabeli 4.2 przedstawiem te funkcje oraz ich zastosowanie.
Tabela 4.2. Funkcje agregujce definiowane przez uytkownika
Funkcja

Opis

Init()

Pozwala procesorowi zapyta na zainicjalizowanie funkcji agregacji.

Accumulate()

Wykorzystywana do agregacji danych aduje typ danych wyspecyfikowany w nawiasie.

Merge()

Pozwala na poczenie funkcji agregacji ze sob. Jest to wane w przypadku oblicze


matematycznych, posiadajcych rne wejcia.

Terminate()

Przerywa proces agregacji i zwraca kocow warto.

Jeli chodzi o wykonywanie sumowania, przelicze i innych podstawowych funkcji matematycznych, UDAggs s duo bardziej funkcjonalne ni transakcyjny
SQL. Tak wic UDAgg mona wykorzystywa w przypadku funkcji statystycznych, geometrycznych i innych funkcji numerycznych.
Wprowadzenie UDAgg wymaga przestrzegania takich samych zasad zarzdzania i rozmieszczania, co UDT.

SQL Server Manager Provider


Projektanci, piszc procedury skadowane lub wyzwalacze, mog korzysta z rnych metod dostpu do danych zapewnianych przez ADO.NET, zoptymalizowanego dla kodu zarzdzanego i uruchamianego na SQL Server. Dostawca jest
zgodny z modelem programistycznym niemal identycznym ze standardem ADO.NET. Zarzdzany dostawca jest stosowany w zestawach, ktre wykorzystuj dane

168

Rozdzia 4. Funkcje do projektowania baz danych

SQL Server jako dane wejciowe i wyjciowe. Piszc zarzdzan procedur


skadowan, ktra uaktualnia dane w tabeli, mona zapewni dostp do bazy
danych za porednictwem dostawcy zarzdzanego. Podstawowa rnica pomidzy
ADO.NET a dostawc zarzdzanym polega na braku potrzeby podawania parametrw poczenia (ang. connection string), poniewa poczenie z baz danych jest ju ustanowione. Dostp do zarzdzanego dostawcy uzyskuje si, odwoujc si do System.Data.SQLServer.
Stosujc t zasad, mona otworzy poczenie z SQL Server. W tym celu naley napisa nastpujcy kod:
SqlConnection oConn = SqlContext.GetConnection();
SqlPipe oPipe = SqlContext.GetPipe();

Projektanci zaznajomieni z tworzeniem aplikacji ADO.NET mog doceni zalety tego samego modelu podczas dodawania logiki do obiektw bazy danych
dostpu do danych .NET. Dodatkowo, kod napisany na jednej warstwie jest atwiejszy do przenoszenia do innej.

Zarzdzane typy SQL


Microsoft SQL Server 2005 zapewnia obsug typw zarzdzanych, ktre odwouj si do dostpnych typw wbudowanych. Te typy danych, w formie parametrw dla funkcji uytkownika i procedur w jzykach .NET, takich jak VB
.NET i C#, mona wykorzystywa do wymiany informacji pomidzy jzykami
zarzdzanymi a wbudowanym systemem typw SQL Server. Co wicej, zarzdzane typy danych mog by wykorzystywane do przyczenia ich do kolumn
tabel za pomoc zarzdzanego dostawcy ADO.NET. Zarzdzane typy s zestawami typw danych, ktre z kolei s czci podstawowej biblioteki klas rodowiska uruchomieniowego .NET Runtime. W przeciwiestwie do innych typw
danych .NET Runtime, ktre nie zapewniaj takiej skadni, jak NULL awareness, zarzdzane typy charakteryzuj si tak sam skadni i zachowaniem, jak
odpowiednie wbudowane typy danych SQL Server. W porwnaniu z innymi
typami danych .NET, korzystanie z tych typw minimalizuje konieczno konwersji i utraty precyzji. Zarzdzane typy danych SQL s zdefiniowane w przestrzeni nazewniczej System.Data.SqlTypes
Jedn z technologii, w ktre Microsoft inwestuje najbardziej, jest XML. W cigu
nastpnych piciu lat wikszo gwnych produktw Microsoftu bdzie obsugiwao technologi XML. W kolejnym podrozdziale przedstawi funkcjonalno
XML w programie SQL Server 2005.

SQL Server Manager Provider

169

UWAGA: Niektre wbudowane typy danych SQL Server w zasadzie s przeksztaconymi typami danych SQL Server. W Books Online mona znale artyku:
Typy danych (silnik bazy danych). Naley pamita, e wykorzystywanie SQL Manager Provider i uzyskiwanie dostpu do bazy poprzez kod zarzdzany jest moliwe pod warunkiem, e zastosowany kod jest rozpoznawalny przez SQL Server.
Innymi sowy, typy danych, parametry i zwrcone wartoci musz mie form
odpowiedni dla SQL Server. Poszczeglne typy danych wymieniem w tabeli 4.3,
jednak nie wyszczeglniem tam typw danych uytkownika. Planujc wykorzystywanie typw danych uytkownika w swojej organizacji, warto przygotowa
podobn tabel i doczy j do dokumentacji programu. Rozdzia 6. Kod zawiera przykady sposobw uzyskiwania dostpu i zastosowania obiektw CLR.
Tabela 4.3. Mapowanie typw SQL
Typy SQL (zarzdzany dostawca)
SQLBinary

Typy natywne SQL

Typy CLR

Binary

Byte[]

Varbinary
TIMESTAMP
IMAGE
SQLInt64

BIGINT

Int64

SqlInt32

INT

Int32

SQLInt16

SMALLINT

Int16

SQLByte

TINYINT

Byte

CHAR

String

SQLString

VARCHAR
NCHAR
NVARCHAR
TEXT
NTEXT
SYSNAME
SqlDateTime

DATETIME

DateTime

SMALLDATETIME
SqlDecimal

DECIMAL

Decimal

NUMERIC
SqlDouble

FLOAT

SqlSingle

REAL

Double
Float

SqlMoney

MONEY

Decimal

SMALLMONEY
SqlGuid

UNIQUEIDENTIFIER

Guid

SqlBoolean

BIT

Boolean

170

Rozdzia 4. Funkcje do projektowania baz danych

Technologia XML
XML jest technologi, w ktr stale si inwestuje i ktra nieustannie staje si
coraz bardziej interesujca. Pierwotnie XML stanowio rozwizanie wyranie
wyartykuowanych problemw. Obecnie XML jest powszechnie wykorzystywane
poczwszy od Really Simple Syndication (RSS), a po skomplikowan integracj aplikacji, XML jest formatem przekazywania danych. XML jest z natury
samoopisujcym si jzykiem i moe zawiera moc zbioru, zatem wielu projektantw aplikacji bazodanowych stosuje XML do rozwizywania problemw wydajnoci aplikacji. W tym rozdziale przedstawi sposb wykorzystywania funkcji
XML na platformie SQL Server.

Po co wykorzystywa relacyjne bazy danych


do przechowywania danych w formacie XML?
Przechowywanie danych XML w relacyjnych bazach danych uatwia zarzdzanie danymi i ich wyszukiwanie. Bazy danych w formacie XML nie zapewniaj
tych korzyci albo nie s do koca rozwinite. SQL Server zapewnia du wydajno zapyta i atwo zarzdzania relacyjnymi danymi, wczajc w to moliwo tworzenia zapyta i modyfikowania danych XML. Pozwala to na wykorzystanie zmian dokonanych w poprzednich wersjach programu. Na przykad
techniki indeksacji, ktre w relacyjnych bazach danych s dobrze znane, zostay
rozszerzone do indeksowania danych XML. Miao to na celu zoptymalizowanie
zapyta za pomoc decyzji podejmowanych po analizie kosztw. Dane XML
mog wsppracowa z istniejcymi relacyjnymi bazami danych i aplikacjami
SQL, wic XML moe zosta wprowadzony do systemu, poniewa konieczno
modelowania danych nie powoduje zakcania pracy istniejcej aplikacji.
Poniej wyszczeglniem niektre powody, dla ktrych warto przechowywa
dane XML w relacyjnych bazach danych:
Platforma SQL Server pozwala na wygodne zarzdzanie danymi XML

z wykorzystaniem wszystkich niezbdnych funkcji, w tym systemu


zabezpiecze.
Wyszukiwanie lub modyfikacja danych XML moe zachodzi w efektywny

sposb, z uwzgldnieniem mechanizmu transakcji.


Dostp do danych XML jest dobrze zorganizowany, co jest bardzo wane

z punktu widzenia dziaania aplikacji. Na przykad mona uzyskiwa dostp


do okrelonych czci dokumentu XML lub wstawia do dokumentu
now sekcj bez zamieniania caego dokumentu.

Technologia XML

171

Aplikacje oparte na danych relacyjnych oraz SQL umoliwiaj wspprac

danych relacyjnych z danymi XML w ramach takiej aplikacji. Zastosowanie


XML uatwi zapewnienie obsugi jzykowej dla kwerend i modyfikacj
danych w aplikacji midzydomenowej.
atwo uzyska poprawne formatowanie danych XML, a zachowanie

penej zgodnoci jest moliwe dziki sprawdzeniu za pomoc XML


Schema (XSD).
SQL Server zapewnia indeksowanie danych XML dla zwikszenia

efektywnoci zapyta.
SQL Server umoliwia uzyskiwanie dostpu do danych XML za pomoc

Simple Object Access Protocol (SOAP), ADO.NET i OLE DB.


SQL Server 2005 pozwala na dokonanie wyboru spord kilku moliwoci: dane
XML mona przechowywa jako dane typu Varchar(max) lub jako dane XML.
Format Varchar(max) jest dobrym rozwizaniem, kiedy chodzi tylko o skadowanie niskiego poziomu. Jeeli potrzeby s wiksze i dane s przechowywane
poza systemem plikw, zaleca si zastosowanie typu danych XML. Typ danych
XML jest wbudowanym typem danych SQL Server ze wszystkimi cechami innych wbudowanych typw. Przyjrzyjmy si bliej typowi danych XML.
Dane XML s przechowywane we wasnej wewntrznej reprezentacji, ktra
chroni ich wewntrzn struktur, tak jak hierarchia zawartoci, ukad dokumentu, wartoci elementu i atrybutw itp. Szczeglnie chroniony jest atrybut
Information Set danych XML (wicej informacji o Information Set znajduje
si na stronie http://www.w3.org/TR/xml-infoset). Ograniczeniem typu danych
XML jest niemono zapamitywania takich informacji, jak biae znaki (ang.
white spaces), kolejno atrybutw, prefiksy przestrzeni nazewniczej i deklaracja XML. Jeeli w danej sytuacji waciwoci Information Set dokumentu
XML s niewystarczajce, naley uy typw danych sucych do przechowywania duych obiektw, takich jak Varchar(max) albo Varbinary, poniewa
zachowuj one wszystkie waciwoci dokumentu. Kolumny tego typu posiadaj
wiele znaczcych ogranicze, takich jak brak moliwoci uycia indeksw XML
dla dokumentw XML.
Dla zdefiniowanych typw danych XML (tj. typw danych XML powizanych
ze schematami XML), walidacja poschematowa (ang. Post-schema validation
Information Set PSVI), ktra dodaje informacje o typie do Information
Set, jest kodowana w wewntrznej reprezentacji danych. To znacznie zwiksza
moliwoci analizy skadni (wicej informacji na ten temat znajduje si w specyfikacji World Wide Web Consortium, W3C, na stronie http://www.w3.org/TR/
xmlschema-1 i http://www.w3.org/TR/xmlschema-2).

172

Rozdzia 4. Funkcje do projektowania baz danych

Oglnie rzecz ujmujc, niekiedy obydwa te rozwizania okazuj si przydatne.


Na przykad mona przechowywa dane XML w kolumnie typu XML i przenosi
waciwoci do kolumn relacyjnych. Zamiennie mona wykorzysta technologi
mapowania i przechowywania nierekurencyjnych czci w kolumnach o typach
rnych od XML i tylko rekurencyjnych czci w kolumnach o typach XML.

Wybr technologii XML


Wybr technologii XML (XML natywny, czyli wbudowany, lub podgld XML)
zaley przede wszystkim od poniszych uwarunkowa:
Dane XML mog by bardziej odpowiednie dla przechowywania duych

obiektw (na przykad instrukcja uytkowania produktu) lub lepiej si


nadawa do przechowywania w kolumnach relacyjnych (takich jak niewielki
element przeksztacony do postaci XML). Kady z tych wariantw
magazynowania do pewnego stopnia zabezpiecza jako dokumentu.
Wybr odpowiedniejszego wariantu przechowywania danych zaley od

sposobu i granic wykonywania zapyta na danych XML. Obsuga dobrze


zorganizowanych zapyta danych XML, uwzgldniajcych takie
mechanizmy, jak przewidywalne szacowanie wzw XML, zaley
od wybranego sposobu magazynowania danych.
Indeksowanie danych XML moe przyspieszy wykonywanie zapyta

XML. Opcje indeksacji rni si zalenie od opcji przechowywania


danych, wic trzeba dokona odpowiedniego wyboru, aby zoptymalizowa
dziaanie aplikacji.
Niektre procesy wymagaj dobrze zorganizowanej modyfikacji danych

XML (na przykad dodawanie nowej sekcji do dokumentu), inne tego


nie wymagaj (na przykad zawarto strony WWW). Obsuga polece
DDL moe by istotna dla aplikacji.
Dane XML mog by opisane za pomoc schematw, ktre mog, ale

nie musz, by schematami dokumentw XML. Obsuga schematw


zwizanych z XML zaley od wyboru technologii XML.

Typ danych Native XML


Przechowywanie danych w formacie Native XML jest uyteczne w przypadku,
kiedy dokumenty XML posiadaj rn struktur lub jeli ich schematy s zbyt
rnorodne czy skomplikowane, aby je opisa za pomoc struktury relacyjnej.
W tabeli 4.4 przedstawiem powizania pomidzy typami danych SQL Server.

Technologia XML

173

Tabela 4.4. Porwnanie kolumn Varchar i XML


Funkcjonalno

Varchar()

Typ danych XML

Ochrona struktury dokumentu XML

Information Set

Nieznany schemat

Znany schemat

Indeks XML

Zapytanie wewntrz XML


adowanie duej iloci danych

X
X

Uycie XPath

X
X

Widoki XML
Aby utworzy widok XML (ang. XML View) trwaych danych, naley zdefiniowa powizania pomidzy schematami XML a tabelami w bazie danych. Widoki
XML mog suy do zapeniania tabel podstawowych technik masowego adowania danych (ang. bulk load), mona te odpytywa widok XML, korzystajc
z XPath 1.0. Taka kwerenda jest tumaczona na zapytanie SQL do odpowiedniej
tabeli. Podobnie s wykonywane uaktualnienia tych tabel. Taka technologia okazuje si uyteczna, kiedy trzeba zapewni model programowania oparty na
XML, ktry korzysta z widoku XML podczas uzyskiwania dostpu do danych
relacyjnych. Istniej schematy, ktre mona wykorzysta do pracy z danymi
XML (takie jak XSD czy XDR XML-Data Reduced), oferowane przez zewntrznych dostawcw. Dodatkowo warto wspomnie, e widoki XML s przydatne w nastpujcych sytuacjach:
kolejno danych jest nieistotna lub dane potrzebne do zapytania nie s

rekurencyjne albo te jest znana maksymalna liczba rekurencji w gb;


istnieje potrzeba wyszukania lub zmodyfikowania danych poprzez widok

XML za pomoc XPath 1.0;


istnieje potrzeba masowego adowania danych XML i przeniesienia ich

do odpowiednich tabel za pomoc widoku XML.


W powyszych sytuacjach dane relacyjne s przechowywane w postaci XML,
co ma na celu atwiejsz wymian danych, usug sieciowych i danych XML
z ustalonym staym schematem (wicej informacji znajduje si pod adresem
http://msdn.microsoft.com/SQLXML).

174

Rozdzia 4. Funkcje do projektowania baz danych

Typ danych XML


Twrcy SQL Server 2005 wprowadzili nowy skalarny typ danych XML, ktry
jest wariantem typu binary large object (BLOB). Typ danych XML w SQL Server 2005 spenia wymogi okrelone w specyfikacji W3C dla typu danych XML,
a nawet wychodzi poza specyfikacj (konstrukcje modyfikacji danych XML).
XML moe modelowa skomplikowane dane, nie ograniczajc si tylko do skalarnych typw danych obsugiwanych przez SQL Server. Tak wic takie typy
danych, jak wbudowane, oparte na cigach znakowych Char lub Varchar, nie
wystarcz do penego i efektywnego wykorzystania wielu cennych waciwoci
XML. Przykadowo, jeeli XML jest przechowywany jako cig znakowy, mona
wstawia lub wybiera cay dokument albo nawet uzyska z niego cig bajtw,
ale nie mona przeszukiwa zawartoci samego dokumentu. Dziki nowemu
typowi danych XML, platforma SQL Server 2005 pozwala na przeszukiwanie
czci dokumentu XML, sprawdzenie, czy dokadnie odpowiada on schematowi
XML, a nawet zmodyfikowanie zawartoci dokumentu XML. Pozwala take na
integracj standardowych, relacyjnych danych z danymi nieustrukturyzowanymi
lub wstpnie ustrukturyzowanymi dokumentami XML, w sposb, jaki nie by
moliwy przy uyciu SQL Server 2000. Platforma SQL Server 2005 przechowuje dane XML jako dane typu BLOB w wewntrznej reprezentacji, ktra
umoliwia efektywn analiz i pewn kompresj.
Kolekcja schematw XML moe by powizana z kolumnami typu XML. Spowoduje to sprawdzenie poprawnoci dla pocze, wstawiania, uaktualniania i wpisywania wartoci wewntrz przechowywanych danych XML, jak rwnie optymalizacj przechowywania i przetwarzania zapyta. SQL Server 2005 zapewnia
take kilka polece DDL sucych do zarzdzania schematami na serwerze. Typ
danych XML posiada metody query(), exist(), value(), nodes() oraz
modify() ktre implementuj wany podzbir specyfikacji XML Query
(XQuery).

Niezdefiniowane, zdefiniowane i ograniczone typy danych XML


Typ danych SQL Server XML zaprojektowano zgodnie ze standardem ISO
SQL-2003 dla danych XML. Tak wic, moe on przechowywa dobrze zorganizowane dokumenty XML 1.0, jak rwnie fragmenty zawartoci dokumentw
XML z wzami tekstowymi oraz pomocnicze numery szczytowych elementw
w niezdefiniowanych kolumnach XML. System sprawdza sposb formatowania
danych, nie wymaga powizania kolumn ze schematami XML i odrzuca dane,
jeeli nie s odpowiednio sformatowane. Dotyczy to take niezdefiniowanych
zmiennych i parametrw XML.

Technologia XML

175

Schemat XML opisujcy dane XML moe zosta powizany z kolumn XML,
dziki czemu powstanie zdefiniowana kolumna XML. Schemat XML, wykorzystany do sprawdzenia poprawnoci danych, przeprowadza podczas kompilacji
zapytania i polece DDL dokadniejsze analizy ni niezdefiniowany XML
optymalizuje przechowywanie danych i przetwarzanie zapyta.
Definiowane kolumny XML, parametry i zmienne mog przechowywa dokumenty XML lub ich zawarto. Trzeba zadeklarowa odpowiedni warto flagi
(DOCUMENT lub CONTENT). Co wicej, naley te dostarczy kolekcj schematw
XML. Trzeba ustawi warto DOCUMENT, jeeli kade wystpienie XML ma
tylko jeden element szczytowy w innym przypadku musimy uy CONTENT.
Kompilator zapyta stosuje flag DOCUMENT do sprawdzania typu podczas kompilacji kwerendy okrelajcej szczytowe elementy. Dodatkowo do opisania kolumny XML mona uy wizw relacyjnych (kolumna lub wiersz) dla zdefiniowanych bd niezdefiniowanych kolumn typw danych XML.

Indeksowanie kolumn typu dane XML


Indeksy XML mona tworzy na kolumnach danych typu XML. Wszystkie znaczniki, wartoci i cieki s indeksowane za pomoc instancji XML w tej kolumnie,
ktra optymalizuje przetwarzanie zapyta. Aby indeksy XML przynosiy korzyci, naley speni nastpujce warunki:
Zapytania na kolumnach XML powinny by wykonywane na co dzie.

Trzeba wzi pod uwag koszty utrzymania indeksw XML podczas


modyfikacji danych. Mona popatrze na plan, eby zrozumie wpyw
indeksw XML na przetwarzanie zapyta.
Wartoci XML powinny by stosunkowo due, a wydobywane czci

danych stosunkowo niewielkie. Tworzenie indeksw zapobiega


rozdzielaniu wszystkich danych podczas pracy aplikacji i przynosi
korzyci w wyszukiwaniu indeksw dla wydajnego przetwarzania
zapyta.
Pierwszym indeksem kolumny XML jest podstawowy indeks XML (ang. primary).
Za jego pomoc mona utworzy drugorzdny indeks XML dla kolumny XML,
eby przyspieszy dziaanie zwykej klasy zapyta. Istniej trzy typy drugorzdowych indeksw XML.
Indeks podstawowy indeksuje wszystkie znaczniki, wartoci i cieki wewntrz
wystpienia XML w kolumnie XML. Podstawowa tabela musi mie zgrupowany
indeks dla klucza podstawowego tabeli. Klucz podstawowy jest wykorzystywany
do korelowania indeksw wiersza z tym wanie wierszem w tabeli podstawowej.
Pene wystpienia XML s uzyskiwane z kolumn XML. Wykonywane zapytania
wykorzystuj podstawowe indeksy XML, zwracajc skalarne wartoci lub poddrzewa XML.

176

Rozdzia 4. Funkcje do projektowania baz danych

Po utworzeniu podstawowego indeksu XML, mona utworzy drugorzdny indeks XML, eby przyspieszy wykonywanie rnych klas zapyta wewntrz
procesu pracy. Drugorzdne indeksy XML indeksy typu cieki, waciwoci
i wartoci przynosz korzyci, odpowiednio, zapytaniom opartym na ciece,
scenariuszom zarzdzania waciwociami i zapytaniom opartym na wartoci:
Indeks typu cieki (PATH) buduje drzewo B+ (cieka, warto) pary

dla kadego wza XML w porzdku dokumentu dla kadego wystpienia


XML w kolumnie.
Indeks typu waciwoci (PROPERTY) tworzy drzewo B+ zgrupowane

(PK, cieka, warto) pary wewntrz kadego wystpienia XML,


gdzie PK jest kluczem podstawowym tabeli podstawowej.
Indeks typu wartoci (VALUE) tworzy drzewo B+ (warto, cieka) pary

dla kadego wza porzdku dokumentu poprzez wszystkie wystpienia


XML w kolumnie.
Jeeli plan pracy zawiera cieki trudne do zdefiniowania w kolumnach XML,
dodatkowy indeks typu cieki (PATH) najprawdopodobniej przyspieszy dziaanie rodowiska pracy. Najczciej stosowanym przypadkiem jest uycie metody
Exist() dla kolumny XML w klauzuli WHERE zapytania SQL.
Jeeli rodowisko pracy stosuje rne wartoci z indywidualnych wystpie XML,
korzystajc z wyraenia cieki, pomocne moe okaza si zgrupowanie cieek
wewntrz kadego wystpienia XML w indeksie typu waciwoci (PROPERTY).
Taki scenariusz pojawia si w przypadku takich struktur danych, gdzie waciwoci obiektu s zaadowane i warto indeksu podstawowego jest znana. Jeeli
praca polega na tworzeniu zapyta o wartoci wewntrz wystpienia XML bez
znajomoci tego elementu lub nazw atrybutu, ktre zawieraj te wartoci, mona rozway utworzenie indeksu VALUE.

Klauzula FOR XML


Twrcy SQL Server 2005 wprowadzili rwnie kilka rozszerze do klauzuli FOR
XML. Klauzula FOR XML, waciwa dla SQL Server 2000, nie okrelaa sposobu
uytkowania wynikw XML na serwerze. Oczywicie, nie mona przechowywa
wynikw w formacie XML w tabeli bez zwrcenia ich najpierw do klienta lub
przypisania do zmiennej. Twrcy platformy SQL Server 2005 rozszerzyli klauzul FOR XML, zapewniajc obsug danych typu XML, co pozwala na wykorzystanie danych bezporednio na serwerze. W tym celu naley doda dyrektyw
TYPE w klauzuli FOR XML. Na przykad wynik polecenia SELECT...FOR XML
TYPE wygeneruje dane XML, ktre mog zosta przypisane lokalnie do zmiennej XML lub mog zosta wykorzystane w pniejszym poleceniu INSERT do

Technologia XML

177

wypenienia kolumny danych XML. Tryb PATH okrela ciek w drzewie


XML, gdzie powinna pojawi si warto kolumny. Opcja TYPE i opcja PATH,
wczone do klauzuli FOR XML, upraszczaj generowanie skomplikowanych danych XML i s wygodniejsze w uyciu ni zapytania FOR XML EXPLICIT. FOR
XML dziaa take z kolumnami typu XML w SQL Server 2005. Gwnymi udogodnieniami, uatwiajcymi wykorzystywanie zapyta FOR...XML, s:
moliwo wyboru przestrzeni nazw dla wstawionego schematu XSD;
moliwo tworzenia danych XML opartych na centralnym elemencie

(ang. element-centric) z wykorzystaniem czystego XML;


moliwo tworzenia gwnego elementu dla fragmentw XML w celu

ich przeksztacenia w dokument XML;


udoskonalenia w obsudze tzw. biaych spacji (ang. white spaces) oraz

moliwo zagniedania przy korzystaniu z XML auto. Mona take


zagnieda zapytania FOR XML, pozwalajc na zwikszenie elastycznoci
przygotowania dokumentw XML.
Nie bd dokadnie opisywa tego nowego mechanizmu. Zainteresowanym
Czytelnikom polecam lektur A First Look At Microsoft SQL Server 2005 for
Developers (Bob Beauchemin i in., wydawnictwo Addison Weasley Professional). Jest to znakomita pozycja omawiajca moliwoci XML w ramach SQL
Server 2005.

OPENXML
SQL Server 2000 zasadniczo obsugiwa polecenie FOR XML, umoliwiajce
tworzenie dokumentw XML, oraz polecenie OPENXML do ich otwierania. Innymi sowy, korzystajc z FOR XML, mona przeksztaci dane relacyjne do postaci XML, a korzystajc z OPENXML, mona przeksztaci XML w dane relacyjne,
dziki czemu mona utworzy poczenia SQL i wykonywa zapytania. SQL
Server 2005 zwiksza funkcjonalno polecenia OPENXML. Jako dodatek do typw danych XML dodano obsug kilku nowych typw danych, takich jak na
przykad UDT. Mona je stosowa w klauzulach OPENXML WITH, mona take
umieszcza wystpienia typw danych XML w sp_preparedocument.

Obsuga XQuery
XML Query Language lub XQuery jest standaryzowanym jzykiem, zoptymalizowanym do wyszukiwania wszystkich danych typu XML. XQuery pozwala na
uruchamianie kwerend wyszukujcych zmienne i kolumny typu XML za pomoc
pniej przypisanych metod. W3C nadzoruje rozwj XQuery, podobnie jak wiele

178

Rozdzia 4. Funkcje do projektowania baz danych

innych standardw XML. XQuery wywodzi si z jzyka zapyta Quilt, ktry by


oparty na rnych innych jzykach zapyta, takich jak XML Path Language
(XPath) wersja 1.0, XML Query Language (XQL) i SQL. Podzbiorem XQuery
jest XPath 2.0. Osoba, ktra posiada dowiadczenie w uywaniu XPath 1.0, moe zapozna si z waciwociami XQuery, bez koniecznoci nauki nowego jzyka
zapyta, tym niemniej jednak pojawiy si znaczce rozszerzenia w stosunku do
XPath 1.0, takie jak kontrola typw, specjalne funkcje i lepsza obsuga iteracji,
moliwo sortowania rezultatw oraz zmiany w konstrukcji.
SQL Server 2005 bezporednio pozwala na korzystanie z XQuery, dziki ktremu
obiekty XML mog operowa w warstwie danych. Platforma zapewnia obsug
statycznie zdefiniowanego podzbioru XQuery Working Draft z 15 listopada 2003 r.

Rozwinicia DML
Obecnie specyfikacja XQuery zawiera skadni i semantyk zapyta, ale nie
uwzgldnia modyfikowania dokumentw XML. Polecenia manipulacji danymi
(DML) XML stanowi rozszerzenie funkcji XQuery i su do modyfikacji danych. SQL Server 2005 dodaje trzy sowa kluczowe: insert, update i delete.
Kade z tych sw jest wykorzystywane wewntrz metody modify() typu danych XML.

Native XML Web Services


W poprzednich wersjach SQL Server mona byo rozszerzy moliwoci platformy o przetwarzanie da SOAP, korzystajc z aplikacji rodkowej warstwy
nazwanej SQLXML. SQLXML zosta wprowadzony jako Web Services Toolkit
w 2001 roku. Zawiera proste rodki do automatycznego wykorzystania polece
Web Service Description Language (WSDL) poprzez uycie kreatora usug sieciowych. Aby wykorzystywa SQLXML Web Service, koniecznym jest posiadanie
serwera z zainstalowanym IIS 5.0 (ang. Internet Information Services). IIS funkcjonowa jako kana dla usug sieciowych, czcy klienta i serwer. Funkcjonalnoc
SQLXML pozwalaa na przeksztacanie da SOAP do zapyta transakcyjnego
SQL z wykorzystaniem OLE DB. W SQL Server 2005 baza danych sama w sobie
jest dostawc usug sieciowych. Platforma SQL Server 2005 moe teraz przetwarza dania SOAP bez porednictwa komponentu rodkowej warstwy.
Obecno zainstalowanego IIS rwnie jest niekonieczna, cho zwiksza stopie bezpieczestwa, uatwiajc jednoczenie korzystanie z tej funkcjonalnoci.
Przypomn jeszcze, e podczas instalacji SQL Server 2005 funkcjonalno
usug sieciowych jest uwzgldniana tylko wtedy, kiedy system operacyjny naley
do grupy serwerw Windows 2003. SQL Server obsuguje sterownik http.sys
jdra systemu.

Technologia XML

179

Konfigurujc SQL Server dla usug sieciowych, aby zapewni moliwo natywnego nasuchu da HTTP, naley pamita, e SOAP wymaga utworzenia
punktu kocowego HTTP i zdefiniowania metod, ktre ten punkt obsu. Podczas tworzenia punktu kocowego HTTP trzeba rwnie okreli niepowtarzalny adres URL (ang. Unified Resource Locator), niezbdny podczas nasuchiwania przychodzcych da HTTP. Na przykad po utworzeniu punktu
kocowego z adresem URL http://servername/sql, dania SOAP, przesyane do
http://servername/sql bd obsugiwane przez http.sys. http.sys przekazuje dania SOAP do instancji SQL Server, ktry obsuguje punkt kocowy zwizany
z URL. Od tego momentu wszystkie dania s obsugiwane przez warstw obsugi SOAP wewntrz platformy SQL Server.
Instancja SQL Server moe mie rne punkty kocowe. Kady z nich moe
obsugiwa dowoln liczb procedur skadowanych (zaimplementowanych za
pomoc transakcyjnego SQL lub CLR) jako WebMethod punktu kocowego i moe by wywoywany przez SOAP poprzez zdalne wywoywanie procedur (RPC).
Metoda sieciowa moe mie inn nazw ni wanie obsugiwana procedura
skadowana. Nazwa metody sieciowej jest widziana przez uytkownika jako nazwa operacyjna w WSDL.
Punkt kocowy HTTP moe zosta utworzony i administrowany za porednictwem polece DDL transakcyjnego SQL. Utworzenie punktu kocowego HTTP
jest pierwszym krokiem w umoliwieniu dostpu do SQL Server 2005 za pomoc
HTTP/SOAP. Kady punkt kocowy ma nazw i zestaw opcji, ktrych kombinacja
definiuje zachowanie tego punktu kocowego. Wszystkie punkty kocowe s przechowywane w bazie danych master, w widoku katalogu master.sys.http_endpoints.
Punkt kocowy nie posiada metod SOAP dopty, dopki administrator ich nie
zdefiniuje.
Punkty kocowe HTTP obsuguj nastpujce standardy uwierzytelniania: Basic,
Digest, Integrated (Windows NT LAN Manager, czyli NTLM, Kerberos) i Anonymous SQL Auth. Najpierw autoryzacja nastpuje na poziomie protokou
HTTP. Jeli zakoczy si powodzeniem, identyfikator bezpieczestwa uytkownika
(SID) suy do uwierzytelniania na platformie SQL Server. Dzieje si tak we
wszystkich przypadkach oprcz ANONYMOUS. Wybr ANONYMOUS w punkcie kocowym oznacza, e jest moliwy dostp anonimowy na poziomie protokou HTTP. Klient cigle musi dostarczy dane SQLAuth, eby mc uzyska
dostp do bazy danych. Wybr opcji ANONYMOUS oznacza, e jest wymagany
dodatkowy nagwek HTTP, eby zaszyfrowa nazw uytkownika i haso. Nagwek ten musi si nazywa MS-SQL Auth i jego warto musi zawiera poprawne dane uytkownika i haso, zakodowane metod base64. Administratorzy
mog take ustawia restrykcje dotyczce adresu IP, ograniczajc dostp do punktu
kocowego wyspecyfikowanym adresom IP lub zakresowi adresw IP. Pojciowo
punkt kocowy oznacza aplikacj. Wszystkie metody, ktre implementuje

180

Rozdzia 4. Funkcje do projektowania baz danych

aplikacja, s mapowane na punkt kocowy, wic zabezpieczenia zastosowane do


punktu kocowego chroni dostp do aplikacji. Punkty kocowe s bezpieczne
z zaoenia. Poniej przedstawiam kilka rad, dziki ktrym ich ochrona moe by
atwiejsza.
Naley domylnie wyczy tworzone punkty kocowe. adne punkty

kocowe ani metody sieciowe nie powinny by domylnie mapowane,


naley je jawnie utworzy i wyspecyfikowa.
Naley kontrolowa zabezpieczenia obiektw. Mapowane procedury

skadowane mog by uruchamiane tylko wtedy, kiedy uytkownik


posiada uprawnienia do korzystania z poczenia z punktem kocowym
i dodatkowo uprawnienia do procedury skadowanej.
Naley wyczy obsug anonimowego dostpu do punktu kocowego.

Wszystkie dania, wczajc w to dania dla WSDL, s autoryzowane.


Aby skorzysta z ktregokolwiek dania, klient musi si autentykowa.
Po utworzeniu punktu kocowego tylko czonkowie roli sysadmin i waciciel
punktu kocowego mog poczy si z tym punktem. Jeli inni uytkownicy maj
otrzyma dostp do tego punktu, trzeba im jawnie przyzna odpowiednie uprawnienia. W tym celu mona posuy si nastpujcym poleceniem:
GRANT CONNECT ON HTTP ENDPOINT::hello_world_endpoint
TO [DOMAIN\USER]

Klienci uywajcy platformy innej ni systemy Microsoft, mog poczy si


z SQL Server, korzystajc z metody uwierzytelniania BASIC albo SQL Auth, jednake uycie BASIC albo SQL Auth wymaga zabezpieczenia kanau poczenia,
zatem takie poczenie jest moliwe tylko za pomoc portw obsugujcych SSL.

WSDL
WSDL jest dokumentem napisanym w XML, zawierajcym specyfikacj usug sieciowych. Opisuje pooenie danej usugi i operacje (lub metody) obsugiwane przez
dan usug. WSDL dostarcza klientom informacje niezbdne do korzystania
z usug sieciowych. Takie narzdzia, jak Visual Studio 2005 i JBuilder wykorzystuj
WDSL do generowania kodu poredniego, ktry aplikacja klienta moe uy do
komunikacji z usug sieciow. Jeeli punkt kocowy obsuguje WSDL, to przetwarza go w chwili, kiedy otrzymuje do niego danie. Serwer odpytuje metadane
skojarzone z punktem kocowym i dynamicznie generuje WSDL. Wygenerowany WDSL oferuje wiele informacji dotyczcych parametrw procedury skadowanej. Serwer moe wygenerowa dwa rne rodzaje dokumentw WSDL
prosty lub zoony zalenie od tego, czy korzysta z podstawowych, czy ze zoonych typw XSD. Typy XSD su do opisu parametrw w komunikacie dania lub
odpowiedzi. Domylnie wykorzystuje si typy zoone.

SQL Server jako platforma serwera aplikacji

181

SQL Server jako platforma serwera aplikacji


Jednym z krytycznie wanych obszarw, jakiemu Microsoft powici du
uwag podczas tworzenia SQL Server 2005, jest penienie przez t platform
funkcji serwera aplikacji. Microsoft nazwa to Service Oriented Database Application (SODA), co mona przetumaczy jako zorientowana na usugi aplikacja
bazodanowa. Uytkownicy wykorzystuj bazy danych w coraz bardziej kreatywny
sposb, wic systemy zarzdzania relacyjnymi bazami danych (RDBMS), ktre
zachowuj si jak serwer aplikacji bazodanowych, s bardzo sensownym rozwizaniem. W rzeczywistoci twierdzenie, e SQL Server jest dostarczany z usugami
takimi, jak Reporting Services, Notification Services, SQL Service Broker i usugi
sieciowe XML, oznacza, e warto mie dane w bazie danych, a logik biznesow
umieci blisko danych.
W tabeli 4.5 przedstawiem moliwoci implementacyjne poszczeglnych usug
platformy SQL Server, jako punkt wyjcia przyjmujc architektur aplikacji.
Z punktu widzenia architektury, warstwa danych moe stanowi jedno repozytorium dla wszystkich danych. W takim scenariuszu SQL Server jest klasycznym
systemem zarzdzania relacyjnymi bazami danych (RDBMS). Odmienna sytuacja
wystpi, jeli aplikacja ma wykorzystywa usugi sieciowe XML. Pytanie zatem
brzmi: w jaki sposb zaprojektowa aplikacj i warstwy danych z uyciem tych
samych gwnych technologii? Microsoft zastosowa wszystkie praktyki projektowe
podczas budowania aplikacji, poczwszy od programowania zorientowanego
obiektowo (OOP), a po architektur zorientowan na usugi (SOA). Jeli wic
Czytelnik przeanalizuje moliwoci platformy SQL Server z rnych punktw
widzenia, praktyk projektowania, wdraania rozwiza architektonicznych, z pewnoci zauway, e jest to bardzo wszechstronny i elastyczny produkt.
Tabela 4.5. Serwery aplikacji w SQL Server 2005
Komponent

Warstwa danych

Druga warstwa

Notification Services

rdowa baza danych

Silnik powiadomie

Reporting Services

rdowa baza danych

Katalog raportw

SQL Service Broker

Umieszczony w SQL Server

brak

Usugi sieciowe XML

Umieszczony w SQL Server

rodkowa warstwa przez SQLXML

Replikacja

Wydawca w SQL Server

Subskrybent, prawdopodobnie mobilny

SQL Server moe by uwaany za komponent SOA z obsug usug sieciowych


XML. Mimo e pojcia usugi sieciowe XML i SOA nie s synonimami, wikszo
ludzi poprawnie bd niepoprawnie caociowo wie SOA z usugami sieciowymi.
Patrzc od strony architektury komponentw, mona dostrzec nowe waciwoci
SQL Server 2005, gdy wykorzystywanie bazodanowych komponentw .NET

182

Rozdzia 4. Funkcje do projektowania baz danych

pozwala na utworzenie kompletnego systemu. Mona to uzna za klasyczne podejcie obiektowe (OOP), zreszt systemy RDBMS wykazuj wiele podobiestw do
systemw zorientowanych obiektowo. Na przykad klasa w modelu obiektowym
przypomina relacj w relacyjnej bazie danych. Rekord jest podobny do obiektu instancji, a kolumna do atrybutu. Punktem wyjcia tych podobiestw jest obszar
metod. W przypadku RDBMS procedury skadowane opisuj proces biznesowy
jako element dziaajcego systemu. W podejciu obiektowym (OOP) metoda jest
funkcjonaln czci klasy. Oczywicie SQL Server 2005 obsuguje funkcjonalno
wiksz od zwykego przechowywania czy pozyskiwania danych.
Planujc wykorzystanie platformy SQL Server 2005 w systemie informatycznym
firmy, naley uwzgldni waciwoci tego produktu, zwaszcza te zwizane z architektur, wydajnoci i skalowalnoci. Szczeglnie istotny jest sposb zaimplementowania komponentw i usug. Kiedy na przykad trzeba zbudowa
skalowalny serwer aplikacji, osobne instalowanie komponentw bdzie moliwe
przede wszystkim w przypadku Notification Services i SQL Server Reporting
Services. Mechanizm replikacji i SQL Server Broker wymagaj zainstalowania
podstawowej czci serwera, gdy s funkcjonalnie zwizane z baz danych,
natomiast usugi Notification Services i Reporting Services wymagaj SQL Server jako miejsce przechowywania metadanych, jednak metadane te mog by
pobierane z innego serwera.
Kto, kto dokadnie przeanalizuje szczegy struktury platformy SQL Server,
moe stwierdzi, e wiele funkcji suy rwnie do implementowania innych
funkcji. Na przykad Reporting Services i Analysis Services korzystaj z usug
sieciowych XML w celu uzyskiwania dostpu do danych, przechowywania metadanych i dostarczania modelu programistycznego. Usugi Notification Services
bezporednio nie wykorzystuj usug sieciowych ani nie przypisuj orientacji na
ich podstawie, ale stosuj XML jako format tworzenia metadanych. SQL Service
Broker (SSB) jest w rzeczywistoci specjaln blokad, zaimplementowan jako
cz silnika SQL Server Engine przy projektowaniu aplikacji SSB kocowy
uytkownik jest informowany o wykorzystaniu usug sieciowych XML podczas
projektowania aplikacji. SQL Server Broker stanowi znakomity przykad sposobu,
w jaki Microsoft implementuje architektur modularn w serwerze bazodanowym, ktry jednoczenie jest rodowiskiem uruchomieniowym i implementacj
jzyka.

SQL Service Broker


SQL Service Broker (SSB) jest nowym elementem, pozwalajcym wewntrznym
lub zewntrznym procesom na wysyanie lub otrzymywanie asynchronicznych komunikatw. SQL Service Broker jest wbudowany w silnik SQL Server i pozwala

SQL Server jako platforma serwera aplikacji

183

na przesyanie komunikatw w ramach jednego serwera, ale take pomidzy serwerami. Przesyanie wiadomoci jest realizowane za porednictwem rozszerze
polece DML transakcyjnego SQL.

Po co przesya komunikaty?
Kolejkowanie jest bardzo ciekawym mechanizmem, ktry umoliwia elastyczne
rozkadanie obcienia pomidzy poszczeglne elementy systemu. Zastosowanie mechanizmu kolejkowania moe pozwoli na uzyskanie wikszej skalowalnoci i wydajnoci systemu. Poniej znajduje si prosty przykad. Na rysunku
4.1 przedstawiem schemat budowy aplikacji do handlu elektronicznego.

Rysunek 4.1. Przykadowy scenariusz dziaania usugi Service Broker

Z analizy rysunku 4.1 wynika, e niektre procesy powinny zachodzi rwnoczenie: po wprowadzeniu do bazy danych informacji o zamwieniu, nastpuje
proces autoryzacji karty kredytowej. Rwnoczenie naleaoby sprawdzi stan
zapasw, jednak czynnoci te zostan wykonane asynchronicznie. Generowanie
listy zamwienia i okrelenie szczegw transportu towaru moe nastpi
asynchronicznie, zwaszcza e informacje dotyczce transportu niekiedy wymagaj korekty zamwienia. Moliwo wykorzystania mechanizmu przesyania
komunikatw spowoduje zwikszenie rwnolegoci.
Przede wszystkim jednak trzeba zrozumie pi kluczowych koncepcji SQL Server Broker.
Kolejkowanie. Kolejkowanie realizowane przez SQL Service Broker

polega na tworzeniu lunego poczenia pomidzy nadawc a odbiorc


komunikatu. Nadawca umieszcza komunikat w kolejce i kontynuuje
prac z aplikacj. SQL Service Broker zapewnia transmisj wiadomoci
do miejsca przeznaczenia.

184

Rozdzia 4. Funkcje do projektowania baz danych

Dialogi. SQL Service Broker korzysta z mechanizmu dialogw. Dialog

jest dwukierunkowym strumieniem komunikatw pomidzy dwiema


bazami danych lub kolejkami. Wszystkie komunikaty w dialogu s
uporzdkowane i zawsze dostarczane w kolejnoci wysania. Sposb
uporzdkowania komunikatw zaley od transakcji, wtkw wejciowych
i wyjciowych, od awarii i restartw systemu. Niektre komunikaty
systemowe gwarantuj kolejno wiadomoci w pojedynczej transakcji,
a nie wielu transakcjach. W tym wzgldzie SQL Service Broker dziaa
w sposb jednoznaczny: zapewnia, e kady komunikat posiada
identyfikator, jednoznacznie okrelajcy dialog z nim zwizany. Ten
identyfikator zasadniczo stanowi blokad transakcji, dopki proces dla
kadego dialogu nie zostanie zakoczony.
Grupy konwersacji. Grupa konwersacji jest grup wszystkich dialogw

zwizanych z pewnym zadaniem. W przykadzie aplikacji do handlu


elektronicznego, wszystkie dialogi biorce udzia w realizacji pojedynczego
zamwienia s grupowane w pojedyncz instancj. Grupy konwersacji
s w rzeczywistoci jednoznacznym identyfikatorem, umieszczonym
w kadym komunikacie zwizanym z danym zamwieniem. Zwykle
grupy konwersacji stosuje si do obsugi stanu zwizanego z okrelonym
procesem, na przykad jeli taki proces wymaga wicej czasu dla
przetwarzania komunikatu. Taka sytuacja moe si przytrafi w przypadku
klienta skadajcego zamwienie, gdy dostarczenie i przetwarzanie
autoryzacji karty kredytowej opnia si. Wtedy wanie grupy konwersacji
i stan zamwienia jest przechowywany w bazie danych do momentu
wysania kolejnego komunikatu i zmiany stanu zwizanego z zamwieniem.
Aktywacja. Funkcje SSB pozwalaj na okrelenie procedury skadowanej

do obsugi dostarczenia komunikatu dla pewnych usug. Po otrzymaniu


komunikatu SSB sprawdza, czy procedura skadowana funkcjonuje i czy
moe przetworzy komunikat. Jeli potrzebna procedura nie jest aktywna,
SSB uruchamia j. Procedura skadowana pozostaje aktywna do momentu
oprnienia kolejki. Jeeli komunikaty przychodz zbyt szybko, aby
pojedyncza instancja procedury moga je obsuy, SSB uruchamia
dodatkowe instancje, dopki dania nie s przetwarzane pynnie.
Opisywany mechanizm mona skonfigurowa. Warto podkreli, e
gwarantuje on dostpno odpowiedniej iloci zasobw.
Przesyanie komunikatw. Komunikaty s przesyane przez dwa protokoy,

podobne do protokou TCP/IP. Pierwszy z nich, protok Binary Adjacent


Broker (BAB) jest wysoko wydajnym interfejsem protokou TCP/IP. BAB
obsuguje podstawowe przesyanie komunikatw. Drugim protokoem
jest Dialog, czcy dwa punkty kocowe dostarczania wiadomoci.
Obsuguje porzdkowanie i potwierdzanie wysania komunikatu.
Obsuguje take komunikacj w przypadku bdw dostarczenia i jest
odpowiedzialny za bezpieczestwo komunikatw.

SQL Server jako platforma serwera aplikacji

185

Po co s potrzebne komunikaty w bazie danych?


Istnieje wiele istotnych powodw, dla ktrych warto korzysta z mechanizmu
komunikatw na poziomie bazy danych. Najwaniejszymi cechami charakteryzujcymi aplikacje wysyajce komunikaty s:
moliwo porzdkowania komunikatw;
zgodno transakcyjna;
zoono;
aplikacje te nie bior udziau w mechanizmach zarzdzania baz danych.

SQL Service Broker obsuguje transakcyjne przesyanie komunikatw (ang. transaction messaging). Termin transakcyjne ma to samo znaczenie, co w przypadku
transakcji realizowanych przez typowe bazy danych. Transakcja jest zbiorem
dziaa, traktowanym jak jedno dziaanie. Kiedy transakcji nie udaje si wykona do koca, wysane i odebrane komunikaty s odwoywane i nie przynosz
skutku, dopki transakcja nie zostanie potwierdzona.
Transakcyjne przesyanie komunikatw uatwia programowanie aplikacji przesyajcych wiadomoci. Nawet jeli zostanie wydane polecenie wysania czy odbioru komunikatu, wykonanie polecenia nastpi dopiero po potwierdzeniu transakcji. W przypadku wycofania transakcji komunikaty nie s wysyane, natomiast
odebrane wiadomoci wdruj do kolejki w celu dalszego przetworzenia.
Jak ju wczeniej zaznaczyem, SQL Service Broker moe rozwiza kilka trudnych problemw, z jakimi borykaj si aplikacje wysyajce komunikaty. SSB
zapewnia, e porzdkowanie komunikatw jest przezroczyste. Komunikaty s odbierane zgodnie z kolejnoci wysania, bez zaburzania sekwencji, a ich koordynowanie zachodzi dziki dialogom i identyfikatorom grup konwersacji. Grupy
konwersacji uatwiaj zachowanie porzdku i przypisywanie konkretnych komunikatw poszczeglnym daniom. W przypadku typowych aplikacjach
komunikacyjnych zapewnienie wielowtkowego dziaania jest trudnym zagadnieniem. Zastosowanie SSB pozwala na zablokowanie przesyania komunikatw
do danego wtku tak dugo, dopki transakcja nie zostanie zakoczona. W ten
sposb mona rozwiza problem naruszania integralnoci referencyjnej.
SSB automatycznie obsuguje obcienie zwizane z przetwarzaniem komunikatw oczekujcych w kolejce, tak wic istnieje moliwo dopasowania liczby
procesw przetwarzajcych informacje. Z punktu widzenia administratora danych, SSB posiada wszystkie zalety aplikacji do zarzdzania bazami danych. SSB
jest rwnie istotny dla ustawienia mechanizmu sucego do sporzdzania kopii
zapasowych, dla wykorzystywania rozwiza wysokiej dostpnoci i magazynowania dyskowego. SSB posiada te zalety procedur skadowanych, XML i usug

186

Rozdzia 4. Funkcje do projektowania baz danych

sieciowych. Moe otrzymywa komunikaty z systemw znajdujcych si poza


baz danych, takich jak handlowy punkt dostpu, ktry obsuguje karty kredytowe za porednictwem wywoa HTTPS.

Bezpieczestwo SSB
Przy wszystkich swoich zaletach, SQL Service Broker wymaga szczeglnego
poziomu zabezpiecze. Model SQL Service Broker jest oparty na modelu komunikacyjnym. SQL Service Broker charakteryzuje si zaletami nowego mechanizmu certyfikatw, stanowicego element SQL Server 2005. SQL Service
Broker jest chroniony na dwa sposoby.
Bezpieczny dialog zapewnia szyfrowanie poszczeglnych komunikatw

w dialogu i weryfikacj tosamoci jego uczestnikw. Bezpieczny dialog


obsuguje take zdaln autoryzacj i sprawdzanie integralnoci komunikatu.
Bezpieczny dialog ustala autentykowan i szyfrowan komunikacj
pomidzy dwiema usugami.
Bezpieczny transport zapewnia ochron przed wysyaniem komunikatw

SQL Service Broker pochodzcych z nieautoryzowanych baz danych do


bazy danych w lokalnej instancji. Bezpieczny transport umoliwia ustalenie
autentykowanego sieciowego poczenia pomidzy dwiema bazami danych.
SQL Service Broker korzysta z certyfikatw do uwierzytelniania komunikacji pomidzy lokalnym a zdalnym serwerem. Przypomnijmy sobie wczeniejsz dyskusj o zaoeniach autoryzacji i uwierzytelniania: drugi ID, znajdujcy si w czteroczciowej nazwie, moe zawiera certyfikat. Certyfikat zapewnia mechanizm
zaufania, ktry mapuje uytkownika lub nazw logowania do schematu, zawierajcego funkcjonalno instancji SQL Service Broker. Zalet certyfikatu jest to,
e nie tworzy adnego acucha powiza wasnoci.
SQL Service Broker nie stanowi panaceum na problemy wydajnociowe zwizane
ze skalowalnoci aplikacji. Jest jednak przydatny w przypadku aplikacji z problemami skalowalnoci, wynikajcymi z wystpienia tzw. wskiego garda w procesach
zaliczanych do logiki biznesowej. Przykadem takiej sytuacji jest oczekiwanie na
odpowied systemu. Innym przykadem jest system sabo powizany, ktry wymaga
odpowiedzi od zewntrznych nadawcw komunikatw, takich jak usuga sieciowa
obsugujca wysyk lub modu handlowy obsugujcy karty kredytowe. W takich
przypadkach SQL Service Broker moe by dogodnym rozwizaniem.

SQL Server jako platforma serwera aplikacji

187

Notification Services
Twrcy SQL Server 2005 wprowadzili znaczne ulepszenia do usugi Notification Services (NS).
Instancja usugi aplikacji Notification Services jest dostpna poprzez SQL Computer Management. Uatwia to wyczanie usugi Notification Services w przypadku
problemw z aplikacj. Pliki konfiguracyjne usugi Notification Services w dalszym
cigu mona tworzy za pomoc Visual Studio, jednak teraz cay proces mona
przeprowadzi za pomoc programu SQL Server Management Studio. Aby zbudowa aplikacj opart na usudze NS, trzeba przeanalizowa podstawowe elementy
tej usugi. Platforma Notification Services skada si z dwch komponentw:
Prostego, ale potnego programistycznego rodowiska uruchomieniowego

dla aplikacji powiadamiajcych. rodowisko programistyczne jest oparte


na XML i jzyku SQL. Funkcjonuje wewntrz bazy danych SQL Server.
Niezawodny, wysokiej jakoci, skalowalny serwer, ktry uruchamia

aplikacje powiadamiajce. Serwer jest zbudowany na platformie .NET


Framework i SQL Server. Serwer dziaa w systemach operacyjnych
Windows Server 2000 i 2003 jako usuga. Usuga Notification Services
zostaa zaprojektowana jako rozszerzenie, pozostajce w cisym zwizku
z istniejcymi aplikacjami.
Platforma SQL Server Notification Services skada si z kilku komponentw:
NSService.exe. Instancja Notification Services uruchomiona jako usuga

Windows. Ta usuga jest zwizana z SQL Computer Manager i zachowuje


si jak silnik dla aplikacji Notification Services.
NSControl.exe. Ten program generuje baz SQL Server i inne obiekty

wykorzystywane przez NSService i aplikacj subskrypcji. Aplikacja


przechowuje metadane o instancjach NS, ktre s zapisywane w rejestrze.
eby wczy lub wyczy pewne czci aplikacji NS, mona skorzysta
z NSControl,
Microsoft.SQLServer.NotificationServies.dll-NSService.exe. aduje

zestaw, ktry zawiera kod dla SQLNS, wbudowanych dostawcw, a take


komponenty wywoywane do przetwarzania danych w instancjach
aplikacji NS.
Z usug Notification Services s zwizane nastpujce pojcia:
Zdarzenia. W odniesieniu do aplikacji powiadamiajcych, zdarzenie

definiujemy jako komunikat odebrany przez proces nasuchu. Komunikaty


zdarze s przechowywane w tabeli bazy danych aplikacji powiadamiajcej.

188

Rozdzia 4. Funkcje do projektowania baz danych

Subskrypcja. Subskrypcje okrelaj sposb, w jaki uytkownicy korzystaj

z aplikacji NS, wskazujc, co ich interesuje.


Powiadomienia. Komunikaty wysyane do uytkownika. Zawieraj

zasubskrybowane przez uytkownika informacje o zdarzeniach.

Scenariusze wdroe usugi Notification Services


Istniej trzy standardowe scenariusze wdraania usugi Notification Service.
Wybr konkretnego sposobu postpowania zaley od wielkoci i poziomu usugi
aplikacji powiadamiania. W niewielkim, opartym na intranecie rodowisku
platforma SQL Server i usuga Notification Services mog zosta wdroone na
jednym serwerze. Jeli za chodzi o sprzt, trzeba zapewni co najmniej dwa
procesory. Mimo to zastosowanie 64-bitowych procesorw prawdopodobnie jest
nieopacalne, poniewa parametry procesora i pamici RAM w obecnie dostpnych modelach serwerw s najzupeniej wystarczajce dla maych wdroe.
W przypadku redniej wielkoci wdroe, gdzie aplikacja powiadamiajca bdzie
uytkowana poprzez internet, konieczne s co najmniej dwie warstwy. I ponownie,
po przeprowadzeniu analizy obcienia mona doj do wniosku, e umieszczenie
silnika powiadamiania i aplikacji zarzdzania subskrypcjami powiadomie na tej
samej warstwie jest sensownym rozwizaniem. Pozostawienie bazy danych na
niszej warstwie pozwoli na atwiejsze zarzdzanie t baz. Druga warstwa jest
warstw przechowywania danych, zatem powinna by zarzdzana przez administratora Windows.
Na rysunku 4.2 przedstawiono podstawowe procesy aplikacji Notification Services.

Rysunek 4.2. Przepyw informacji w aplikacji opartej na Notification Services

SQL Server jako platforma serwera aplikacji

189

Aplikacja suca do zarzdzania subskrypcjami jest budowana jako cz rozwijajcej si usugi powiadamiania. Aplikacja ta nie jest wewntrznym komponentem. Ma to niebagatelne znaczenie, poniewa tworzy interfejs uytkownika,
taki jak strona WWW, gdzie uytkownicy mog subskrybowa bd odwoywa
subskrypcj:
Dostawcy zdarze rejestruj zdarzenia i dostarczaj dane do usugi

Notification Services. Aplikacja moe wykorzystywa standardowego


dostawc zdarze, pochodzcego z usugi Notification Services. Rwnie
dobrze projektant moe utworzy wasnego dostawc.
Generator powiadamiania przetwarza subskrypcje i tworzy notyfikacje

oparte na biecym zestawie zdarze. Projektant aplikacji definiuje operacje


generatora powiadamiania, dostarczajc parametry konfiguracyjne i zasady
subskrypcji.
Dystrybutor powiadamiania formatuje powiadomienia i wysya je do

subskrybenta poprzez usug dostarczania. Projektant aplikacji definiuje


przeksztacenie czystych danych na posta sformatowanego powiadomienia,
definiujc funkcj powiadomienia i argumenty tej funkcji.
Usuga SQL Server Notification Services zapewnia deklaratywny model XML
Expressing Notification Applications. Projektant, budujc aplikacj powiadamiania, tworzy plik definicji aplikacji (ang. application definition file ADF)
oraz plik konfiguracyjny, eby dokadnie opisa aplikacj. ADF opisuje, ktre
zdarzenia s gromadzone, w jaki sposb zarzdzane i analizowane s subskrypcje
oraz w jaki sposb wynikowe powiadomienia s formatowane i dostarczane. Po
zdefiniowaniu aplikacji powiadamiania system Notification Services sprawdza
poprawno ADF i plikw konfiguracyjnych, tworzy baz danych SQL Server
do przechowywania danych aplikacji i konfiguruje usug powiadamiania systemu Windows.

Zarzdzanie subskrypcjami.
Interfejs API do zarzdzania subskrybentami
Usuga SQL Server Notification Services zawiera programistyczny interfejs aplikacji (API) Subscriber Management sucy do zarzdzania informacjami
o subskrybencie. Za pomoc klas Subscriber i SubscriberEnumeration
mona dodawa, uaktualnia i usuwa te informacje. Omawiane klasy s dostpne
w przestrzeni nazewniczej Microsoft.SqlServer.NotificationServices.
Klasa Subscriber wykorzystuje dane subskrybenta, ktre s zazwyczaj

w niej umieszczane za pomoc interfejsu uytkownika aplikacji


zarzdzajcej subskrypcjami. Rwnoczenie obiekt Subscriber
tworzy lub uaktualnia pojedynczy rekord Subscriber.

190

Rozdzia 4. Funkcje do projektowania baz danych

Klasa SubscriberEnumeration dostarcza odniesienie do zbioru

subskrybentw w instancji Notification Services. Aby wybra waciwy


rekord Subscriber, naley poda ID subskrybenta od indeksera
obiektu SubscriberEnumeration.

Zarzdzanie subskrypcjami.
Interfejs API do zarzdzania urzdzeniem subskrybenta
Usuga SQL Server Notification Services zawiera programistyczny interfejs
aplikacji SubscriberDevice, przeznaczony do zarzdzania urzdzeniami subskrybenta. Projektanci mog dodawa, uaktualnia i usuwa urzdzenia, na ktrych subskrybenci otrzymuj notyfikacje, korzystajc z klas SubscriberDevice
i SubscriberDeviceEnumeration. Te klasy s dostpne w przestrzeni nazw
Microsoft.SqlServer.NotificationServices.
Klasa SubscriberDevice, ktre wykorzystuje dane urzdzenia

subskrybenta, ktre zazwyczaj s dostarczane do tej klasy poprzez


interfejs uytkownika aplikacji zarzdzajcej subskrypcjami.
Klasa SubscriberDeviceEnumeration, ktra dostarcza odniesienie

do zbioru urzdze subskrybenta w instancji Notification Services. Aby


wybra waciwy rekord urzdzenia subskrybenta, naley poda nazw
urzdzenia do indeksera obiektu SubscriberDeviceEnumeration.

Zdarzenia: FileSystemWatcherProvider
Usuga SQL Server Notification Services jest dostarczana ze standardowymi
dostawcami zdarze, co ma uatwi sprawne zaprojektowanie i wdroenie aplikacji opartych na tej usudze. Jednym z tych dostawcw jest File System Watcher
Provider, zaimplementowany jako cz biblioteki doczanej dynamicznie (DLL)
o nazwie Microsoft.SqlServer.NotificationServices.dll. Dostawca ten korzysta z klasy
FileSystemWatcher zdefiniowanej w rodowisku .NET Framework, sucej
do monitorowania dodatkowych plikw w okrelonym folderze.
Po dodaniu pliku zdarzenia XML do katalogu dostawca jest wywoywany do zaadowania pliku zdarzenia XML do pamici, a nastpnie korzysta z dostarczonego
obiektu EventLoader, eby zapisa informacje o zdarzeniu do tabeli zdarze.

Zdarzenia: dostawca zdarze SQL Server


Dostawca zdarze (SQL Server Event Provider) wykorzystuje procedury skadowane do gromadzenia danych o nowych zdarzeniach i dostarcza dane bezporednio do tabeli zdarze.

SQL Server jako platforma serwera aplikacji

191

Zdarzenia: niestandardowi dostawcy zdarze, EventLoaderClass


Usugi SQL Server Notification Services wykorzystuj dostawcw zdarze do
gromadzenia danych i przekazywania ich do systemu Notification Services. Dostawca zdarze jest zaimplementowany jako biblioteka DLL, ktra monitoruje
rdo zdarze i zbiera informacje. Standardowi dostawcy zdarze s doczani
do usugi Notification Services, co ma uatwi szybkie zaprojektowanie i wdroenie aplikacji powiadamiajcej. W przypadku, gdy aplikacja wymaga gromadzenia danych ze rde nieposiadajcych standardowych dostawcw zdarze
zaprojektowanych do monitorowania, trzeba samodzielnie utworzy dostawc
zdarze, ktry sprosta wymaganiom okrelonej aplikacji.
Tacy zaprojektowani do konkretnych celw dostawcy zdarze mog korzysta
z interfejsu programistycznego aplikacji EventLoader do pobierania dokumentw XML lub strumieni danych jako informacji wejciowych. Metoda LoadXml
suy wtedy do zapisywania zdarze zwizanych z dokumentem lub strumieniem do tabeli zdarze. Projektanci powinni korzysta z interfejsu EventLoader,
pracujc z wejciowymi danymi rdowymi XML. Zdarzenia pochodzce z rnych rde mog si znajdowa w pliku XML lub strumieniu, pozwalajc na
wsadowe ich umieszczanie w tabeli zdarze.

Zdarzenia: procedury skadowane SQL Server


Usugi SQL Server Notification Services pozwalaj na to, aby podczas pracy ze
rdem zdarze SQL Server korzysta ze standardowych procedur skadowanych rejestrujcych zdarzenia. Mona te wykorzysta zalety logiki biznesowej
zdefiniowanej w innej procedurze skadowanej SQL Server. Poniej wymieniem standardowe procedury skadowane rejestrujce zdarzenia.
NSEventBeginBatchEventClassName zapewnia identyfikator

przetwarzania zdarzenia, ktry powinien by stosowany dla tworzonych


zdarze.
NSEventWriteEventClassName wstawia pojedynczy rekord zdarzenia

do tabeli zdarze.
NSEventFlushBatchEventClassName potwierdza lub odrzuca grup

zdarze.
NSEventSubmitBatchEventClassName zapewnia izolacj funkcjonaln

wczeniej opisanych procedur skadowanych. Tworzy now grup zdarze,


przypisuje jedno lub wicej zdarze do nowej grupy zdarze, zapisuje
rekordy do tabeli zdarze i uruchamia grup zdarze.

192

Rozdzia 4. Funkcje do projektowania baz danych

Generowanie powiadomie:
zarzdzanie stanem aplikacji powiadamiania (kroniki)
Usuga SQL Server Notification Services zawsze przetwarza zdarzenia jako
cz grupy zdarze. Grupa jest wykorzystywana przez proces generowania
powiadomienia tylko jeden raz, po czym grupa zdarze jest traktowana jako
wygasa i jest pniej usuwana z systemu. W niektrych przypadkach dane zdarze mog by przechowywane dla zaplanowanych subskrypcji lub innych wymaga aplikacji. Do staego utrzymywania informacji o zdarzeniach w systemie
Notification Services moe suy tabela kronik zdarze. Przykadowo, projektant moe korzysta z tabeli kroniki zdarze w celu zapamitania danych o zdarzeniu dla zaplanowanych subskrypcji, uaktualniajc tabel danymi biecego
zdarzenia zawsze podczas przetwarzania grupy zdarze. Mona take wykorzysta tabel kroniki zdarze do przechowywania informacji o zakresach lub historii
zdarze, co ma zapobiec duplikowaniu powiadomie.

Generowanie powiadomie: obsuga odtwarzania po awarii


Istotnym pojciem, zwizanym z funkcjonowaniem usug Notification Services,
jest quantum. Sowo to oznacza odstp czasu, ktry okrela czstotliwo wywoywania funkcji systemu. W przypadku usug SQL Server Notification Services
praca, ktra powinna zosta wykonana w cigu quantum, moe zosta pominita
z powodu awarii lub przecienia systemu. Dziki ChronicleQuantumLimit
mona ustali optymaln rwnowag pomidzy szybkoci aplikacji a poprawnoci danych, cay czas uwzgldniajc specyfik aplikacji.
Limity quantum mniejszych kronik wymagaj od generatora mniejszej pracy
w przypadku awarii, dziki czemu odtworzenie po awarii jest szybsze.

Generowanie powiadomie:
jednorazowe i planowane generowanie powiadomie
Usuga SQL Server Notification Services obsuguje dwie odmienne metody generowania powiadomie:
Subskrypcja zdarze wywoywana natychmiast po nadejciu nowych

zdarze;
Zaplanowana subskrypcja oparta na planie zdefiniowanym przez

subskrybenta.

SQL Server jako platforma serwera aplikacji

193

Generowanie powiadomie: klasa TimeZone


Usuga SQL Server Notification Services pozwala na zaprojektowanie aplikacji
sucych do powiadamiania zalenych od strefy czasowej. Mona wykorzysta
klas TimeZone do utworzenia aplikacji zarzdzajcej subskrypcjami, ktra obsuy rne strefy czasowe. Uytkownicy aplikacji mog wprowadza swj lokalny
czas podczas planowania subskrypcji.

Formatowanie powiadomie:
formatowanie zawartoci za pomoc XSLT
Usuga SQL Server Notification Services umoliwia standardowe formatowanie
za pomoc Extensible Stylesheets Language Transformation (XSLT), co jest
pomocne przy szybkim projektowaniu i wdraaniu aplikacji opartych na usugach Notification Services. Narzdzie do formatowania zawartoci pozwala na
sprecyzowanie XLST do sformatowania czystych danych powiadomienia. Dziki
takiemu przeksztaceniu i wprowadzeniu wszelkich niezbdnych zmian w formacie dane s odpowiednio przygotowane do wywietlenia na urzdzeniu odbierajcym. Narzdzie do formatowania utworzono w wersjach dla rnych jzykw
(pastw, regionw) oraz dla rnych typw urzdze. W celu zapewnienia obsugi
kombinacji danego jzyka i konkretnego typu urzdzenia, obsugiwanego przez
aplikacj powiadamiajc, naley utworzy oddzielny plik XSLT.

Formatowanie powiadomie: skrt powiadomienia


Usuga SQL Server Notification Services pozwala na zgrupowanie kilku indywidualnych powiadomie otrzymanych od tego samego subskrybenta w wiksz
cao. Na przykad subskrybent moe by zarejestrowany do odbioru kilku
powiadomie dziennie. Zamiast oddzielnego wysyania tych notyfikacji, system
moe je zgrupowa, sumujc ich zawarto. Takie sumowanie nazywa si dostarczaniem skrtowym.

Formatowanie powiadomie: multiemisja powiadomie


Usuga SQL Server Notification Services zawiera potn funkcj grupowego
dostarczania, ktra pozwala aplikacji powiadamiania na jednorazowe formatowanie danych i przesanie ich do wielu subskrybentw. Na przykad wszyscy
uytkownicy, ktrzy zasubskrybowali prognoz pogody dla Redmond w Washington, otrzymuj takie same dane pogodowe w swoich komunikatach. W tych
przypadkach formatowanie danych przeprowadza si po prostu raz i tak przygotowane dane mog by wysane do kadego subskrybenta.

194

Rozdzia 4. Funkcje do projektowania baz danych

Usuga SQL Server Notification Services dostarcza kilka standardowych protokow, uatwiajcych projektantom zdefiniowanie kanaw dostarczania dla instancji
usug powiadamiania. Dokadniejsze informacje na ten temat zostan przedstawione nieco dalej.

Dostarczanie powiadomie: protok dostarczania plikw


Projektanci mog wykorzystywa protok dostarczania plikw do zapisywania
danych powiadomienia w plikach tekstowych ASCII. Ten protok jest zazwyczaj
stosowany do uruchamiania i testowania aplikacji. Moe by te uyty w aplikacjach dostarczajcych dane powiadomienia do systemowego katalogu plikw,
ktry potem jest przetwarzany przez File System Watcher Provider.

Dostarczanie powiadomie: protok SMTP


Projektanci mog wykorzystywa protok SMTP do tworzenia i ustalania tras komunikatw dostarczanych przez MS Exchange lub inny system pocztowy oparty
na protokole SMTP.

Dostarczanie powiadomie: rozszerzenia HTTP protokou dostarczania


Rozszerzenia HTTP protokou dostarczania pozwalaj projektantom na tworzenie
dodatkw, ktre definiuj pola nagwkw HTTP bez koniecznoci definiowania
nowych kanaw dostarczania. Rozszerzenia HTTP protokou dostarczania umoliwiaj uwzgldnianie mechanizmu powiadomie w usugach sieciowych lub
aplikacjach WWW.

Dostarczanie powiadomie: SQL Service Broker


Protok dostarczania SQL Service Broker pozwala projektantom na umieszczanie powiadomie w niezawodnej kolejce SQL Service Broker w celu dalszego
przetwarzania albo okrelenia dalszej trasy.

Dostarczanie powiadomie: wasne protokoy dostarczania


Jeeli standardowe protokoy dostarczania nie odpowiadaj specyfice aplikacji,
projektanci mog utworzy wasne protokoy dostarczania, korzystajc z jzykw
obsugiwanych przez .NET Framework.

SQL Server Mobile Edition

195

SQL Server Mobile Edition


W tym podrozdziale zaprezentowaem opis podstaw architektury platformy SQL
Server Mobile Edition oraz pewne rozwaania na temat zarzdzania i uytkowania serwera.
Platforma SQL Server Mobile Edition jest zintegrowana z Visual Studio. Warto
wymieni kilka cech projektowych tej wersji produktu.
Dziki Server Explorer mona rejestrowa i wylicza wersje Mobile Edition

bazy danych. Mona nawet przeglda dane i zarzdza schematami,


korzystajc z Server Explorer.
Umoliwiono korzystanie z techniki przecignij-i-upu. Mona na przykad

przeciga tabele i kolumny do okna roboczego, eby utworzy kontrolki


zwizane z danymi.
Mechanizm SmartTask pozwala na tworzenie gwnych i szczegowych

widokw do wywietlania danych z tabeli.


Udostpniono obiekty biznesowe i usugi sieciowe wykorzystywane przez

SQL Mobile Edition.


Projektowanie end-to-end. Zaprojektowanie i wdroenie aplikacji SQL

Mobile Edition jest moliwe z wykorzystaniem pojedynczego projektu


Visual Studio.
Platforma SQL Mobile Edition wykorzystuje .NET Compact Framework

dla protokow dostpu do danych i interfejsw API.


Uytkownicy korzystajcy z SQL Mobile Edition z pewnoci doceni moliwoci tej platformy w zakresie zarzdzania bazami danych. We wczeniejszych
wersjach produktu administrowanie danymi byo nieco trudniejsze, gdy zwizek
pomidzy mobiln baz danych a SQL Server nie by zbyt cisy. SQL Server
2005 jest duo bardziej zintegrowany. Teraz mona zarzdza baz danych SQL
Server Mobile Edition na swoim osobistym komputerze lub na urzdzeniu
przenonym, korzystajc z programu SQL Server Management Studio. Aplikacja ta posiada wiele zalet. Poniej przedstawiam najbardziej interesujce waciwoci programu SQL Server Management Studio.
Graficzny plan zapyta, ktry pozwala projektantom na atwe

analizowanie sposobu wykonania zapyta, modyfikowanie ich


parametrw i zapoznawanie si z rezultatami dostrajania wydajnoci.
Mona przeglda plany projektowanych i wykonanych zapyta.
Nowy kreator subskrypcji, dziki ktremu tworzenie i pniejsza

synchronizacja bazy danych subskrypcji nie wymaga duego wysiku.

196

Rozdzia 4. Funkcje do projektowania baz danych

Integracja z usug SQL Server Integration Services, co pozwala

projektantom na importowanie i eksportowanie danych do i z rnych


rde danych, wczajc w to Microsoft Access, Oracle i IBM DB2.
Moliwo wykorzystywania plikw utworzonych za pomoc programu

kopiujcego Bulk (BCP). W ten sposb mona zwikszy skalowalno


wstpnej synchronizacji i wydajnoci dla dynamicznie filtrowanych
publikacji. W tym celu naley skorzysta z migawek, ktre zawieraj
plik, wstpnie utworzony za pomoc programu BCP.
W celu peniejszego zaspokojenia potrzeb zwizanych z zarzdzaniem bazami
danych, Mobile Edition wykorzystuje nowe funkcje replikacji. W ten sposb poprawia si skalowalno baz danych Mobile Edition, szczeglnie podczas wanych faz inicjalizacji i synchronizacji danych. SQL Server 2005 zapewnia lepsz
kontrol dla poczonej replikacji. Poniej wymieniono dwie nowe techniki.
Obsuga tylko pobranych (ang. download-only) artykuw (tabel). Ta

funkcja zmniejsza ilo metadanych transferowanych podczas synchronizacji


i skraca czas przetwarzania danych na platformie SQL Server podczas
wykonywania kolejnych synchronizacji.
Obsuga partycjonowanych (filtrowanych) artykuw. Wiele aplikacji

mobilnych (takich jak niektre aplikacje GPS suce do nawigacji) filtruje


dane w taki sposb, aby ich nie udostpnia innym urzdzeniom. Dziki
mechanizmowi partycjonowania mona znacznie zredukowa czas
synchronizacji i zwikszy skalowalno aplikacji. Ta funkcja jest
szczeglnie przydatna dla duych wdroe mobilnych urzdze.
UWAGA: SQL Server Mobile Edition obsuguje systemy operacyjne Pocket
PC 2002/3/4 i SmartPhone.

Ustawienia jzykowe w SQL Server 2005


Szacuje si, e jedna czwarta populacji ludzkiej posuguje si jzykami, ktrych
zapis wymaga uycia zoonego alfabetu. Mona tu wymieni takie jzyki jak
tajski, arabski, hebrajski, wietnamski, urdu, hinduski, tamilski, jidysz czy birmaski. SQL Server 2005 obsuguje skomplikowane alfabety i dwukierunkowo pisania tekstu.
Alfabet okrela si jako zoony, kiedy jest konieczna dodatkowa obsuga kodowania i wywietlania znakw (w odniesieniu do wymogw stawianych przez alfabet aciski). Oto kilka cech zoonego alfabetu:

Ustawienia jzykowe w SQL Server 2005

197

Dwukierunkowo tekstu. Ma miejsce wwczas, kiedy tekst pisany od

prawej strony do lewej, tak jak jest w jzyku arabskim lub hebrajskim,
jest czony z tekstem, ktry si pisze od lewej do prawej, tak jak w
przypadku jzykw europejskich. W przypadku wykorzystywania takich
moliwoci naley rozway takie kwestie jak kolejno czytania,
wyrwnanie tekstu i pozycja kursora.
Ksztatowanie kontekstowe. Niezbdne w przypadku alfabetu

arabskiego i hinduskiego, gdzie ksztat znaku zaley od kontekstu


(pooenia) wewntrz sowa. Powoduje to inny ryt.
czenie znakw. Ma miejsce wtedy, kiedy czy si dwa lub wicej

znakw, eby zdefiniowa nowy ryt, tak jak ma to miejsce w alfabetach


arabskim, tajskim i hinduskim.
Dzielenie sw i justowanie. Alfabet tajski nie uwzgldnia odstpw

pomidzy sowami. Aby wprowadzi dzielenie sw, jest potrzebny


wewntrzny sownik. Podobnie jest w przypadku alfabetw arabskich.
Odstpy pomidzy znakami, wprowadzone w celu wyjustowania tekstu,
spowoduj zniszczenie ksztatu znaku.
Kombinacje niedozwolonych znakw. Tego naley unika w przypadku

alfabetu tajskiego, gdy spowoduje to pojawienie si nieznanego rytu.


Kierunek czytania. Wizualny porzdek, w jakim s wywietlane znaki

i sowa oraz w jakim s odczytywane grupy sw.


Poprawione funkcje jzykowe pozwalaj silnikowi SQL Server i narzdziom zarzdzajcym na poprawn obsug wprowadzania, przechowywania i wywietlania znakw zoonego alfabetu, jednak nie uwzgldnia to lokalizacji ani mirroringu. Wczeniejsze wersje SQL Server obsugiway przechowywanie zoonych
i dwukierunkowych alfabetw, ale interfejs uytkownika nie obsugiwa wprowadzania i wywietlania takich znakw.
SQL Server 2005 obsuguje GB18030 standard kodowania znakw uywanych w Chiskiej Republice Ludowej. Wszystkie systemy komputerowe wykorzystywane w ChRL musz obsugiwa GB18030. GB18030 nie tylko definiuje
zakres znakw, ale take standaryzuje punkty kodowania znakw. Zawiera w sobie
Unicodes Unihan Extension A i definiuje kody odstpu dla wszystkich uywanych
i nieuywanych punktw kodowania Unicode poziom 0 (BMP) oraz 16 dodatkowych poziomw. Efektywnie tworzy relacj typu jeden-do-jednego pomidzy
czciami GB18030 i cakowit przestrzeni kodowania Unicode. GB18030 definiuje i wykorzystuje czterobajtowy mechanizm kodowania. GB18030 jest nowym standardem, wczeniejsza wersja SQL Server nie obsugiwaa go.

198

Rozdzia 4. Funkcje do projektowania baz danych

Twrcy Microsoft SQL Server 2005 wprowadzili obsug dla znakw zastpczych. Zadaniem Unicode jest obsuga pojedynczego punktu kodowego kadego
znaku w kadym jzyku, gdy do jego wywietlenia nie wystarcza 65 536 znakw.
Jzyki takie jak chiski wymagaj duej liczby znakw do zakodowania rzadko
wystpujcych liter. Tak wic obsuga w standardzie Unicode zostaa zwikszona
dla znakw zastpczych, eby mc obsuy dodatkowe 1 048 576 znakw.
Stref zastpcz w systemie Unicode jest zakres od U+D800 do U+DFFF, zawierajcy 1024 niskie wartoci zastpcze i 1024 wysokie wartoci zastpcze.
Kombinacja wysokich i niskich wartoci zastpczych pozwala na zakodowanie
ponad miliona moliwych znakw. Taki kod skada si z dwch znakw zastpczych: wysokiego i niskiego. Sprawdzanie znakw zastpczych sprowadza si do
porwnania zakresw z uwzgldnieniem skomplikowanych zasad, gdzie jest
wymagane sprawdzenie dwubajtowego systemu znakw (ang. double-byte character system DBCS).
Organizacje, ktre aktywnie dziaaj na terenie wschodniej Azji, takie jak rzd,
media, ubezpieczenia i suba zdrowia, wymagaj zapewnienia obsugi symboli
zastpczych, dziki czemu mona przechowywa i przetwarza dane w takich
jzykach jak chiski.

Wyszukiwanie penotekstowe
Niezalenie od tego, czy chodzio o wyszukiwanie danych w internecie, czy o nowy
model przeszukiwania dokumentw, Microsoft zawsze pokada wielkie nadzieje
w wyszukiwaniu penotekstowym (ang. Full-Text Search). Twrcy platformy
SQL Server 2005 rozwizali wiele problemw z zarzdzaniem i infrastruktur,
dziki czemu wyszukiwanie penotekstowe w SQL Server 2005 stao si technik
godn uwagi. Przede wszystkim naley tu wspomnie o uaktualnieniu MSSearch
do wersji 3.0, dziki czemu osignito nastpujce korzyci:
znacznie zwikszono wydajno penotekstowego indeksu bazy;
jedna instancja MSSearch 3.0 przypada na kad instancj SQL Server;
MSSearch 3.0 jest uruchamiany w ramach tego samego konta usugi, co

SQL Server.
Podczas wyszukiwania penotekstowego Microsoft SQL Server wykorzystuje
jedn instancj MSSearch dla kadej instancji SQL Server. Kada instancja
MSSearch uruchamia si w ramach tego samego konta usugi SQL Server. Jeli
administrator zmieni konto usugi SQL Server dla wybranej instancji, zwizane
z ni konto usugi MSSearch take si zaktualizuje. We wczeniejszych wer-

Wyszukiwanie penotekstowe

199

sjach SQL Server jedna instancja MSSearch, uruchomiona jako LocalSystem,


bya wspuytkowana przez wszystkie instancje i aplikacje na serwerze. W tym
podrozdziale przedstawi nowe cechy wyszukiwania penotekstowego, obsugiwanego przez SQL Server 2005.

Zapytania serwerw poczonych


Istnieje moliwo wprowadzania kwerend wyszukiwania penotekstowego odwoujcych si do zdalnego serwera. W ten sposb mona na platformie SQL
Server wykonywa polecenia zwizane z odwoywaniem si do rde danych
na rnych serwerach, obsugujcych OLE DB. Wczeniejsze wersje SQL Server pozwalay na tworzenie standardowych zapyta do poczonych serwerw,
ale nie obsugiway wyszukiwania penotekstowego dla poczonych serwerw.
Po zdefiniowaniu poczonego serwera mona wykonywa na nim zdalne zapytania. W tym celu naley skorzysta z indeksw penotekstowych i uy czteroczciowej penej kwalifikowanej nazwy serwera (ang. fully qualified four-part name).

Przeszukiwanie rnych kolumn


Przeszukiwanie penotekstowe mona wykonywa dla rnorodnych kolumn.
Wczeniejsze wersje SQL Server ograniczay odwoania do pojedynczej kolumny
albo do wszystkich w tabeli. SQL Server 2005 usuwa to ograniczenie, umoliwiajc wybr dowolnej liczby kolumn w celu okrelenia kolumn do wyszukiwania
penotekstowego.
List przeszukiwanych kolumn okrela si za pomoc argumentu column_list
predykatu penotekstowego. Kolumny wewntrz pojedynczej listy kolumn predykatu musz nalee do tej samej tabeli i nie mona korzysta ze znaku * na licie kolumn.

Specyfikacja jzyka w zapytaniu


Twrcy Microsoft SQL Server 2005 wprowadzili funkcj pozwalajc na dodawanie do zapytania penotekstowego parametru, ktry okrela lokalne ID (LCID).
W ten sposb mona wskaza, e dla okrelonej lokalizacji naley wykorzysta
takie zasoby jzykowe, jak dzielenie sw i ich odmiana, co pozwala na indeksowanie i przechowywanie w pojedynczej kolumnie danych zapisanych w rnych
jzykach. W ten sposb jest moliwe przetwarzanie zapyta w jzyku innym ni
domylny dla kolumny.

200

Rozdzia 4. Funkcje do projektowania baz danych

Mwic o zapytaniach penotekstowych, naley wymieni cztery sowa kluczowe:


CONTAINS, CONTAINSTABLE, FREETEXT i FREETEXTTABLE. W poprzednich
wersjach platformy te cztery predykaty nie akceptoway parametru LCID, okrelajcego dzielenie sw i ich odmian w zapytaniach. W SQL Server 2005
skadnia tych polece zostaa rozszerzona do specyfiki LCID.
UWAGA: W poprzednich wersjach SQL Server mona byo okreli jzyk zapytania penotekstowego tylko na poziomie kolumny, z wykorzystaniem procedur
skadowanych. Warto rozway sytuacj przedsibiorstwa, ktre utrzymuje bibliotek dokumentw przechowywanych w bazie danych SQL Server. S to dokumenty Microsoft Word, zawierajce informacje w rnych jzykach, na przykad w niemieckim, japoskim, amerykaskim angielskim i szwedzkim. Jeli
projektant ma utworzy zapytanie CONTAINSTABLE, przeszukujce posiadane
dokumenty zapisane w jzyku niemieckim, w wyniku ktrego nastpi wywietlenie wyszukanych dokumentw uporzdkowanych w najlepszy dla tego jzyka
sposb, to moe okreli niemiecki LCID w napisanym zapytaniu.

Zapytania a widoki
Platforma SQL Server 2005 pozwala na wywietlanie wynikw penotekstowych
zapyta indeksujcych w widokach. W przypadku wczeniejszych wersji SQL
Server mona byo jedynie wczy zapytania do tabel w indeksach penotekstowych i wykorzysta je w dalszych operacjach wyszukiwania. Platforma SQL Server 2005 moe wykonywa zapytania na widokach indeksw penotekstowych,
opartych na jednej lub wikszej liczbie tabel, przeprowadzajc t operacj w taki
sam sposb, jak w przypadku przeszukiwania tabel.

Indeksowanie danych typu XML


Wyszukiwanie penotekstowe w SQL Server 2005 obsuguje tworzenie penotekstowych indeksw i penotekstowych zapyta do danych typu XML. Zapytania
s tak dokadne, jak wartoci w kolumnach. Predykat penotekstowy, zastosowany
dla indeksowanej penotekstowej kolumny XML, zwraca wiersze zawierajce
poszukiwany cig znakowy w dowolnym miejscu kolumny. Istniej nastpujce
moliwoci wyboru sposobw indeksowania w indeksie penotekstowym:
wedug nazwy znacznika i jego pola (treci);
wedug tylko wartoci atrybutu znacznika i jego pola (treci);
wedug tylko pola (treci) znacznika2.
2

Przyjto nastpujcy schemat znacznika XML: <nazwa_znacznika atrybut=warto_


atrybutu>pole_znacznika</nazwa_znacznika> przyp. red.

SQL Server Express

201

SQL Server Express


W tym podrozdziale przedstawi najnowsze i prawdopodobnie najciekawsze
narzdzie do projektowania, dostpne na platformie SQL Server SQL Server
Express. Warto to omwienie poprzedzi krtk analiz starszych narzdzi tego
typu i porwna platform SQL Server Express z Microsoft Desktop Engine
(MSDE) i Microsoft Access. Opisz take, w jaki sposb naley zarzdza i projektowa aplikacje bazodanowe za pomoc platformy SQL Server Express.
Kadego dnia mona znale doniesienia o tym, jak Microsoft udaremnia rnym mniejszym przedsibiorstwom konkurowanie ze sob lub spowodowa ich
upadek poprzez swoje miadce posunicia marketingowe. Mona si rwnie
spotka ze stwierdzeniami, e Microsoft nie odpowiada konkurencji w sensowny
sposb albo e odpowiedzi te s spnione. By moe te twierdzenia s prawdziwe
w wielu dziedzinach oprogramowania, ale baz danych nie dotycz. Microsoft
cay czas ledzi postpy MySQL. W cigu ostatnich dwch lat MySQL gwatownie zwikszy swj udzia na rynku relacyjnych baz danych (RDBMS), mimo
e w tym czasie gwni gracze uwaali, e to ju koniec walki. Uwaano, e
Oracle, Microsoft i IBM s jedynymi znaczcymi producentami baz danych
wykorzystywanych przez przedsibiorstwa. Okazao si jednak, e MySQL sta
si na rynku prawdziw potg. Jest to darmowe oprogramowanie, dziaa w systemach Windows i Linux, ponadto jest proste w uytkowaniu. Wykonuje zadania, ktrych oczekuje si od prostych baz danych przechowuje dane. Ponadto
atutem MySQL na rynku projektowania baz danych jest proste licencjonowanie.
Dodatkow wan kwesti jest to, e twrcy aplikacji powinni na bieco rozwija swoje produkty, albo przez dodawanie nowych funkcji, albo nawet przez
wdraanie nowych technologii. Dla takich osb MySQL jest doskonaym rozwizaniem.
Microsoft by w trakcie przygotowania platformy SQL Server 2005, kiedy
otrzyma bardzo bolesn lekcj. W lutym 2001 roku robak SQL Slammer skutecznie zaatakowa ogromn liczb serwerw internetowych, czym zmusi
Microsoft do dokadnego przeanalizowania przyczyny problemw MSDE.
MSDE by dostpny wraz z poprzednimi wersjami SQL Server. Z punktu widzenia marketingu i rozwoju produktu, MSDE sta si do kopotliwym elementem. W ten sytuacji Microsoft postpi w standardowy sposb opublikowa
raport o szkodliwym kodzie i dostarczy stosown poprawk, jednak problem
nie polega na braku poprawki. Problemem byo to, e administratorzy systemw informatycznych nie wiedzieli, ktry produkt na ktrych komputerach korzysta z MSDE w sposb niejawny.

202

Rozdzia 4. Funkcje do projektowania baz danych

W tym interesujcym momencie MSDE sta si bardzo niepopularny. MySQL


powoli zacz przejmowa cz rynku licencji SQL Server Standard, wic
Microsoft musia zareagowa. W ten sposb pojawi si SQL Server Express. Seria Express produktw Microsoft zostaa zaprojektowana z myl o filozofii open-source, zapewnieniu rozszerzalnoci itp., jednak z zastrzeeniem, e to s wci
produkty Microsoft i ich kod nie jest do koca otwarty. eby doda kolejn
zmienn do tego intrygujcego rwnania, spoeczno open-source krytykowaa
pocztkujcych projektantw, cho mniejsza liczba projektantw tworzcych aplikacje w technologii Microsoft nie oznaczaa mniejszej sprzeday aplikacji Microsoft.
Oto kilka interesujcych cech platformy SQL Server Express, o ktrych warto
pamita:
SQL Server Express posiada wiele cech SQL Server Standard Edition;
jego licencja nie wymaga uiszczania opat w przypadku dalszej dystrybucji;
mona pobra narzdzie do zarzdzania, uatwiajce przeprowadzanie

podstawowych czynnoci administracyjnych;


domylnie jest zabezpieczony.

Integracja z Visual Studio


Modele biznesowe zawsze byy proste: trzeba tylko zadowoli projektantw,
a reszta bdzie dziaa poprawnie. W ramach tej filozofii Microsoft dostarczy
now edycj Visual Studio przeznaczon dla pocztkujcych i jest ona darmowa.
Microsoft Visual Basic Express i Microsoft Visual Web Developer s dwoma
podstawowymi narzdziami projektowymi dla SQL Server Express.
Microsoft reklamuje SQL Server 2005 i Visual Studio 2005 jako najlepsze technologie projektowania aplikacji bazodanowych, zarwno tych opartych na WWW,
jak i dziaajcych w systemach Windows (Czytelnik mgby zauway, e jestem
maniakiem bazodanowym, poniewa sowo aplikacja kojarz z baz danych
tak jakby nie byo innych rodzajw aplikacji!). Nawet Xbox korzysta z rnych
baz danych. atwo zauway, e Microsoft zaprojektowa kilka technologii pod
nazw Express. Oczywist prawd jest, e kiedy jaka technologia open-source
osiga poziom dostpnoci i atwoci uycia, staje si liczc si technologi. Do
produktw Express zaliczaj si aplikacje z linii Visual Studio i SQL Server.
Oto pi produktw Express sucych do projektowania aplikacji:
Visual Basic.NET Express dla aplikacji Windows Forms;
Visual Web Developer dla aplikacji ASP.NET;

SQL Server Express

203

Visual C# Express dla aplikacji Windows Forms;


Visual C++ Express dla aplikacji Windows Forms;
Visual J# Express dla aplikacji Windows Forms.

SQL Server Express rwnie naley do tej rodziny. Podczas pobierania dowolnego
produktu Visual Studio Express mona rwnie pobra SQL Server Express.
Podczas instalowania SQL Server Express przy instalacji jednego z produktu
Visual Studio Express, SQL Server Express instaluje si z domyln nazw instancji (SQLEXPRESS). Jeli SQL Server Express zosta ju zainstalowany, nie
jest instalowana inna jego wersja.

Czy SQL Server Express wystarczy?


Jakie cechy rodowiska programistycznego s potrzebne pocztkujcym projektantom? SQL Server Express udostpnia wszystkie kluczowe technologie
(XML, CLR, SQL transakcyjny), podobnie jak SQL Server Standard Edition.
Czy wobec tego SQL Server Express moe by porwnywany do MSDE 2000,
ktry bdzie obsugiwany jeszcze tylko przez krtki czas? MSDE by rozprowadzany wraz z aplikacjami przez kilka lat. Wraz z nadejciem SQL Server Express
zmieniono kilka elementw wsppracy z MSDE.
Projektowanie i wdraanie. SQL Server Expres jest instalowany

za pomoc programu instalacyjnego opartego na MSI, ktry pozwala


skryptom WMI na kontrolowanie procesu instalacji i konfiguracji.
MSDE mona byo instalowa rnymi metodami, co powodowao,
e instalacja i zarzdzanie byy niespjne.
SQL Server Express jest domylnie wyczony, trzeba wic samodzielnie

zadba o jego zabezpieczenia. MSDE z Service Pack 3a jest odczony


od sieci. Czynnoci zabezpieczajce mona przeprowadzi poprzez
Centrum Zabezpiecze w Windows XP Service Pack 2 i Windows 2003
Service Pack 1.
Bardzo wane jest, aby uytkownicy zablokowali moliwo aktualizacji aplikacji korzystajcych z MSDE 2000. Niektre podstawowe rnice pomidzy
dwoma wersjami produktw przedstawiem w tabeli 4.6. Microsoft nadal bdzie
rozwija MSDE.
Zastosowanie platformy SQL Server 2005 w wersji Express naley rozway
w przypadku wikszej bazy danych, aby zapewni sobie zwikszenie wygody
zarzdzania.

204

Rozdzia 4. Funkcje do projektowania baz danych

Tabela 4.6. Porwnanie SQL Server Express i MSDE


SQL Server Express 2005

MSDE 2000

Obsuga Application XCopy

Opcja niedostpna

Brak SSIS (zmiana nazwy z DTS)

Obecne rodowisko DTS

Proste wdroenie; brak Microsoft Data Access


Components (MDAC)

MDAC jest czci instalacji

tylko MSI

MSI i MSM

Replikacja klienta transakcyjna, poczeniowa


i migawkowa

Obsuga poczenia lub publikacji migawki stanowi


dodatek do subskrypcji replikacji

Dobry interfejs uytkownika programu instalacyjnego

Podstawowy interfejs instalatora

Brak SQL Agent

SQL Agent obecny

Obsuga Windows 2000 SP4, Windows XP SP1


i Windows 2003

Obsuga Windows 98, Windows Me, Windows 2000,


Windows XP, Windows NT 4 i Windows 2003

Obsuga CLR

Brak obsugi CLR

Narzdzia GUI

Brak narzdzi GUI

Limit bazy danych: 4GB

Limit bazy danych: 2 GB

Jeden procesor, 1GB RAM

Dwa procesory, 2 GB RAM

Brak kontroli przepustowoci (ang. throttle)

Wymuszanie przepustowoci zgodnie z obcieniem

W rzeczywistoci wielu uytkownikw ocenia aplikacje zaprojektowane na podstawie MSDE jako nisko kosztowe, nisko transakcyjne i nisko budetowe. W przypadku takich domowych aplikacji istnieje tylko niewielka motywacja, eby migrowa je do SQL Server Express. Jak przedstawi w dalszej czci tego rozdziau,
platforma SQL Server Express ma stanowi baz danych dla pocztkujcych,
jednak najczciej uytkownicy stawiaj pierwsze kroki w dziedzinie baz danych,
korzystajc z Microsoft Access. Jak mona wic porwna SQL Server Express
z Access?
Microsoft SQL Server Express zosta wyposaony w bazodanowy silnik Jet, ktry
jednak nie sprawdza si przy wykonywaniu bardziej zaawansowanych operacji, takich jak na przykad uaktualnienie do SQL Server Standard Edition. Baza danych
oparta na silniku Jet zapewnia jednake siln integracj z aplikacjami pakietu Office, czyli z Microsoft Access. Ponadto jest dostarczana z wieloma atwymi do uycia
aplikacjami i moe by atwo wbudowywana w bardziej zaawansowane aplikacje. To
s najwaniejsze przyczyny sukcesu Accessa. Jeeli jest potrzebna baza danych
klientw lub magazynu, wystarczy wykorzysta przykadow baz danych Access.
Z drugiej strony, jeeli kto uwaa, e jego baza danych ktrego dnia bdzie moga
si sta baz SQL Server Standard albo jeli zechce sta si znakomitym projektantem aplikacji bazodanowych, musi zastanowi si nad nauk obsugi SQL Server
Express. Osoby, ktre staraj si utrzyma koszty dziau IT pod kontrol, doceni,
e SQL Server Express jest bezpatn aplikacj i e atwo poddaje si migracji i zarzdzaniu dziki temu, e zosta oparty na technologii SQL.

SQL Server Express

205

Ograniczenia platformy SQL Server Express


W tym podrozdziale krtko przedstawi niektre ograniczenia platformy SQL
Server Express.

Obsuga replikacji
Platforma SQL Server Express umoliwia udzia w replikacji jako subskrybent,
co moe mie na celu utworzenie poczenia, migawki i replikacji transakcyjnej.
SQL Server Express moe korzysta ze wszystkich nowych funkcji replikacji,
tak jak to opisaem w rozdziale 3. Korporacyjne zarzdzanie danymi. Dodatkowo SQL Server moe przeprowadza synchronizacj na danie lub zaplanowan.
W tym celu naley si posuy narzdziem Windows Synch Manager.

SQL Service Broker


Aby aplikacja na platformie SQL Server Express moga korzysta z usugi SQL
Service Broker, trzeba zapewni poczenie z innymi edycjami SQL Server.
Chocia SSB jest zaimplementowany jako seria rozszerze SQL transakcyjnego,
SQL Server Express nie moe by rwnorzdnym partnerem w dialogu z SSB.
Kiedy instancja Express otrzymuje komunikat od innej instancji Express i komunikat nie zostaje przetworzony, zostaje on porzucony. Innymi sowy, SQL Server Express nie moe by rdem komunikatu. Komunikat musi zosta przekazany aplikacji SSB opartej na SQL Server Standard Edition lub Enterprise
Edition. Celem tego ograniczenia jest ochrona licencji innych edycji SQL Server.

Ustawienia jzykowe
Platforma SQL Server Express jest dostarczana w 12 jzykach, okrelonych przez
inne edycje SQL Server. SQL Server Express jest take zgodny z innymi edycjami
pod wzgldem obsugi ustawie jzykowych.

Obsuga technologii 64-bitowej


SQL Server Express zapewnia obsug technologii Windows on Windows (WOW)
na komputerach 64-bitowych. Oznacza to, e mona uruchomi 32-bitowe
wersje programu na 64-bitowej maszynie. W rzeczywistoci 64-bitowa wersja SQL
Server Express nie istnieje.

206

Rozdzia 4. Funkcje do projektowania baz danych

Instalacja i konfiguracja
Platforma SQL Server Express jest jednym z mniej skomplikowanych programw
bazodanowych pod wzgldem instalacji. SQL Server Express korzysta z tego
samego, opartego na MSI, programu instalacyjnego Windows, co inne platformy
z linii SQL Server. Obecne jest drzewo instalacji oraz Setup Consistency Checker.
Prawdziw przewag nad MSDE daje interfejs uytkownika podczas instalacji
MSDE nie miao go w ogle. Interfejs uytkownika SQL Server Express ma
znajomy wygld. Platforma SQL Server Express moe by te zainstalowana
bez uycia interfejsu uytkownika, z wykorzystaniem linii polece.
Przed zainstalowaniem SQL Server Express naley rozway kilka istotnych
kwestii. Przede wszystkim trzeba pamita, e SQL Server Express wymaga
systemu operacyjnego z.NET Framework 2.0. W przeciwnym przypadku SQL
Server Express nie zostanie zainstalowany. SQL Server nie jest dostarczany razem z .NET Framework 2.0. Z drugiej strony, SQL Server Express mona pobra i zainstalowa wraz z dowoln edycj Visual Studio Express. Najwaniejsz
zalenoci z .NET Framework jest integracja z CLR. SQL Server wykorzystuje
rwnie zestawy zainstalowane przez .NET Framework do tworzenia interfejsu
uytkownika podczas instalacji. .NET Framework nie powinien by problemem
dla projektantw, poniewa Microsoft bardzo rozpowszechnia to rodowisko
nawet Windows Update zawiera .NET Framework. Piszc wic swoje aplikacje,
trzeba pamita o uwzgldnieniu kodu sprawdzajcego, czy .NET Framework
2.0 zosta zainstalowany i czy jest to waciwa wersja.
Po rozpoczciu instalacji trzeba wybra nazw dla instancji programu. Instancj
mona traktowa jak kompletn kopi programu. SQL Server Express obsuguje
do 15 instancji na pojedynczej maszynie. SQL Server obsuguje ich ju do 50 na
jednym komputerze. Microsoft poszed na pewne ustpstwa, oznajmiajc projektantom, e aby uatwi zarzdzanie aplikacj, SQL Server Express powinien
by instalowany w domylnej instancji, nazwanej SQLEXPRESS. Takie postpowanie ma sens, poniewa wszystkie bazy danych znajduj si wewntrz jednej
instancji i nie koliduj ze sob. Wykorzystanie domylnej instancji chroni przed
innymi potencjalnymi problemami z zarzdzaniem, poniewa potrzeba mniej pamici RAM, mniej miejsca na dysku i w ogle powstaje mniej komplikacji, szczeglnie w przypadku pocztkujcych projektantw. Inn korzyci jest to, e domylna instancja pozwala na zarzdzanie wszystkimi metadanymi w jednej nadrzdnej
systemowej bazie danych i trzeba zapamita tylko jedno haso administratora.
W przypadku wyboru instalacji nazwanej wersji SQL Server Express wszystkie
skadniki zostan zainstalowane w osobnej instancji. W pewnych sytuacjach takie rozwizanie jest korzystne, jednak zwykle najbardziej sensowne jest instalowanie serwera pod domyln nazw. Jeli wybrano nazwan instancj, nazwa
domylna jest dostpna dla instalacji innych aplikacji.

SQL Server Express

207

Tzw. cicha instalacja SQL Server Express rwnie jest moliwa i przydatna
w przypadkach, gdy przewiduje si instalowanie SQL Server Express na maszynach uytkownikw bez sprawdzania wczeniej zainstalowanego oprogramowania. Microsoft sugeruje dodanie do aplikacji kodu weryfikujcego istnienie
kopii SQL Server Express przed prb instalacji nowej aplikacji i bazy danych.
Jeeli zostanie wybrana instalacja poza istniejc instancj, naley poda nazw
dla nowej instancji. Podczas cichej instalacji (pojcie to w rzeczywistoci oznacza instalacj z poziomu linii polece) podajemy nazw dla odpowiedniej instancji. Projektanci tworzcy pakietowe aplikacje, ktre instaluj SQL Server
Express, mog zapisa dane konfiguracji w pliku. Plik ten powinien by jednak
usunity lub zabezpieczony po zakoczeniu instalacji. W celu skonfigurowania
procesu instalacji mona te skorzysta z Server Management Objects (SMO)
lub SQLCMD.
Waciwa instalacja wersji Express, wykonana przy uyciu interfejsu uytkownika, jest bardzo podobna do instalacji innych edycji SQL Server. Drzewo instalacji poszczeglnych funkcji jest takie samo. Nastpnie w obydwch przypadkach uruchamia si Setup Consistency Checker. Dodatkowo mona uruchomi
instalacj, nie posiadajc Windows Installer 3.0. Mona go pobra z witryny
Windows Download. Zosta on doczony take do ostatnich pakietw serwisowych
(service pack).
Po zakoczeniu instalacji SQL Server Express dane s bezpieczne. SQL Server
Express zosta oparty na nowym modelu bezpieczestwa aplikacji Microsoft
i dlatego domylnie jest wyczony. Jedn z pierwszych czynnoci jest podjcie
decyzji o ustawieniach bezpieczestwa SQL Server Express. Domylnie pami
dzielona jest wczona, ale usuga SQL Server Express Server Service (niech kto
sprbuje wypowiedzie to trzy razy szybciej) pozostaje wyczona w trakcie
dziaania programu instalacyjnego. Korzystajc z nowego narzdzia Server Surface Area Configuration (SSAC), mona odpowiednio ustawi poziom zabezpiecze i usugi. Narzdzie SSAC umoliwia kontrol bezpieczestwa i funkcjonalnoci oferowanych przez SQL Server Express. SQL Server posiada dwie
gwne grupy Services and Connections i Features. W panelu Features mona
znale kilka interesujcych narzdzi kontrolujcych dziaanie takich funkcji jak
na przykad CLR. Naley pamita, e s one domylnie wyczone, przed
projektowaniem aplikacji naley je wic wczy. Domen dziaania narzdzia
SSAC jest lokalny komputer, wic kady komputer posiada wasn kopi, ktra
jest instalowana domylnie.

208

Rozdzia 4. Funkcje do projektowania baz danych

Protokoy obsugiwane przez SQL Server Express


Platforma SQL Server Express moe zosta wykorzystana jako lokalna aplikacja
bazodanowa albo w klasycznym schemacie klient-serwer. Kady z tych scenariuszy wymaga rnych parametrw poczenia i ustawie bezpieczestwa.
Kiedy SQL Server Express wykorzystuje poczenie sieciowe, trzeba wczy
nowe narzdzie SQL Browser. SQL Browser wskazuje aplikacji pooenie poszczeglnych baz danych w sieci. Jeeli uruchomiono SQL Browser, naley
zwikszy poziom zabezpiecze, wczajc w to porty niewykorzystane domylnie przez SQL Server. Naley zmienia ustawienia aplikacji przy kadej zmianie portu, ale poniewa pewne przypisania portw wymagaj interwencji administratora, po ich przypisaniu najprawdopodobniej bd czsto przez nich
zmieniane. Dostp do wszystkich wymienionych protokow jest zarzdzany
poprzez SQL Computer Manager. Kady protok moe by wczony lub wyczony poprzez kliknicie prawym przyciskiem myszy.
Pami dzielona. Jest to najprostszy w uytku protok, ktry nie posiada

ustawie konfigurowalnych. W zwizku z tym, e klienty, korzystajc


z tego protokou, mog poczy si z instancj SQL Server uruchomion
na tym samym komputerze, omawianego protokou nie mona
wykorzystywa w aplikacjach dziaajcych w rodowisku sieciowym.
TCP/IP. Standardowy protok, powszechnie stosowany w internecie.

Zawiera mechanizmy wybierania trasy dla ruchu sieciowego i oferuje


zaawansowane funkcje zabezpiecze. Jest to najbardziej popularny
protok w codziennym zastosowaniu biznesowym. Konfiguracja
komputera do korzystania z TCP/IP moe by skomplikowana,
ale wikszo komputerw jest ju poprawnie skonfigurowana.
SQL Native Client. Zarzdzany dostawca bazodanowy, stanowi

cze rodowiska .NET Framework. Oferuje najlepsz i najbardziej


bezpieczn metod dostpu do bazy danych SQL Server Express.
Potoki nazwane. Protok dostpu klienta zawierajcy TCP/IP, ktry

z kolei jest standardem protokou dostpu do informacji za porednictwem


sieci, wczajc w to internet!
Jak wida, dla wielu organizacji SQL Server Express nie jest wystarczajcym
rozwizaniem, nawet w przypadku maych wdroe aplikacji. Jest to aplikacja
bazodanowa dla pocztkujcych. Zalet SQL Server Express jest moliwo redystrybucji i proste uaktualnienie do innych wersji SQL Server.

Podsumowanie

209

Podsumowanie
W niniejszym rozdziale przekrojowo opisaem wszystkie nowe funkcje, ktre s
dostpne dla projektantw skalowalnych aplikacji tworzonych w technologii
Microsoft i zgodnych z SQL Server 2005. Czytelnik mg si przekona, e
SQL Server nie jest zwykym RDBMS, ale raczej platform aplikacji bazodanowych, suc do tworzenia szerokiej gamy aplikacji, opartych na rnych
modelach architektury. Nowe funkcje zmusz administratorw do nauki zarzdzania aplikacjami i zmagania z .NET w warstwie danych. Z punktu widzenia
zarzdzania IT, nowe funkcje oznaczaj oszczdno kosztw w czasie wdroe
i elastyczno w biznesie.
Jak Czytelnik mg zauway, kilka nowych technologii skada si na integracj
CLR, XML, nowych typw danych i nowej wersji SQL Server Express. Wszystkie
te cechy zwikszaj moliwoci programistyczne.

You might also like