You are on page 1of 33

SQL Server 2005.

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

Rozpocznij prac z SQL Server 2005


Dowiedz si, jak dziaaj systemy RDBMS
Poznaj narzdzia SQL Server 2005
Naucz si obsugiwa bazy danych za pomoc SQL Server 2005
SQL Server 2005 to najnowsza wersja niezawodnego, wydajnego i wysoce
skalowalnego systemu zarzdzania relacyjnymi bazami danych (RDBMS) autorstwa
Microsoftu. Podobnie jak wczeniejsze wersje tego produktu, SQL Server 2005 bazuje
na jzyku T-SQL, ale zapewnia lepsz obsug XML, danych definiowanych przez
uytkownika oraz platformy .NET, a ponadto udostpnia dodatkowe usugi. Dziki swym
moliwociom doskonale nadaje si do tego, by by podstaw rozmaitych aplikacji
potrzebujcych dostpu do bazy danych.
Ksika SQL Server 2005. Programowanie. Od podstaw przeznaczona jest dla
programistw, ktrzy chc rozpocz prac z SQL Server 2005. Dziki niej poznasz
podstawy funkcjonowania systemw RDBMS oraz jzykw SQL i T-SQL. Nauczysz si
korzysta z narzdzi udostpnianych przez SQL Server 2005 oraz dowiesz si, jak
wykonywa zarwno podstawowe, jak i bardziej zaawansowane operacje na bazach
danych. Ta ksika pozwoli Ci szybko opanowa moliwoci, jakie daje SQL Server
2005, i przystpi do pisania stabilnych oraz wydajnych aplikacji bazodanowych.

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

Wprowadzenie do systemw RDBMS


Jzyki SQL i T-SQL
Narzdzia dostpne w SQL Server 2005
Tworzenie i modyfikowanie tabel
Korzystanie ze zcze i ogranicze
Normalizacja podstaw projektowania
Tworzenie skryptw, programw wsadowych i procedur skadowanych
Obsuga transakcji i blokad
Uywanie wyzwalaczy
Raporty
Obsuga danych XML
Twrz niezawodne i wydajne aplikacje bazodanowe za pomoc SQL Server 2005

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

Rozdzia 2. Narzdzia ................................................................................................................................ 41


Books Online ............................................................................................................... 42
SQL Server Configuration Manager ................................................................................ 43
Zarzdzanie usugami .............................................................................................. 44
Konfiguracja sieci ................................................................................................... 44
Protokoy ................................................................................................................ 46
Klient ..................................................................................................................... 48
SQL Server Management Studio .................................................................................... 50
Rozpoczcie pracy ................................................................................................... 51
Okno zapyta .......................................................................................................... 55
SQL Server Integration Services (SSIS) .......................................................................... 61
Bulk Copy Program (bcp) ............................................................................................... 62
SQL Server Profiler ....................................................................................................... 62
sqlcmd ........................................................................................................................ 63
Podsumowanie ............................................................................................................ 64

SQL Server 2005. Programowanie. Od podstaw


Rozdzia 3. Podstawowe polecenia jzyka T-SQL ....................................................................................65
Podstawowe polecenie SELECT ................................................................................. 66
Polecenie SELECT i klauzula FROM ........................................................................... 66
Klauzula WHERE ..................................................................................................... 70
ORDER BY .............................................................................................................. 73
Agregacje danych za pomoc klauzuli GROUP BY ....................................................... 77
Tworzenie warunkw za pomoc klauzuli HAVING ....................................................... 85
Generowanie XML-a za pomoc klauzuli FOR XML ...................................................... 87
Wykorzystanie wskazwek za pomoc klauzuli OPTION ............................................... 88
Predykaty DISTINCT i ALL ......................................................................................... 88
Wprowadzanie danych za pomoc polecenia INSERT ....................................................... 90
Polecenie INSERT INTO...SELECT ............................................................................. 95
Wprowadzanie zmian za pomoc polecenia UPDATE ........................................................ 97
Polecenie DELETE ...................................................................................................... 100
Podsumowanie .......................................................................................................... 101
wiczenia .................................................................................................................. 102

Rozdzia 4. Zczenia (JOINs) .................................................................................................................. 103


Zczenia JOIN ........................................................................................................... 104
Zczenia wewntrzne (INNER JOIN) ............................................................................. 105
Dlaczego INNER JOIN przypomina klauzul WHERE .................................................. 110
Zczenia zewntrzne .................................................................................................. 114
Proste zczenie zewntrzne .................................................................................. 115
Bardziej skomplikowane zczenia zewntrzne ......................................................... 120
Spojrzenie w obie strony za pomoc zcze penych ..................................................... 124
Zczenia krzyowe ..................................................................................................... 126
Alternatywne skadnie zcze ..................................................................................... 127
Alternatywne INNER JOIN ....................................................................................... 127
Alternatywne OUTER JOIN ...................................................................................... 128
Alternatywne CROSS JOIN ...................................................................................... 129
Unia .......................................................................................................................... 130
Podsumowanie .......................................................................................................... 135
wiczenia .................................................................................................................. 135

