SQL_2005.04.pdf

(587 KB) Pobierz
Rozdział 4
Integracja ze środowiskiem
Microsoft .NET Framework
W tym rozdziale:
Visual Studio 2005 ...................................................................................................... 58
Integracja ze środowiskiem CLR ............................................................................. 60
Agregacje definiowane przez użytkownika ........................................................ 62
Funkcje definiowane przez użytkownika ............................................................. 71
Dostawca zarządzalnej usługi SQL Server ........................................................... 73
Procedury składowane .............................................................................................. 77
Procedury wyzwalane ................................................................................................ 79
Podsumowanie ............................................................................................................ 82
Dla wszystkich programistów, integracja ze środowiskiem
Microsoft .NET Framework
będzie prawdopodobnie najbardziej intrygującym aspektem spośród wszystkich nowości
wprowadzonych do produktu
Microsoft SQL Server 2005.
Integracja ta ma wpływ na wiele
różnych aspektów pracy z programem
SQL Server,
począwszy od wpływu na programowe
możliwości administrowania bazą danych (takich jak np. nowe obiekty zarządzania SQL
[SMO – ang. SQL Management Object], będące odpowiedzią środowiska .NET na stosowane
poprzednio rozproszone obiekty zarządzania SQL, oparte na technologii COM [SQL-DMO
– ang. COM-based SQL Distributed Management Objects]), a skończywszy na zagadnie-
niach czysto programistycznych (takich jak np. możliwość pisania funkcji oraz procedur
w językach zgodnych ze środowiskiem .NET, obejmujących obecnie język C# oraz Visual
Basic .NET). Najistotniejszy jest drugi z tych aspektów, ponieważ integracja ze wspólnym
środowiskiem uruchomieniowym (CLR – ang. Common Language Runtime) wpływa nie
tylko na sposób programowania w
SQL Server,
ale także na podstawową naturę samych
danych, gdyż obecnie możliwe jest tworzenie typów danych opartych na środowisku CLR
i stosowanie ich w
SQL Server.
Pojawiło się wiele różnych spekulacji na temat sposobu współdziałania środowiska CLR
z
SQL Server.
Powstało też wiele różnych pomysłów dotyczących sposobu wykorzy-
stania tej integracji, począwszy od bezpośredniej zdalnej ingerencji ze środowiska .NET
57
58
Część II: Integracja ze wspólnym środowiskiem uruchomieniowym
do wbudowanego kodu środowiska CLR, a skończywszy na idei przenoszenia do bazy
danych tak dużej części kodu jak to tylko będzie możliwe. Celem tego rozdziału jest poka-
zanie, w jaki sposób należy prawidłowo wykorzystywać integrację ze środowiskiem CLR
podczas tworzenia aplikacji bazodanowych, rozwiewając jednocześnie wszelkie błędne
wyobrażenia na ten temat.
Visual Studio 2005
Microsoft Visual Studio 2005
jest najnowszą wersją produktu z serii
Visual Studio
oraz
środowiska programowania
.NET Framework.
Obecna wersja jest lepsza od poprzednich
pod wieloma różnymi względami: oferuje nowe, poprawione obiekty, nowe środowisko
programowania, lepiej dostosowany do środowiska programowania interfejs użytkownika
oraz – co chyba najważniejsze – zintegrowaną współpracę z programem
SQL Server 2005.
Visual Studio 2005
pozwala na tworzenie i wdrażanie projektów dla
SQL Server 2005
poprzez zwykłe kliknięcie myszą.
Wprowadzane zmiany nie są jednak widoczne na pierwszy rzut oka. Zachowany został
ogólny wygląd i układ okien, a okno
Start page
(Strona początkowa) jest nadal pierwszym
oknem otwieranym po uruchomieniu programu. Prawdę mówiąc, użytkownicy poprzednich
wersji Visual Studio mogliby po prostu kontynuować tworzenie aplikacji dla środowiska
.NET, bez jednego mrugnięcia okiem.
Sposób formatowania kodu w oknie edycji jest obecnie bardziej przejrzysty i działa lepiej
niż w poprzednich wersjach, ponadto w oknie tym występuje teraz kilka nowych kolo-
rów. Możliwe jest skonfigurowanie większej ilości różnych elementów kodu, które należy
wyświetlać w różnych kolorach, a wszystkie występujące w kodzie typy danych są również
oznaczane różnymi kolorami, aby ułatwić czytanie kodu programu. Jakkolwiek wszystkie
te nowe funkcje są bardzo przydatne, to stanowią one jedynie część możliwości wersji
SQL
Server 2005.
Niezależnie od tego, w którym z obsługiwanych języków programowania zdecydujemy
się utworzyć nowy projekt, to w oknie dialogowym
Add New Project
(Dodaj nowy projekt)
jednym z dostępnych szablonów projektu będzie szablon
SQL Server
(patrz rysunek 4-1).
Wybór tego szablonu spowoduje utworzenie projektu (patrz rysunek 4-2), zawierającego
odniesienia niezbędne do programowania obiektów
SQL Server
w środowisku .NET.
Rozdział 4: Integracja ze środowiskiem Microsoft .NET Framework
59
Rysunek 4-1
Tworzenie projektu SQL Server w Visual Studio 2005.
Rysunek 4-2
Wybór domyślnej bazy danych dla projektu SQL Server.
Po utworzeniu projektu możliwe jest dodanie do niego klas, takich jak np.
Stored Procedure
(Procedura składowana) lub
User-Defined Type
(Typ zdefiniowany przez użytkownika).
Różne rodzaje plików klas są również szablonami i w razie potrzeby można je dodawać (impor-
tować), określając przy tym nawet wartości podstawowych atrybutów wymaganych przez daną
klasę. Na rysunku 4-3 pokazany został projekt
SQL Server
wraz z plikiem klasy.
60
Część II: Integracja ze wspólnym środowiskiem uruchomieniowym
Rysunek 4-3
Projekt oraz plik klasy w Visual Studio 2005.
Podczas tworzenia projektu
SQL Server
użytkownik zostaje poproszony o wskazanie bazy
danych, z którą będzie się można połączyć w razie potrzeby. Podczas instalacji zestawu,
co jest czynnością tak prostą jak kliknięcie projektu prawym przyciskiem myszy i wybra-
nie z menu polecenia
Deploy
(Instaluj), zostanie użyta właśnie ta, wstępnie wybrana baza
danych. Wskazanie domyślnej bazy danych może zostać w każdej chwili zmienione. Po zain-
stalowaniu zestawu można przejść do
SQL Server Management Studio
(nowy interfejs
użytkownika) i korzystać ze zdefiniowanych w tym zestawie obiektów.
W
Visual Studio 2005
proces instalacji idzie nawet jeszcze dalej, gdyż na podstawie
działania kodu .NET zostają ustawione w
SQL Server
prawidłowe uprawnienia środowiska
CLR dla instalowanego zestawu (zagadnienie to zostanie szerzej omówione w rozdziale 7,
poświęconym nowym funkcjom zabezpieczeń w wersji
SQL Server 2005).
Moglibyśmy tutaj zacząć rozwodzić się nad tym, jak
Visual Studio 2005
zmieni Twoje
życie, lub nawet jak uczyni z Ciebie lepszego programistę, ale tematem tego rozdziału jest
integracja
SQL Server
ze środowiskiem CLR. Przejdźmy zatem do rzeczy ....
Integracja ze środowiskiem CLR
Pierwsze wrażenie wywarte przez integrację ze środowiskiem CLR może prowadzić do myl-
nego wniosku, że języki kompatybilne z platformą .NET (C# oraz Visual Basic .NET) oraz
język T-SQL mogą być stosowane zamiennie i przypuszczalnie również jednocześnie w tej
samej procedurze. Ale nie na tym polega integracja ze środowiskiem CLR.
Możliwość wyboru
Programista ma możliwość wyboru: może pisać pewne fragmenty kodu w języku T-SQL albo
w jednym z języków zgodnych ze standardem .NET (w chwili pisania tej książki takimi języ-
kami były tylko języki C# oraz Visual Basic .NET, ale w przyszłości mogą pojawić się również
Rozdział 4: Integracja ze środowiskiem Microsoft .NET Framework
61
inne języki). Jednak w dalszym ciągu konieczne jest definiowanie w języku T-SQL proce-
dur, procedur wyzwalanych (ang.
triggers)
i innych podobnych elementów, które zasadniczo
służą do rejestrowania kodu typu CLR w
SQL Server.
Tak więc korzystanie z kodu opartego
na środowisku CLR będzie zawsze wymagało użycia pewnej ilości kodu w języku T-SQL (jak-
kolwiek
SQL Magement Studio
może ukrywać ten fakt przed programistą korzystającym
ze środowiska programowania z graficznym interfejsem użytkownika [GUI]).
Chcąc np. napisać procedurę składowaną w języku C#, należy najpierw napisać odpo-
wiedni kod w tym języku i skompilować zestaw. Następnie należy zarejestrować ten zestaw
w
SQL Server
i załadować go do bazy danych przy użyciu instrukcji języka T-SQL
CREATE
ASSEMBLY.
Na koniec, za pomocą instrukcji
CREATE PROCEDURE
(znowu w języku T-SQL)
należy „podłączyć” procedurę składowaną do funkcji znajdującej się wewnątrz zarejestrowa-
nego zestawu. Jest to nieco uproszczony opis działania, lecz chodziło w nim o pokazanie,
że język T-SQL ciągle odgrywa istotną rolę w tym procesie.
Istnieją także takie sytuacje, które po prostu wymagają użycia języka T-SQL, jak np. pobie-
ranie danych. W środowisku .NET nie istnieje odpowiednik instrukcji
SELECT
języka T-SQL;
nawet procedura składowana napisana w języku C#, w celu pobrania danych z bazy danych,
musi odwoływać się do pomocy języka T-SQL. Odbywa się to za pośrednictwem ADO.NET
i jego specjalnej funkcji, wykorzystującej fakt, że kod w języku C# uruchamiany jest w kontek-
ście
SQL Server.
Ponownie sprowadza się to tego, że nie możemy pominąć języka T-SQL.
Tak więc środowisko .NET należy postrzegać jako rozszerzenie języka T-SQL, pod pew-
nymi względami przypominające sposób stosowania rozszerzonych procedur składowanych
w poprzednich wersjach
SQL Server,
a nie jako jego zamiennik. Obiekty w bazie danych
są w dalszym ciągu definiowane wyłącznie w języku T-SQL. Również funkcjonalność kilku
instrukcji języka manipulacji danymi (DML), takich jak np.
SELECT
i
INSERT,
istnieje
wyłącznie w języku T-SQL. Aż do poziomu faktycznego kodu procedur, funkcji itd., progra-
mista ma możliwość wyboru: .NET albo język T-SQL. Dobrze zaprojektowana baza danych
ciągle zawierać będzie mnóstwo kodu w języku T-SQL, dla którego kod oparty na środowi-
sku CLR stanowić będzie jedynie uzupełnienie.
Co wybrać?
Kiedy należy programować w języku T-SQL, a kiedy w językach z grupy .NET? Poniżej
podane zostaną reguły wyboru języka programowania, których nie należy jednak trak-
tować jako absolutnych, gdyż proces podejmowania decyzji zależny jest od zbyt wielu
czynników. Oto trzy proste wskazówki, pomagające programiście dokonać prawidłowego
wyboru języka:
Jeśli podstawowym celem kodu będzie wyszukiwanie lub modyfikowanie danych,
to powinien on zostać napisany w języku T-SQL. Kod oparty na środowisku CLR musi
„łączyć się z powrotem” z
SQL Server,
aby otrzymać od niego dane, a więc nigdy nie
osiągnie takiej samej prędkości dostępu do danych jak język T-SQL.
Jeśli podstawowym zadaniem kodu mają być operacje intensywnie korzystające z proce-
sora (operacje matematyczne, szyfrowanie itp.), to powinien on zostać napisany w śro-
dowisku .NET.
Zgłoś jeśli naruszono regulamin