Professional Documents
Culture Documents
Programowanie. Od podstaw
Autor: Robert Vieira
Tumaczenie: Piotr Balczyski, Maria
Chaniewska, Grzegorz Kostek
ISBN: 83-246-0653-X
Tytu oryginau: Beginning SQL Server 2005 Programming
Format: B5, stron: 728
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Wstp ......................................................................................................................................................... 15
Rozdzia 1. Podstawy RDBMS z czego skada si baza danych SQL Server .................................... 21
Przegld obiektw bazy danych ...................................................................................... 22
Obiekt Baza danych ................................................................................................. 22
Dziennik transakcji .................................................................................................. 27
Najbardziej podstawowy obiekt bazy danych tabela ................................................ 27
Grupy plikw ........................................................................................................... 29
Diagramy ................................................................................................................ 29
Widoki .................................................................................................................... 31
Procedury skadowane ............................................................................................. 31
Funkcje zdefiniowane przez uytkownika .................................................................... 32
Uytkownicy i role .................................................................................................... 32
Reguy .................................................................................................................... 33
Wartoci domylne .................................................................................................. 33
Typy danych zdefiniowane przez uytkownika ............................................................. 33
Katalogi wyszukiwania penotekstowego ................................................................... 33
Typy danych w systemie SQL Server .............................................................................. 34
Wartoci NULL ........................................................................................................ 38
Identyfikatory obiektw w systemie SQL Server ............................................................... 39
Nazwy .................................................................................................................... 39
Konwencje nazewnicze ............................................................................................ 39
Podsumowanie ............................................................................................................ 40
Spis treci
Spis treci
10
Spis treci
11
12
Skoro poznalimy ju rne rodzaje obiektw wystpujcych w systemie SQL Server, powinnimy dowiedzie si, jak je znale. Przyda si rwnie wiedza na temat monitorowania
systemu.
W niniejszym rozdziale zapoznamy si z narzdziami oferowanymi przez SQL Server.
Niektre speniaj tylko kilka wysoce wyspecjalizowanych funkcji, inne pozwalaj wykona ca mas rnych zada. Wikszo z nich jest czci systemu SQL Server od dawna.
Jedno jest pewne: wszystko, co ma jakikolwiek zwizek z zestawem narzdzi systemu SQL
Server, zostao poddane gruntownemu przegldowi podczas opracowywania wersji 2005.
Gwnym celem zespou zajmujcego si projektowaniem narzdzi tej edycji systemu byo
uproszczenie problemu zawartego w pytaniu: Gdzie mona znale to narzdzie?. Mog
powiedzie, e z punktu widzenia pocztkujcych uytkownikw systemu cel ten zosta
zrealizowany (oczywicie starzy wyjadacze, tacy jak ja, bd sobie zadawa pytanie: Gdzie
si to wszystko podziao?).
W tym rozdziale omwimy niektre spord poniszych narzdzi:
n
Report Manager,
sqlcmd.
42
Czy Books Online to narzdzie? Wydaje mi si, e tak. Niezalenie od tego, ile razy przeczytasz t lub inne ksiki dotyczce systemu SQL Server, nie zdoasz zapamita wszystkiego, co musisz o nim wiedzie. SQL Server jest jednym z moich flagowych produktw,
a i tak nie mog wszystkiego zapamita. Books Online to po prostu jedno z podstawowych
narzdzi systemu SQL Server.
Uwaam, e ksiek lub innych materiaw dotyczcych programowania nigdy nie
jest za wiele. Zaczem programowa mniej wicej w 1980 r. Wtedy mona byo zapamita wikszo rzeczy (cho nie wszystkie). Obecnie jest to po prostu niemoliwe.
Jeli jeste wszechstronnym programist (co jest do trudne w obecnych czasach),
masz po prostu zbyt wiele zagadnie do zapamitania, za te rzeczy, ktrych nie
uywasz kadego dnia, s tracone wraz z obumierajcymi komrkami mzgu.
Krtka rada: nie staraj si nawet zapamita tego wszystkiego. Trzeba pamita, e
co si da zrobi. Trzeba pamita to, co stanowi integraln podstaw naszych
dziaa. Trzeba pamita o tym, z czym mamy codziennie do czynienia. I trzeba w kocu
pamita o budowaniu ksigozbioru podrcznego (zaczynajc od tej ksiki).
Books Online wykorzystuj zmodernizowany interfejs pomocy online .NET, ktry zastpuje
uywany dotd standardowy interfejs pomocy, stosowany w serii produktw technicznych
Microsoft (BackOffice, MSDN i Visual Studio).
Wszystko dziaa tutaj zgodnie z oczekiwaniami, wic nie bd si zagbia w szczegy
obsugi systemu pomocy. Wystarczy powiedzie, e SQL Server Books Online to wspaniay
poradnik, z ktrego mona korzysta niezalenie od tego, na jakiej maszynie si pracuje.
Books Online zazwyczaj zawieraj te uaktualnione informacje, ktrych nie mona znale
w drukowanej dokumentacji.
Nie w kadym systemie, na ktrym przyjdzie Ci pracowa, zainstalowane bd Books
Online (BOL). Dzieje si tak, gdy mona usun zaznaczenie opcji instalowania BOL
w momencie instalacji serwera SQL. Zalecam jednak instalowanie BOL nawet wtedy, gdy
dysponuje si mocno ograniczon iloci miejsca na dysku. Nie zajmuj one tak duo
miejsca, zwaszcza jeli rozway si koszt jednego megabajta dysku. Dziki dostpowi
do tego poradnika na dowolnej maszynie z systemem SQL Server mona zaoszczdzi
mnstwo czasu (na moim komputerze Books Online zajmuj 100 MB).
Rozdzia 2. n Narzdzia
43
Rysunek 2.1
zarzdzania usugami,
konfiguracji sieci.
44
Zarzdzanie usugami
SQL Server to duy produkt. Jego rne czci korzystaj z szeregu usug dziaajcych w tle.
Pena instalacja obejmuje siedem usug. Wszystkimi mona zarzdza z poziomu moduu
SQL Server Configuration Manager.
Usugi, ktrymi mona zarzdza z tego poziomu, obejmuj:
n
Konfiguracja sieci
Na og kwestie zwizane z poczeniami sieciowymi zale od konfiguracji sieci klienta
i dopasowania konfiguracji klienta do ustawie zastosowanych na serwerze.
SQL Server zapewnia kilka tzw. bibliotek sieciowych (ang. Net-Libraries lub NetLibs). S
to biblioteki doczane dynamicznie (DLL), wykorzystywane przez SQL Server do komunikacji z niektrymi protokoami sieciowymi. NetLibs to pewnego rodzaju warstwa izolacji
pomidzy aplikacj klienck a protokoem sieciowym, bdcym w zasadzie jzykiem, za
pomoc ktrego porozumiewaj si midzy sob karty sieciowe. Biblioteki te speniaj ten
sam cel rwnie na serwerze. NetLibs dostarczone w systemie SQL Server 2005 obejmuj:
n
Named Pipes,
TCP/IP (domylny),
Shared Memory,
VIA.
Rozdzia 2. n Narzdzia
45
Odpowied z systemu SQL Server wysyana jest w tym samym porzdku, ale w przeciwnym
kierunku.
Jeli znasz protok TCP/IP, to powiniene wiedzie, e domylnym portem, na ktrym
bdzie nasuchiwa IP NetLib, jest 1433. Port mona porwna do kanau radiowego
sygnay skacz dookoa na rnych czstotliwociach, ale moesz z nich odnie
jak korzy tylko wtedy, gdy nasuchujesz na waciwym kanale.
46
Protokoy
Zacznijmy od pytania: Z czego moemy wybiera?. Po uruchomieniu moduu SQL Server
Configuration Manager i rozwiniciu listy drzewiastej SQL Server 2005 Network Configuration zobaczymy to, co zostao zaprezentowane na rysunku 2.3.
Rysunek 2.3
Domylnie wczona jest opcja Shared Memory i TCP/IP. W starszych wersjach produktu w zalenoci od wersji systemu operacyjnego lub SQL Servera wczone
byy domylnie rne opcje.
Aby mc zdalnie poczy si z systemem SQL Server (np. z serwera internetowego lub
z dowolnego klienta w sieci), naley wczy przynajmniej jedn z pozostaych bibliotek
NetLib.
Aby zobaczy, czego nasz serwer mgby nasuchiwa, rozwiniemy element Protocols for
SCHWEITZER, znajdujcy si w grupie SQL Server 2005 Network Configuration, co zilustrowano na rysunku 2.4.
Naley pamita o tym, e jeli klient ma nawiza poczenie z serwerem, to serwer musi
korzysta z tego samego protokou co klient i nasuchiwa na tym samym porcie. Dlatego
te, gdybymy przebywali w rodowisku potokw nazwanych (ang. named pipes), to by
moe musielibymy doda now bibliotek. Aby tego dokona, musielibymy przej do
elementu Protocols, klikn prawym przyciskiem protok Named Pipes i wybra polecenie
Enable (wcz).
Rozdzia 2. n Narzdzia
47
Rysunek 2.4
W tym momencie mgby zapyta, dlaczego nie wczymy po prostu wszystkich bibliotek NetLib. Chyba dziki temu nie musielibymy si o nic martwi? Niestety w tej
sytuacji, podobnie jak w przypadku dodawania czegokolwiek do serwera, efekt jest
taki sam spadek wydajnoci. W tym przypadku z jednej strony spowolnioby to
serwer (w niewielkim stopniu, ale jednak), a z drugiej mogoby obniy poziom bezpieczestwa (po co zostawia otwarte drzwi, jeli nie zamierzamy ich uywa?).
Zobaczmy teraz, ktre protokoy powinnimy wybra i dlaczego.
Named Pipes
Potoki nazwane mog by uyteczne, gdy niedostpny jest protok TCP/IP lub nie mamy
dostpu do serwera DNS (ang. Domain Name Server) pozwalajcego na stosowanie nazw
serwerw w sieciach TCP/IP.
Podczenie si za pomoc adresu IP, a nie nazwy, do systemu SQL Server obsugujcego protok TCP/IP jest technicznie wykonalne. Dziaa to zawsze, nawet wtedy, gdy nie
istnieje usuga DNS pod warunkiem e istnieje ustalona trasa z klienta do serwera
(jeli ma adres IP, to nie potrzebuje nazwy).
48
TCP/IP
TCP/IP zosta uznany za standardowy protok sieciowy i by uywany jako domylny ju
w wersji SQL Server 2000. Jest to zreszt jedyna opcja w przypadku czenia si z systemem
SQL Server przez internet, ktry wykorzystuje przecie tylko IP.
Nie naley myli dwch poj: czym innym jest udostpnienie serwera baz danych
na uytek serwera internetowego, a czym innym umoliwienie bezporedniego dostpu do serwera baz danych z internetu. Mona wystawi w internecie serwer internetowy, ktry ma dostp do niedostpnego bezporednio z internetu serwera baz
danych (dania do serwera baz danych przychodzce z internetu przechodz przez
serwer internetowy).
Bezporednie wystawienie serwera baz danych w internecie stanowi ogromne zagroenie bezpieczestwa. Jeli koniecznie trzeba to zrobi (i istniej uzasadnione
powody takiego dziaania), to naley zwrci szczegln uwag na zapewnienie odpowiednich rodkw bezpieczestwa.
Shared Memory
Pami dzielona usuwa konieczno przekazywania parametrw midzy procesami, co jest
sposobem pakowania informacji przed wysaniem ich przez granice midzy procesami. Dochodzi do tego w sytuacji, gdy klient i serwer zostay uruchomione na tej samej maszynie.
Klient ma bezporedni dostp do tego samego odwzorowanego w pamici pliku, w ktrym
serwer przechowuje dane. Takie rozwizanie jest bardzo szybkie. Mona je zastosowa tylko
w przypadku lokalnego dostpu do serwera (tzn. z serwera internetowego zainstalowanego
na tej samej maszynie co serwer baz danych), ale wie si z tym duy wzrost wydajnoci.
Klient
Poznalimy ju wszystkie dostpne protokoy i dowiedzielimy si, ktry naley wybra.
Kiedy ju wiemy, co oferuje nam serwer, moemy przej do konfiguracji klienta. Ustawienia domylne z reguy bd dziaa doskonale. Spjrzmy jednak na posiadane przez nas
moliwoci. Po rozwiniciu elementu SQL Native Client Configuration naley wybra
Client Protocols, tak jak pokazano to na rysunku 2.5.
W wersji SQL Server 2005 Microsoft wprowadzi moliwo uruchomienia klienta za pomoc jednego protokou, a w przypadku niepowodzenia tej operacji wykorzystanie innego
protokou. W powyszym oknie najpierw korzystamy z Shared Memory, pniej TCP/IP,
a nastpnie Named Pipes, w przypadku gdy TCP/IP nie dziaa zgodnie z definicj podan
w kolumnie Order. Jeli nie zmienimy ustawie domylnych (np. zmieniajc priorytet za
pomoc strzaek po wybraniu z menu kontekstowego danego protokou polecenia Order),
Shared Memory bdzie pierwsz bibliotek NetLib wykorzystan do poczenia z serwerem,
ktrego nie ma na licie aliasw (nastpny element w SQL Native Client Configuration),
kolejn bdzie TCP/IP itd.
Rozdzia 2. n Narzdzia
49
Rysunek 2.5
Jeli Twoja sie obsuguje protok TCP/IP, to Twj serwer te powinien go obsugiwa.
IP wie si z mniejszymi narzutami czasowymi i po prostu dziaa szybciej. Nie ma powodu, dla ktrego miaby go nie wykorzysta. Naley jednak pamita, e w przypadku
serwerw lokalnych (gdzie serwer i klient znajduj si na tym samym serwerze fizycznym)
szybsza bdzie biblioteka Shared Memory.
Lista Aliases prezentuje wszystkie serwery, dla ktrych zdefiniowano konkretn bibliotek
do realizacji pocze. Oznacza to, e z jednym serwerem mona si kontaktowa przy
uyciu IP, a z innym korzystajc z Named Pipes. Wszystko zaley od wymaga konkretnego
serwera. Na rysunku 2.6 pokazano klienta wykorzystujcego Named Pipes do komunikacji
z serwerem ARISTOTLE i uywajcego dowolnych ustawie domylnych dla pocze z innymi serwerami SQL Server.
Jeszcze raz przypominam, e ustawienia w SQL Native Client Configuration na maszynie
dziaajcej w sieci musz zapewnia obsug domylnego protokou obsugiwanego przez
serwer albo na licie Aliases musi istnie wpis pozwalajcy na wybr biblioteki NetLib obsugiwanej przez serwer.
Jeli czysz si z systemem SQL Server za porednictwem internetu (to naprawd
bardzo zy pomys, ale niektrzy tak robi), to bdziesz najprawdopodobniej stosowa rzeczywisty adres IP serwera zamiast jego nazwy. Zwizane jest to z problemem
rozwizywania nazw, ktry moe si pojawi w przypadku pracy z systemem SQL
Server w rodowisku internetowym. Trzeba pamita o koniecznoci rcznej zmiany
adresu IP serwera, jeli otrzyma on nowe IP. Nie mona w tym wzgldzie polega na
serwerach DNS.
50
Rysunek 2.6
SQL Server Management Studio jest gwnym centrum administracji systemu SQL Server.
Dostarcza ono szereg funkcji do zarzdzania serwerem za pomoc stosunkowo atwego
w uyciu graficznego interfejsu uytkownika.
SQL Server Management Studio to zupenie nowy modu, ktry pojawi si w wersji SQL
Server 2005. rodowisko to, przypominajce nieco DevStudio IDE, zapewnia niezliczon
ilo funkcji realizowanych dotd za pomoc osobnych narzdzi.
Tematyka niniejszej ksiki nie pozwala na omwienie wszystkich zagadnie zwizanych
z SQL Server Management Studio. Dokonamy jednak szybkiego przegldu jego moliwoci:
n
Zarzdzanie bezpieczestwem oraz takimi elementami jak role, loginy oraz zdalne
i sprzone serwery.
Rozdzia 2. n Narzdzia
n
51
Poniewa w tej ksice bdziemy czsto uywa narzdzia SQL Server Management Studio,
przypatrzmy si teraz jego najwaniejszym funkcjom.
Rozpoczcie pracy
Gdy po raz pierwszy uruchamiamy SQL Server Management Studio, wywietla si okno
dialogowe, takie jak zaprezentowane na rysunku 2.7.
Rysunek 2.7
Ekran logowania moe by nieco inny ni ten przedstawiony na rysunku i zaley od tego, czy
uytkownik logowa si wczeniej, na ktr maszyn si logowa i jakiego loginu uywa.
Chocia wikszo opcji na ekranie logowania nie wymaga wyjanie, to omwimy kilka z nich.
Server Type
Typ serwera suy do wyboru podsystemu SQL Servera, do ktrego uytkownik chce si
zalogowa (zwyky serwer baz danych, Analysis Services, Reporting Services, SQL Server
Mobile lub Integration Services). Naley upewni si, e logujemy si do waciwego serwera,
poniewa wszystkie te rodzaje serwerw mog by okrelane za pomoc tej samej nazwy.
SQL Server
Jak nietrudno zgadn, ustala si tu SQL Server, do ktrego chcemy si zalogowa. W naszym przykadzie wybralimy serwer SCHWEITZER pracujcy lokalnie. Chcemy si po
prostu zalogowa do domylnej instancji systemu SQL Server dziaajcej na tej samej maszynie, niezalenie od nazwy tej maszyny.
52
SQL Server pozwala na jednoczesne dziaanie wielu instancji systemu SQL Server.
Dzieje si tak dziki adowaniu do pamici osobnych i niezalenych od siebie silnikw
SQL Server.
Domylna instancja serwera ma tak sam nazw jak maszyna dziaajca w sieci. Oczywicie mona zmieni nazw serwera po instalacji, ale jest to co najmniej problematyczne,
a czasami prowadzi do awarii serwera. Dodatkowe instancje serwera SQL bd nosi takie
same nazwy jak instancja domylna (w tej ksice najczciej SCHWEITZER lub ARISTOTLE). Dodatkowo w nazwie znajdzie si znak dolara i nazwa instancji, np. ARISTOTLE$POMPEII.
Serwer lokalny bdzie korzysta z biblioteki Shared Memory, niezalenie od tego, ktr bibliotek wybierzemy do kontaktowania si z innymi serwerami. Ma to swoje dobre i ze
strony. Niestety tracimy w ten sposb kontrol (niezalenie od naszego wyboru SQL Server
zawsze bdzie uywa Shared Memory). Z drugiej strony nie trzeba pamita, na ktrym
serwerze obecnie si pracuje, a ponadto w zwizku z prac na lokalnej maszynie wzrasta
wydajno. Jeli bdziemy korzysta z rzeczywistej nazwy serwera, to komunikacja bdzie si
odbywa poprzez stos sieciowy. Chocia praca nadal przebiega na tej samej fizycznej maszynie,
spada wydajno, podobnie jak w przypadku komunikowania si z innym systemem.
A jeli nie znamy nazwy serwera? Aby zobaczy serwery, z ktrymi si ostatnio czono,
trzeba po prostu klikn strzak na licie rozwijanej serwerw, przewin list i odnale
opcj <Browse for more> (przegldaj). Po wybraniu tej opcji SQL Server zacznie odpytywa sie w poszukiwaniu rozgaszajcych si serwerw jest to metoda, ktr serwery
wykorzystuj, aby powiadamia inne systemy o swojej obecnoci w sieci. Na rysunku 2.8
wida dwie zakadki: jedna pokazuje lokalne serwery (wszystkie instancje systemu SQL
Server dziaajce na maszynie, na ktrej pracujemy), a druga wywietla systemy SQL Server
w sieci.
Rysunek 2.8
Rozdzia 2. n Narzdzia
53
Korzystajc z okna wyboru serwera, naley zachowa ostrono. Mona bowiem tak
skonfigurowa serwer SQL, aby nie rozgasza swojej obecnoci w sieci. Jeli serwer
zosta tak wanie skonfigurowany, to nie pojawi si na licie serwerw. Nie pojawi si
tam rwnie serwery, ktre prowadz nasuch z wykorzystaniem biblioteki sieciowej TCP/IP,
ale nie posiadaj wpisw DNS. W takim przypadku trzeba po prostu zna i zastosowa
adres IP serwera, z ktrym musimy si poczy.
Authentication Type
Do wyboru mamy uwierzytelnianie Windows (dawniej NT) i SQL Server. Uwierzytelnianie
Windows bdzie dostpne zawsze, nawet jeli serwer skonfigurowano do korzystania
z uwierzytelniania SQL Server. System zaakceptuje loginy wykorzystujce nazwy uytkownika i hasa uywane lokalnie w systemie SQL Server (ktry nie jest czci szerszej
sieci Windows) tylko wtedy, gdy wczono uwierzytelnianie SQL Server.
Windows Authentication
Uwierzytelnianie Windows czym jest, kady widzi. Mamy uytkownikw i grupy Windows 2000+. W profilach uytkownikw systemu Windows zamieszczono odnoniki kont
uytkownikw Windowsa do loginw w systemie SQL Server. Kiedy uytkownik loguje si
do serwera SQL, jest on uwierzytelniany przez domen Windows, a nastpnie przypisywany
do odpowiednich rl na podstawie loginu systemu SQL Server. Role te okrelaj prawa
uytkownika.
Najbardziej istotne w tym modelu jest to, e uytkownik korzysta tylko z jednego hasa (jeli
zmienisz je w domenie Windows, to zostanie ono zmienione rwnie w odniesieniu do loginw systemu SQL Server). Nie trzeba wypenia adnych pl, aby si zalogowa. Do logowania su po prostu informacje dostarczone podczas logowania si do sieci Windows.
Ponadto administrator moe zarzdza wszystkimi uytkownikami w jednym miejscu. Wad
jest to, e proces tworzenia odnonikw moe si skomplikowa, a ponadto w celu administracji kontami uytkownikw Windowsa musisz by administratorem domeny.
54
sprbuj sam
Nawizywanie poczenia
Zalogujmy si. Jeli uruchamiasz SQL Server po raz pierwszy, musisz ustawi wszystko
tak jak w naszym przykadzie.
1. Wybierz uwierzytelnianie SQL Server Authentication.
2. Wybierz login sa, ktry jest skrtem od system administrator (administrator systemu),
Rysunek 2.9
Rozdzia 2. n Narzdzia
55
Jak to dziaa
Okno dialogowe Connect to Server pobiera wszystkie informacje konieczne do utworzenia
poczenia. Nastpnie czy te informacje w jeden acuch poczenia (ang. connection
string), ktry zostaje wysany do serwera. Poczenie zostaje przyjte bd odrzucone. Jeli
zostanie przyjte, to uchwyt (ang. handle) poczenia przekazany bdzie do bazy danych,
co pozwala na wielokrotne wykorzystanie tego poczenia dla realizacji dowolnej iloci zapyta a do momentu odczenia od serwera.
Wicej informacji na temat tworzenia i formatowania acuchw poczenia mona znale
w dodatku D.
Wiele elementw, z ktrymi moemy mie tutaj do czynienia (Nowy, Otwrz, Zapisz, Wytnij,
Wklej itd.), wystpuje w aplikacjach Windows i powiniene je dobrze zna. Niektre jednak s
charakterystyczne tylko dla systemu SQL Server. Teraz naley jedynie zwrci uwag na to,
e ukad menu w SQL Server Management Studio zaley od kontekstu. Oznacza to, e dostpno i zawarto poszczeglnych elementw bdzie si zmienia w zalenoci od tego, w jakim
oknie SQL Server Management Studio aktualnie pracujemy. Sprawd, jak zmienia si zawarto menu kontekstowych podczas pracy z rnymi czciami SQL Server Management Studio.
Okno zapyta
Ta cz SQL Server Management Studio zastpuje oddzielne narzdzie, ktre w poprzednich wersjach wystpowao pod nazw Query Analizer. Narzdzie to suy do prowadzenia
interaktywnych sesji z konkretnym serwerem SQL. To wanie tutaj mona wykonywa polecenia za pomoc jzyka Transact-SQL (T-SQL). Z uporem wymawiam to jak ti-eskjuel,
cho powinno si raczej mwi ti-sikuel. T-SQL to natywny jzyk systemu SQL Server.
Jest on dialektem strukturalnego jzyka zapyta SQL (ang. Structured Query Language),
zgodnym ze standardem ANSI SQL 92 na poziomie wejciowym. Zgodno na poziomie
wejciowym oznacza, e SQL Server spenia wymagania pierwszego poziomu, co jest konieczne, aby zakwalifikowa produkt jako zgodny ze standardem ANSI. Jak si przekonasz,
wikszo systemw RDBMS jest zgodna ze standardem ANSI na poziomie wejciowym.
Szczerze mwic, nie jestem jako szczeglnie oczarowany tym nowym narzdziem. Wydaje mi si, e w zwizku z iloci zada wykonywanych za pomoc tego narzdzia w interfejsie uytkownika panuje spory baagan i czasami ciko jest znale to, czego si szuka.
Z drugiej strony Microsoft ma nadziej, e bdzie ono bardziej intuicyjne w uyciu z punktu
widzenia nowych uytkownikw.
Przyjrzyjmy si teraz bliej narzdziu Query window, przy ktrym spdzimy sporo czasu
podczas lektury tej ksiki, i zobaczmy, jak naley si nim posugiwa.
Rozpoczcie pracy
Sporo ju powiedziaem o tym, co pojawi si na kartach tej ksiki. Najwyszy czas przej do
dziaania. W tym celu otwrzmy nowe okno zapyta, klikajc przycisk New Query lub wybierajc polecenie File/New/Query With Current Connection. Po otwarciu okna zapyta wywietlone
zostan elementy menu podobne do tych, ktre znajdoway si w starym narzdziu Query Analizer. Za chwil przyjrzymy si szczegom, ale teraz zabierzmy si za nasze pierwsze zapytanie.
56
Podczas wpisywania sw i fraz w oknie zwr uwag na ich kolory. Sowa kluczowe powinny zosta zaznaczone kolorem niebieskim. Elementy niezidentyfikowane, takie jak nazwy kolumn i tabel (tabele w poszczeglnych bazach danych i na rnych serwerach mog
mie odmienne nazwy), powinny by czarne, ale tabele systemowe bd zielone, acuchy
znakowe czerwone, funkcje systemowe rowe, operatory szare, za komentarze
zielone. Przyporzdkowanie kolorw mona zmieni za pomoc polecenia Tools/Options/
Environment/Fonts and Colors. W tym celu z listy Show settings for naley wybra pozycj
Text Editor. Schematy te naley pozna i nauczy si nimi posugiwa. Pomagaj one bowiem wyowi bdy jeszcze przed uruchomieniem zapytania (i wywietleniem komunikatu
o bdzie). Polecenie Query/Parse uruchamia kolejne narzdzie debugowania, ktre analizuje zapytanie, nie wykonujc go. Jeli w zapytaniu znajduj si bdy skadniowe, narzdzie
to powinno je odnale. Innym narzdziem sucym do wyszukiwania bdw jest debugger.
Zagadnienia te omwimy w rozdziale 12., zatytuowanym Procedury skadowane.
W celu wykonania zapytania musisz klikn teraz znajdujcy si na pasku narzdzi przycisk
z czerwonym wykrzyknikiem. Okno zapyta zmieni nieco wygld (patrz: rysunek 2.10).
Rysunek 2.10
Rozdzia 2. n Narzdzia
57
Okno gwne zostao automatycznie podzielone na dwie czci. W grnej znajduje si tekst
zapytania, dolna nosi nazw panelu wynikowego. Ponadto u gry panelu wynikowego znajduje si zakadka. Kiedy bdziemy wykonywa zapytania zwracajce kilka zbiorw danych, zobaczysz, e kady z tych zbiorw mona bdzie wywietli na osobnej zakadce.
Jest to do wygodne w uyciu, zwaszcza gdy nie wiadomo, jak duy jest zbir danych lub
zbir wynikw (ang. result set).
Terminw zbir wynikw (ang. result set) i zbir rekordw (ang. recordset) uywa si
czsto w odniesieniu do zbioru danych, ktry zosta otrzymany w wyniku wykonania jakiego
polecenia. Oba sowa mona stosowa zamiennie.
Pozmieniaj teraz ustawienia i zobacz, jakie pojawi si rnice. Spjrz na pasek narzdzi nad
oknem zapyta i zwr uwag na zestaw trzech ikon, ktre zaznaczono na rysunku 2.11.
Rysunek 2.11
58
Rysunek 2.12
Dane wynikowe na zakadce Results s dokadnie takie same jak poprzednio. Pojawiy si
tylko w innym formacie. Dodatkowo na zakadce Execution plan sprawdzi mona koszty
uzyskania wynikw. Osobicie uywam metody prezentacji wynikw jako tekst, kiedy:
n
Rozdzia 2. n Narzdzia
59
Wyniki w siatce
Opcja Results to Grid dokonuje podziau kolumn i wierszy w widoku siatki. Poniej zamieszczam list moliwoci, na ktre pozwala ta opcja:
n
60
Rysunek 2.13
Rozdzia 2. n Narzdzia
61
Rysunek 2.14
SSIS (wczeniej znane jako Data Transformation Services lub DTS) to nasz przyjaciel. Za
kadym razem, gdy spogldam na t funkcj systemu SQL Server, musz usi z wraenia. Aby nakreli szersze to, powiem, e na przestrzeni lat zrealizowaem kilka projektw
systemw wspomagania decyzji (zazwyczaj s to systemy, w ktrych nie mamy do czynienia z danymi wchodzcymi i wychodzcymi na bieco, ale raczej z pobieraniem danych
z innych rde w celu wspomagania kierownictwa w podejmowaniu decyzji). Projekt taki
pobiera dane z rnych rde i umieszcza je w centralnej bazie danych wykorzystywanej
do scentralizowanego raportowania.
Tego typu projekty szybko staj si coraz drosze z uwagi na fakt, e nie kady system tak
samo definiuje dane. Moe si pojawi caa masa problemw, ktre trzeba rozwiza. Mog
one dotyczy integralnoci danych (co zrobi, gdy w polu wystpuje warto NULL, a my nie
zezwalamy na wystpowanie takich wartoci?) lub rnic w reguach biznesowych (jeden
system rozwizuje problemy zwizane z udzielaniem poyczek, umoliwiajc wprowadzenie ujemnej liczby zamwionych towarw, a inny na to nie pozwala). Ta lista moe stawa
si coraz dusza, a koszt coraz wyszy.
62
Jeli SSIS jest naszym przyjacielem, to Bulk Copy Program (bcp) byby tym starym przyjacielem, ktrego niezbyt czsto widujemy, ale za kadym razem cieszymy si na jego widok.
Narzdzie bcp to program wiersza polece, ktrego jedynym zadaniem jest masowe przenoszenie sformatowanych danych z i do serwera SQL Server. Istnia on na dugo przed
tym, nim wymylono SSIS, i chocia SSIS zastpuje bcp w wikszoci zada importu lub
eksportu danych, to bcp nadal stanowi atrakcyjn alternatyw dla tych, ktrzy lubi narzdzia
wiersza polece. Ponadto caa masa instalacji systemu SQL Server nadal polega na programie bcp, kiedy zachodzi konieczno szybkiego przesyania danych.
Nie potrafi policzy, jak czsto narzdzie to ratowao mi skr, mwic mi, co si dzieje
z moim serwerem, gdy wszystkie inne narzdzia zawiody. Nie jest to narzdzie, ktrym programista (a nawet administrator bazy danych) bdzie si posugiwa codziennie. Jest ono jednak
nadzwyczaj skuteczne i moe Ci uratowa, kiedy nic innego nie jest ju w stanie pomc.
Rozdzia 2. n Narzdzia
63
SQL Server Profiler (uruchamiany z menu Tools) to w wielkim skrcie narzdzie ledzenia
w czasie rzeczywistym. Performance Monitor (uruchamiany z menu Start/Programs/
Administrative Tools/Performance) suy do ledzenia na poziomie makro spraw zwizanych z konfiguracj systemu. Profiler natomiast zajmuje si szczegami, co ma swoje dobre i ze strony. W zalenoci od ustawie Profiler moe dostarczy dokadn skadni kadego zapytania wykonanego na serwerze. Wyobra sobie, e trzeba przeprowadzi operacj
dostrajania wydajnoci w systemie, w ktrym pracuje tysic uytkownikw. atwo mona
sobie wyobrazi ryzy papieru zuyte do wydrukowania polece wykonanych przez tych
uytkownikw w przecigu paru minut. Na szczcie Profiler zosta wyposaony w szerok
gam filtrw pomagajcych nakada ograniczenia i umoliwiajcych ledzenie konkretnych
problemw, takich jak dugo wykonujce si zapytania albo poznanie dokadnej skadni zapytania wykonanego wewntrz procedury wykonywanej (co moe by pomocne zwaszcza
wtedy, gdy w procedurze tej wystpuj wyraenia warunkowe i wykonanie zapytania moe
przebiega odmiennie w rnych sytuacjach).
Narzdzia tego prno szuka w grupie programw SQL Server. W rzeczy samej to zdumiewajce, jak wielu ludzi nie wie nawet o istnieniu tego narzdzia ani jego starszych braciach (osql i isql). Dzieje si tak dlatego, e jest to w zasadzie program konsoli, a nie Windowsa, uruchamiany z systemowego wiersza polece (menu Start/Programs/Accessories/
Command Prompt).
Narzdzia tego naley uywa wtedy, gdy w plikach wsadowych wywoywanych z wiersza
polece chcemy wstawi polecenia SQL lub zadania zwizane z zarzdzaniem. W wersjach
wczeniejszych ni 7.0 i przed nadejciem czego, co wwczas okrelano terminem DTS
(obecnie SSIS), sqlcmd byo uywane razem z narzdziem Bulk Copy Program (bcp) do
realizowania operacji importu danych z systemw zewntrznych. Zastosowanie to traci
obecnie na znaczeniu, gdy administratorzy i programici poznali potg i prostot SSIS.
Mimo to nadal zdarzaj si przypadki, gdy trzeba napisa skrypt bdcy czci wikszego
procesu realizowanego w wierszu polece. Moliwo t zapewnia wanie sqlcmd.
Narzdzie sqlcmd moe by bardzo przydatne, zwaszcza jeli korzystasz z plikw zawierajcych skrypty, ktre mona uruchomi w sqlcmd. Naley jednak pamita, e istniej
narzdzia, ktre o wiele lepiej poradz sobie z zadaniami realizowanymi przez sqlcmd. Narzdzia te posiadaj te interfejs uytkownika, ktry bardziej pasuje do tego, nad czym pracujesz w systemie SQL Server.
Nadszed czas na kolejn rad. Jej celem jest poznanie historii i umoliwienie zrozumienia ludzi, z ktrymi rozmawiasz o systemie SQL Server. Sqlcmd to kolejna nowa
nazwa narzdzia wystpujcego pod rnymi nazwami. Na pocztku nazywao si
ono ISQL, za w SQL Server 2000 oraz 7.0 znane byo pod nazw osql.
64