Rozdzia 5. Tworzenie i modyfikacja tabel ............................................................................................ 137


Nazwy obiektw w systemie SQL Server ....................................................................... 137
Nazwa schematu .................................................................................................. 138
Nazwa bazy danych ............................................................................................... 141
Nazwa serwera ..................................................................................................... 141
Przegld ustawie domylnych ............................................................................... 141
Polecenie CREATE ...................................................................................................... 142
CREATE DATABASE ............................................................................................... 142
CREATE TABLE ...................................................................................................... 148
Polecenie ALTER ........................................................................................................ 161
ALTER DATABASE .................................................................................................. 161
ALTER TABLE ........................................................................................................ 164
Polecenie DROP ......................................................................................................... 168
Wykorzystanie narzdzia GUI ....................................................................................... 169
Tworzenie bazy danych za pomoc SQL Server Management Studio .......................... 169
Powrt do kodowania podstawy tworzenia skryptw
za pomoc SQL Server Management Studio ......................................................... 175
Podsumowanie .......................................................................................................... 176
wiczenia .................................................................................................................. 176

Spis treci

Rozdzia 6. Ograniczenia ......................................................................................................................... 177


Rodzaje ogranicze .................................................................................................... 178
Ograniczenia domeny ............................................................................................ 178
Ograniczenia encji ................................................................................................. 179
Ograniczenia integralnoci referencyjnej .................................................................. 179
Nazewnictwo ogranicze ............................................................................................. 180
Ograniczenia kluczy .................................................................................................... 181
Ograniczenia PRIMARY KEY .................................................................................... 182
Ograniczenia FOREIGN KEY .................................................................................... 184
Ograniczenia UNIQUE ............................................................................................ 195
Ograniczenia CHECK ................................................................................................... 196
Ograniczenia DEFAULT ................................................................................................ 198
Definiowanie ograniczenia DEFAULT w poleceniu CREATE TABLE ............................... 199
Dodawanie ograniczenia DEFAULT do istniejcej tabeli ............................................. 199
Wyczanie ogranicze ................................................................................................ 200
Ignorowanie niewaciwych danych podczas tworzenia ograniczenia .......................... 200
Tymczasowe wyczenie istniejcego ograniczenia ................................................... 202
Reguy i wartoci domylne kuzyni ogranicze .......................................................... 204
Reguy .................................................................................................................. 204
Wartoci domylne ................................................................................................ 206
Okrelanie tabel wykorzystujcych konkretne reguy i wartoci domylne ................... 207
Wyzwalacze a integralno danych ............................................................................... 208
Czego uywa ............................................................................................................ 208
Podsumowanie .......................................................................................................... 209

Rozdzia 7. Zwikszanie moliwoci zapyta .........................................................................................211


Co to jest podzapytanie .............................................................................................. 212
Tworzenie podzapytania zagniedonego ................................................................. 213
Podzapytania skorelowane .......................................................................................... 216
W jaki sposb dziaaj podzapytania skorelowane .................................................... 216
Podzapytania skorelowane w klauzuli WHERE .......................................................... 217
Praca z wartociami NULL funkcja ISNULL .......................................................... 221
Tabele pochodne ........................................................................................................ 222
Operator EXISTS ........................................................................................................ 224
Inne sposoby wykorzystania EXISTS ........................................................................ 226
Mieszanie typw danych funkcje CAST i CONVERT ...................................................... 227
Kwestie wydajnoci .................................................................................................... 230
Lepiej uywa zcze, podzapyta czy czego innego? ............................................ 230
Podsumowanie .......................................................................................................... 232
wiczenia .................................................................................................................. 232

Rozdzia 8. By normalnym normalizacja i inne kwestie podstaw projektowania .................. 233


Tabele ....................................................................................................................... 234
Utrzymywanie danych normalnymi ............................................................................. 234
Zanim zaczniemy ................................................................................................... 235
Pierwsza posta normalna ..................................................................................... 237
Druga posta normalna ......................................................................................... 241
Trzecia posta normalna ........................................................................................ 242
Inne postacie normalne ......................................................................................... 244
Relacje ...................................................................................................................... 245
Jeden do jednego .................................................................................................. 245

SQL Server 2005. Programowanie. Od podstaw


Jeden do jednego lub wielu .................................................................................... 247
Wiele do wielu ...................................................................................................... 249
Diagramy ................................................................................................................... 253
Tabele ................................................................................................................. 255
Dodawanie i usuwanie tabel .................................................................................. 256
Relacje ................................................................................................................. 262
Denormalizacja .......................................................................................................... 266
Poza normalizacj ...................................................................................................... 267
Prostota ............................................................................................................... 267
Wybr typw danych .............................................................................................. 267
Bdy w sposobie przechowywania .......................................................................... 268
Szkic prostego przykadu ............................................................................................. 269
Tworzenie bazy danych .......................................................................................... 269
Dodawanie diagramu i tabeli pocztkowej ............................................................... 269
Dodawanie relacji .................................................................................................. 274
Dodawanie ogranicze ........................................................................................... 276
Podsumowanie .......................................................................................................... 278
wiczenia .................................................................................................................. 278

Rozdzia 9. Struktury danych i indeksw w SQL Server .................................................................... 279


Struktury danych w SQL Serverze ................................................................................. 279
Baza danych ......................................................................................................... 279
Zakres ................................................................................................................. 280
Strona .................................................................................................................. 280
Wiersze ................................................................................................................ 281
Podstawy indeksw .................................................................................................... 281
B-drzewa .............................................................................................................. 283
Sposb udostpniania danych w SQL Serverze ........................................................ 286
Tworzenie, modyfikacja i usuwanie indeksw ................................................................ 295
Polecenie CREATE INDEX ....................................................................................... 295
Tworzenie indeksw XML ....................................................................................... 302
Indeksy wywiedzione tworzone z ograniczeniami ...................................................... 303
Mdry wybr jaki indeks, gdzie i kiedy go stosowa .................................................. 303
Selektywno ....................................................................................................... 304
Przygldanie si kosztom gdy mniej znaczy wicej ............................................... 305
Wybieranie waciwego indeksu klastrowego ........................................................... 305
Kolejno kolumn ................................................................................................. 308
Usuwanie indeksw ............................................................................................... 308
Korzystanie z Database Engine Tuning Advisor ........................................................ 309
Utrzymywanie indeksw .............................................................................................. 309
Fragmentacja ........................................................................................................ 310
Identyfikacja fragmentacji a prawdopodobiestwo podziau stron .............................. 310
Podsumowanie .......................................................................................................... 314
wiczenia .................................................................................................................. 315

Rozdzia 10. Widoki .................................................................................................................................. 317


Proste widoki ............................................................................................................. 317
Widoki jako filtry ................................................................................................... 321
Bardziej zoone widoki ............................................................................................... 323
Wykorzystanie widokw do zmiany danych bez uycia wyzwalaczy INSTEAD OF ........... 326
Edycja widokw za pomoc T-SQL-a ............................................................................. 330

Spis treci

Usuwanie widokw ..................................................................................................... 330


Tworzenie i edycja widokw w SQL Server Management Studio ...................................... 330
Edycja widokw w SQL Server Management Studio .................................................. 334
Sprawdzanie wywietlanie istniejcego kodu ............................................................ 334
Ochrona kodu szyfrowanie widokw ......................................................................... 336
Sowo o schemacie powizania ................................................................................... 337
Upodabnianie widokw do tabel za pomoc VIEW_METADATA ........................................ 338
Widoki indeksowane (materializowane) ........................................................................ 338
Podsumowanie .......................................................................................................... 342
wiczenia .................................................................................................................. 342

Rozdzia 11. Tworzenie skryptw i programw wsadowych ............................................................. 343


Podstawy skryptw ..................................................................................................... 344
Instrukcja USE ...................................................................................................... 344
Deklaracja zmiennych ............................................................................................ 345
Uycie @@IDENTITY .............................................................................................. 349
Uycie @@ROWCOUNT .......................................................................................... 352
Batch ........................................................................................................................ 353
Bdy w programach wsadowych ............................................................................. 355
Kiedy korzysta z programw wsadowych ................................................................ 356
SQLCMD ................................................................................................................... 359
Dynamiczny SQL tworzenie kodu w locie za pomoc polecenia EXEC ....................... 363
Zastosowania EXEC .............................................................................................. 364
Podsumowanie .......................................................................................................... 368
wiczenia .................................................................................................................. 369

Rozdzia 12. Procedury skadowane ...................................................................................................... 371


Tworzenie procedury skadowanej podstawy skadni .................................................. 372
Przykad prostej procedury ..................................................................................... 372
Zmiana procedury skadowanej za pomoc ALTER ......................................................... 373
Usuwanie procedur skadowanych ............................................................................... 374
Okrelanie parametrw ............................................................................................... 374
Deklaracja parametrw .......................................................................................... 374
Instrukcje sterujce przepywem danych ....................................................................... 379
Polecenie IF ... ELSE ............................................................................................. 380
Instrukcja CASE .................................................................................................... 390
Zaptlanie przy uyciu instrukcji WHILE ................................................................... 397
Instrukcja WAITFOR ............................................................................................... 398
Bloki TRY/CATCH .................................................................................................. 399
Potwierdzanie powodzenia lub niepowodzenia za pomoc wartoci zwrotnych .................. 399
Jak uywa RETURN .............................................................................................. 400
Obsuga bdw ......................................................................................................... 402
Dotychczasowe sposoby... ..................................................................................... 403
Bloki TRY/CATCH .................................................................................................. 409
Obsuga bdw przed ich wystpieniem ................................................................. 412
Rczne zgaszanie bdu ........................................................................................ 415
Dodawanie wasnych komunikatw o bdzie ........................................................... 419
Co oferuje procedura skadowana ................................................................................ 422
Tworzenie wywoywalnych procesw ........................................................................ 423
Uywanie procedur skadowanych w celu zapewnienia bezpieczestwa ...................... 424
Procedura skadowana a wydajno ........................................................................ 425

10

SQL Server 2005. Programowanie. Od podstaw


Rozszerzone procedury skadowane (XPs) ..................................................................... 427
Krtkie spojrzenie na rekurencj .................................................................................. 428
Kolekcje .NET ............................................................................................................ 430
Podsumowanie .......................................................................................................... 432
wiczenia .................................................................................................................. 432

Rozdzia 13. Funkcje definiowane przez uytkownika ......................................................................... 435


Czym s funkcje uytkownika ...................................................................................... 435
Funkcje uytkownika zwracajce wartoci skalarne ............................................................. 437
Funkcje uytkownika zwracajce tabele ........................................................................ 440
Zrozumienie jednoznacznoci ................................................................................. 448
Debugowanie funkcji definiowanych przez uytkownika .................................................. 450
Zastosowanie .NET w bazach danych ........................................................................... 450
Podsumowanie .......................................................................................................... 451
wiczenia .................................................................................................................. 451

Rozdzia 14. Transakcje i blokady ......................................................................................................... 453


Transakcje ................................................................................................................. 453
BEGIN TRANSACTION ............................................................................................ 455
COMMIT TRANSACTION ......................................................................................... 455
ROLLBACK TRANSACTION ...................................................................................... 455
SAVE TRANSACTION .............................................................................................. 456
Jak dziaa dziennik SQL Servera .................................................................................. 456
Awaria i odtwarzanie .............................................................................................. 458
Domniemanie transakcji ........................................................................................ 459
Blokady i wspbieno ............................................................................................. 460
Jakim problemom mog zapobiega blokady ........................................................... 461
Blokowalne zasoby ................................................................................................ 464
Rozwijanie blokad i wpyw blokad na wydajno ....................................................... 465
Tryby blokowania ................................................................................................... 466
Kompatybilno blokad .......................................................................................... 468
Okrelanie konkretnego typu blokady wskazwki optymalizatora ........................... 469
Okrelanie poziomu izolowania .................................................................................... 470
Obsuga zakleszcze (lub bd 1205) ........................................................................... 473
W jaki sposb SQL Server okrela wystpowanie zakleszczenia ................................ 474
W jaki sposb wybierane s ofiary zakleszczenia ..................................................... 474
Unikanie zakleszcze ............................................................................................ 474
Podsumowanie .......................................................................................................... 477

Rozdzia 15. Wyzwalacze ....................................................................................................................... 479


Czym s wyzwalacze ................................................................................................... 480
Klauzula ON ......................................................................................................... 482
WITH ENCRYPTION ................................................................................................ 482
Uycie klauzuli FOR|AFTER i INSTEAD OF ................................................................. 482
WITH APPEND ....................................................................................................... 485
NOT FOR REPLICATION .......................................................................................... 486
AS ....................................................................................................................... 486
Uycie wyzwalaczy do okrelenia zasad integralnoci danych ......................................... 486
Obsuga wymaga pochodzcych z innych tabel ....................................................... 486
Uycie wyzwalaczy w celu sprawdzenia delty aktualizacji ........................................... 488
Uycie wyzwalaczy w celu wywoania wasnych komunikatw o bdach ...................... 490
Inne powszechne zastosowania wyzwalaczy .................................................................. 490

Spis treci

11

Inne kwestie zwizane z wyzwalaczami ......................................................................... 491


Wyzwalacze mona zagnieda ............................................................................. 491
Wyzwalacze mog by rekurencyjne ........................................................................ 491
Wyzwalacze nie zapobiegaj zmianom architektury ................................................... 492
Wyzwalacze mona wyczy bez ich usuwania ......................................................... 492
Kolejno uruchamiania wyzwalaczy ....................................................................... 493
Wyzwalacze INSTEAD OF ............................................................................................. 495
Rozwaania o wydajnoci ............................................................................................ 496
Dziaanie wyzwalaczy jest raczej reakcj ni akcj .................................................... 496
Wyzwalacze a problem wspbienoci .................................................................... 496
Uycie IF UPDATE() i COLUMNS_UPDATED() ............................................................. 497
Twrz jak najprostsze wyzwalacze ........................................................................... 499
Nie zapominaj o wyzwalaczach, gdy wybierasz indeksy ............................................. 500
Unikaj cofania wewntrz wyzwalaczy ....................................................................... 500
Usuwanie wyzwalaczy ................................................................................................. 500
Podsumowanie .......................................................................................................... 501

Rozdzia 16. Krtki elementarz jzyka XML ......................................................................................... 503


Podstawy jzyka XML .................................................................................................. 504
Czci skadowe dokumentu XML ........................................................................... 505
Przestrze nazw .................................................................................................... 513
Zawarto elementw ............................................................................................ 515
Poprawno strukturalna a poprawno skadniowa schemat XML i DTD .................... 516
Co to ma wsplnego z systemem SQL Server? ............................................................. 517
Dostarczanie relacyjnych danych w formacie XML .................................................... 517
RAW .................................................................................................................... 519
AUTO ................................................................................................................... 521
EXPLICIT .............................................................................................................. 523
PATH .................................................................................................................... 539
OPENXML ............................................................................................................. 544
Dwa sowa o XSLT ...................................................................................................... 550
Podsumowanie .......................................................................................................... 552

Rozdzia 17. Raport ze suby spojrzenie na usugi raportowe .................................................... 553


Usugi raportowe ........................................................................................................ 554
Tworzenie prostego modelu raportu ............................................................................. 554
Widok rda danych ............................................................................................. 559
Tworzenie raportw ............................................................................................... 565
Projekt serwera raportowego ....................................................................................... 568
Instalowanie raportu .............................................................................................. 573
Podsumowanie .......................................................................................................... 574

Rozdzia 18. Integracja z usugami integracyjnymi ............................................................................. 575


Zrozumienie problemu ................................................................................................ 576
Uywanie Import and Export Wizard do tworzenia podstawowych pakietw ...................... 576
Uruchamianie pakietw ............................................................................................... 583
Uywanie Execute Package Utility ........................................................................... 583
Uruchamianie w SQL Server Business Intelligence Development Studio .................... 586
Uruchamianie w SQL Server Management Studio ..................................................... 586
Edycja pakietw ......................................................................................................... 587
Podsumowanie .......................................................................................................... 589

12

SQL Server 2005. Programowanie. Od podstaw


Rozdzia 19. Zabawa w administratora ................................................................................................. 591
Harmonogram zada .................................................................................................. 592
Tworzenie kont operatorw .................................................................................... 593
Tworzenie zada ................................................................................................... 595
Tworzenie kopii zapasowych i odtwarzanie bazy ............................................................ 607
Tworzenie kopii zapasowej ..................................................................................... 607
Recovery Models (modele odtwarzania) .................................................................. 611
Odtwarzanie ......................................................................................................... 612
Utrzymywanie indeksw .............................................................................................. 614
ALTER INDEX ........................................................................................................ 615
Archiwizacja danych .................................................................................................... 617
Podsumowanie .......................................................................................................... 618
wiczenia .................................................................................................................. 619

Dodatek A Rozwizania wicze ............................................................................................................ 621


Dodatek B Funkcje systemowe ............................................................................................................... 631
Dodatek C Uywanie waciwych narzdzi .......................................................................................... 689
Dodatek D Bardzo proste przykady pocze ..................................................................................... 697
Dodatek E Instalacja i uycie przykadw ............................................................................................. 701
Skorowidz ............................................................................................................................................... 705

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

SQL Server Books Online,

SQL Server Configuration Manager,

SQL Server Management Workbench,

SQL Server Integration Services (SSIS) wraz z kreatorem importu i eksportu,

Database Engine Tuning Advisor,

Report Manager,

Bulk Copy Program (bcp),

SQL Server Profiler,

sqlcmd.

42

SQL Server 2005. Programowanie. Od podstaw


Musisz uwaa, jeli zasigasz rady znajomych, ktrzy posiadaj dowiadczenie
w zakresie wersji systemu starszej ni SQL Server 2005. Zestaw narzdzi w najnowszej
edycji systemu zosta opracowany na nowo i wiele rzeczy, do ktrych przywykli uytkownicy wczeniejszych wersji serwera, wystpuje pod innymi nazwami, zostao przesunitych lub nawet usunitych w celu integracji z innym narzdziem.
Wikszo starych poj nadal gdzie funkcjonuje, ale mogy one zmieni swoje miejsce.

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

Z tego narzdzia najczciej korzystaj administratorzy odpowiedzialni za konfiguracj


komputerw w celu korzystania z bazy danych. Mimo to trzeba wiedzie, jak ono dziaa.
SQL Server Computer Manager jest nowym narzdziem, ktre pojawio si w systemie
SQL Server 2005. W rzeczywistoci poczono w nim kilka funkcji, ktre stosowano wczeniej w kilku rnych narzdziach. Elementy, ktrymi mona zarzdza za pomoc moduu
Configuration Manager, nale do dwch dziedzin:
n

zarzdzania usugami,

konfiguracji sieci.

44

SQL Server 2005. Programowanie. Od podstaw

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

SQL Server Analysis Services obsuguje silnik Analysis Services.

SQL Server FullText Search zgodnie z nazw obsuguje silnik wyszukiwania


penotekstowego.

SQL Server Reporting Services silnik obsugujcy raportowanie.

SQL Server Agent gwny silnik wykorzystywany przez wszystkie zadania


zaplanowane w systemie SQL Server. Dziki wykorzystaniu tej usugi mona
zaplanowa wykonanie szerokiego zakresu prac (ang. jobs). Prace te mog skada
si z wielu etapw i mog nawet rozdziela si na rne zadania w zalenoci od
wynikw realizacji poprzednich zada. Przykadami zada wykonywanych przez
SQL Server Agent mog by wykonywanie kopii zapasowych lub rutynowe procesy
importu i eksportu danych.

SQL Server podstawowy silnik baz danych, ktry operuje na magazynach


danych oraz zapytaniach i jest odpowiedzialny za konfiguracj systemu.

SQL Server Browser wspomaga rozgaszanie systemu, aby umoliwi


uytkownikom przeszukujcym sie lokaln sprawdzenie, czy na danej maszynie
dziaa system SQL Server.

SQL Server Integration Services obsuguje silnik SSIS.

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

VIA to biblioteka sieciowa stworzona w celu wsppracy z bardzo szczeglnym


(i drogim) sprztem. Jeli pracujesz w rodowisku VIA, to z pewnoci znasz jego
szczeglne wymagania. Tym, ktrzy nie operuj w tym rodowisku, wystarczy powiedzie, e VIA zapewnia bardzo szybkie, cho drogie, rozwizanie umoliwiajce
sprawn komunikacj midzy serwerami. Z reguy jednak nie uywa si go w przypadku zwykego klienta.
Jeli klient i serwer maj si porozumiewa midzy sob poprzez protok sieciowy, musz
posiada t sam bibliotek NetLib. Jeli serwer nie obsuguje biblioteki sieciowej uywanej przez klienta, to nie uda si nawiza poczenia i wygenerowany zostanie komunikat
o bdzie SQL Server Not Found (nie odnaleziono serwera SQL Server).
Niezalenie od metody dostpu do danych i rodzaju zastosowanego sterownika (SQL Native
Client, ODBC, OLE DB, DB-Lib) w kadym przypadku to wanie sterownik bdzie si
komunikowa z bibliotek NetLib. Przebieg tego procesu zilustrowano na rysunku 2.2. Jego
kolejne etapy to:
1. Aplikacja kliencka nawizuje kontakt ze sterownikiem (SQL Native Client,

ODBC, OLE DB, DB-Lib).


2. Sterownik wywouje bibliotek NetLib klienta.
3. Biblioteka NetLib wywouje odpowiedni protok sieciowy i przesya dane

do biblioteki NetLib serwera.


4. Biblioteka NetLib serwera przekazuje dania klienta do systemu SQL Server.
Rysunek 2.2

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

SQL Server 2005. Programowanie. Od podstaw

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

SQL Server 2005. Programowanie. Od podstaw

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

SQL Server 2005. Programowanie. Od podstaw

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

Tworzenie, edycja i usuwanie baz danych i obiektw bazy danych.

Zarzdzanie zadaniami, takimi jak wykonywanie kopii zapasowych i uruchamianie


pakietw SSIS.

Wywietlanie informacji dotyczcych biecej aktywnoci, np. zalogowanych


uytkownikw, blokad obiektw i podczonych klientw.

Zarzdzanie bezpieczestwem oraz takimi elementami jak role, loginy oraz zdalne
i sprzone serwery.

Inicjacja i zarzdzanie usugami pocztowymi bazy danych


(ang. Database Mail Service).

Rozdzia 2. n Narzdzia
n

Tworzenie katalogw wyszukiwania penotekstowego i zarzdzanie nimi.

Zarzdzanie ustawieniami konfiguracyjnymi serwera.

Tworzenie i zarzdzanie bazami publikatorw i subskrybentw na potrzeby


replikacji baz danych.

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 2005. Programowanie. Od podstaw

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

Wybierz serwer z jednej z zakadek i kliknij przycisk OK.

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.

SQL Server Authentication


Bezpieczestwo nie zaley od uprawnie uytkownika w sieci, ale od przyznanych mu
uprawnie w systemie SQL Server. Proces uwierzytelniania nie korzysta z loginw uywanych do logowania w sieci. Aby si zalogowa, uytkownik musi poda login i haso zdefiniowane w systemie SQL Server.
Ma to t zalet, e administrator serwera SQL nie musi by administratorem domeny (nie
musi nawet posiada konta w tej domenie), a mimo to moe nadawa uytkownikom prawa
do korzystania z systemu SQL Server. Proces ten jest te nieco prostszy ni w przypadku
uwierzytelniania Windows. Oznacza to rwnie, e jeden uytkownik moe korzysta z kilku
loginw, z ktrych kady daje mu inne prawa do przeprowadzania rnych operacji.

54

SQL Server 2005. Programowanie. Od podstaw

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),

i zapamitaj go. Moesz te zalogowa si jako inny uytkownik, pod warunkiem


e posiada on prawa administratora systemu.
3. Wprowad haso uytkownika sa, ktre zostao ustawione podczas instalacji

systemu SQL Server. W serwerach rozrniajcych wielkie i mae litery


(ang. case-sensitive) naley wprowadzi login, uywajc maych liter.
Jeli czysz si z serwerem zainstalowanym przez kogo innego lub zmienie ustawienia
domylne, to bdziesz musia wprowadzi informacje logowania odpowiadajce tym zmianom.
Po klikniciu przycisku OK powiniene zobaczy okno przedstawione na rysunku 2.9.
Naley zwrci uwag na haso uytkownika sa. Zarwno ten, jak i inni uytkownicy
sysadmin to tzw. superuytkownicy, ktrzy maj peny dostp do caej bazy.

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

SQL Server 2005. Programowanie. Od podstaw


W gwnym oknie zapyta wpisz nastpujcy kod:
SELECT * FROM INFORMATION_SCHEMA.TABLES

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

Kontrolki te pozwalaj na okrelenie sposobu prezentacji wynikw zapytania mog to


by tekst, siatka lub plik. Ustawienia te mona zmienia rwnie za pomoc polecenia
Results To znajdujcego si w menu Query.

58

SQL Server 2005. Programowanie. Od podstaw

Wyniki jako tekst


Opcja Results to Text pobiera wszystkie wyniki zapytania i umieszcza je na jednej stronie
w formacie tekstowym. Dugo tej strony moe by niemal nieskoczona (ogranicza j ilo
dostpnej w systemie pamici).
Zanim przejdziemy dalej, wykonaj ponownie nasze poprzednie zapytanie i zobacz, co si stao.
Wybierz opcj Results to Text, kliknij ikon z zielon strzak Include Actual Execution
Plan lub wybierz to polecenie z menu Query i wykonaj zapytanie jeszcze raz. Efekt pokazano
na rysunku 2.12.

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

Otrzymuj tylko jeden zbir wynikw, za wyniki maj do wskie kolumny.

Chc zapisa moje wyniki w pojedynczym pliku tekstowym.

Otrzymam kilka niewielkich zbiorw wynikw, wic chc zobaczy wszystkie


na jednej stronie bez koniecznoci borykania si z kilkoma paskami przewijania.

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

Zmiana rozmiaru kolumn poprzez umieszczenie wskanika myszy nad praw


krawdzi nagwka kolumny, a nastpnie kliknicie i przecignicie krawdzi
kolumny do nowego rozmiaru. Klikajc dwukrotnie krawd kolumny, mona
dokona automatycznego dostosowania rozmiaru.

Po zaznaczeniu kilku komrek, wyciciu ich i wklejeniu do innej siatki


(np. Microsoft Excel) bd one traktowane jako osobne komrki (gdybymy korzystali
z opcji Results to Text, wycite dane zostayby wklejone do jednej komrki).

Mona zaznaczy kilka kolumn wynikw (kiedy w Results to Text zaznaczymy


kilka wierszy, zaznaczone zostan kolumny wszystkich wierszy wewntrznych;
zaznaczenia mona dokona tylko w rodku pierwszego i ostatniego wiersza).

Poniewa zazwyczaj potrzebuj jednej z powyej opisanych moliwoci, najczciej korzystam


z tej wanie opcji.

Plan wykonania zapytania


Przy kadym uruchomieniu zapytania SQL Server analizuje to zapytanie i wysya je do
optymalizatora zapyta (ang. query optimizer). Optymalizator zapyta to cz systemu
SQL Server ustalajca taki sposb wykonania zapytania, aby umoliwi szybkie otrzymanie
wynikw i w jak najmniejszym stopniu wpyn na prac pozostaych uytkownikw. Korzystajc z opcji Display Estimated Execution Plan, otrzymamy graficzny obraz oraz dodatkowe informacje dotyczce tego, jak SQL Server zamierza wykona zapytanie. Mona
te wczy opcj Include Actual Execution Plan (docz rzeczywisty plan wykonania). Zazwyczaj nie bdzie rnic midzy szacowanym a rzeczywistym planem wykonania. Czasami
jednak rnice takie pojawiaj si w zwizku ze zmianami dokonywanymi przez optymalizator
podczas wykonywania zapytania i rzeczywistym kosztem wykonania zapytania, odmiennym
od tego, ktry obliczy optymalizator.
Aby zobaczy, jak wyglda plan wykonania naszego prostego zapytania, naley klikn
opcj Include Actual Execution Plan i ponownie wykona zapytanie. Jeli chcemy zobaczy koszt wykonania zapytania, musimy klikn zakadk Execution Plan. Pokazano to na
rysunku 2.13.
Zwrmy te uwag, e wyniki zapytania s nadal wywietlane w wybrany przez nas sposb.
Wyniki dziaania opcji Display Estimated Execution Plan i Include Actual Execution Plan
s niemale identyczne, za wyjtkiem dwch rnic:
n

Otrzymujemy plan od razu, a nie dopiero po wykonaniu zapytania.

Chocia widzimy plan, to wszystkie informacje dotyczce kosztw s wynikiem


szacunkw, a nie rzeczywistego wykonania zapytania. Kiedy uruchamiamy
zapytanie z opcj Include Actual Execution Plan, zapytanie jest fizycznie
wykonywane i informacje dotyczce kosztw s rzeczywiste, a nie szacowane.

60

SQL Server 2005. Programowanie. Od podstaw

Rysunek 2.13

Lista wyboru bazy danych


Przejdmy teraz do omwienia listy wyboru bazy danych. Suy ona do wyboru domylnej
bazy danych, na ktrej bd operoway zapytania wykonywane w biecym oknie. W momencie uruchomienia okna zapyta domylna baza to ta, do ktrej zalogowa si uytkownik (jeli niczego nie zmieniono w systemie, to w przypadku uytkownika sa jest to baza
master). Nastpnie mona przej do innej bazy, o ile wykorzystywany login ma do niej
prawa dostpu. Poniewa korzystamy z identyfikatora uytkownika sa, na licie baz danych
powinny pojawi si wszystkie bazy danych, jakie znajduj si na biecym serwerze.
Zmiemy baz na AdventureWorks i ponownie wykonajmy poprzednie zapytanie, tak jak
pokazano to na rysunku 2.14.
Jak zobaczysz, przedstawione dane pochodz wanie z wybranej bazy.

Rozdzia 2. n Narzdzia

61

Rysunek 2.14

Okno Object Explorer


Okno Object Explorer (eksplorator obiektw) to mae, ale uyteczne narzdzie, ktre pozwala
przemieszcza si w bazie danych, sprawdza nazwy obiektw, a nawet przeprowadza
operacje, takie jak pisanie skryptw i przegldanie danych.
Elementy listy mona rozwija a do momentu, kiedy dojdziemy do listy tabel znajdujcych
si w wybranej bazie, np. AdventureWorks. Mona posun si jeszcze dalej i przeglda
poszczeglne kolumny, typy danych i inne waciwoci. To bardzo porczne narzdzie do
przegldania baz danych.

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

SQL Server 2005. Programowanie. Od podstaw


Dziki zastosowaniu SSIS usunito lub przynajmniej wyeliminowano konieczno tworzenia ogromnych iloci kodu pisanego zazwyczaj w jzyku obsugiwanym po stronie klienta.
Kod ten musia powstawa, aby obsuy tego typu sytuacje. SSIS pozwala pobra dane z dowolnego rda, takiego jak OLE DB lub .NET, i umieci je w tabelach systemu SQL Server.
Naley pamita, e istnieje specjalny dostawca OLE DB dla ODBC. Dostawca ten pozwala zamapowa dostp z OLE DB bezporednio do sterownika ODBC. Oznacza to, e za
pomoc OLE DB (a dziki temu rwnie SSIS) mona uzyska dostp do ODBC. Pozwala
to te na uzyskanie dostpu do OLE DB przez ODBC.
Skoro ju przy tym jestemy, chciabym podkreli, e chocia SSIS jest czci systemu
SQL Server, to moe pracowa na dowolnym rdle i celu OLE DB. Oznacza to, e SQL
Server nie musi by w ogle zaangaowany w ten proces i suy jedynie do pompowania
danych. Mona na przykad wysa dane z bazy Oracle do arkusza Excel, a nawet z bazy
DB/2 do MySQL.

Podczas przenoszenia danych moemy zastosowa tzw. transformacje danych. Transformacje


po prostu zmieniaj dane zgodnie z pewnymi reguami logicznymi. Przeksztacenie takie
moe by proste, jak np. zmiana nazwy kolumny, lub zoone, jak np. analiza integralnoci
danych i w razie koniecznoci zastosowanie odpowiednich regu. Aby sobie to wyobrazi,
zastanw si nad podanym przeze mnie przykadem, w ktrym pobierano dane z pola zawierajcego wartoci NULL i wstawiano je do tabeli, ktra nie zezwalaa na tego typu wartoci.
Korzystajc z SSIS, podczas procesu przenoszenia danych mona dokona automatycznej
zamiany wartoci NULL na dowolnie wybran warto (np. zero w przypadku liczby lub nieznany w przypadku cigu znakw).

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

SQL Server 2005. Programowanie. Od podstaw

Nie bdziesz codziennie uywa wikszoci przedstawionych tutaj narzdzi. Przecitny


programista bdzie na co dzie korzysta z SQL Server Management Studio. Mimo to naley
posiada wyobraenie na temat tego, jakie zadania kade z tych narzdzi moe realizowa.
Kade moe zaoferowa jak wan funkcjonalno. Na kartach naszej ksiki spotkamy
si jeszcze z tymi narzdziami.
Dostpne s jeszcze inne narzdzia, wykorzystywane gwnie w celach administracyjnych,
do ktrych nie ma skrtw w menu Start (narzdzia cznoci oraz diagnostyki i konserwacji
serwera).

You might also like