Professional Documents
Culture Documents
Zaawansowane
rozwizania biznesowe
Autor: Igor Kruk, Artur Mocicki
ISBN: 978-83-246-1333-5
Format: 158x235, stron: 312
Zdobd wiedz o tworzeniu zaawansowanych aplikacji bazodanowych!
Jak uywa tabel tymczasowych do tworzenia specjalnych hierarchii?
Do czego su zmienne tablicowe?
Na czym polega konwertowanie danych relacyjnych do formatu XML?
SQL Server 2005 to pierwsza wersja serwera, w ktrej dane XML s przechowywane
i przetwarzane faktycznie jako XML, a nie jako pochodne danych tekstowych
lub binarnych, jak to byo w wersjach poprzednich. W SQL Server 2005 moemy uy
typu danych XML jako kolumny, zmiennej lokalnej lub parametru. Moemy w niej
przechowywa cae dokumenty XML lub tylko ich fragmenty (niezawierajce elementu
gwnego, tzw. root node). Integracja z platform Microsoft NET oraz ulepszone funkcje
Business Intelligence pozwalaj programistom na skupienie si na najwaniejszych
zadaniach, bez koniecznoci pracy w nieznanym rodowisku, a przedsibiorstwom daj
moliwo przeksztacania informacji w lepsze rozwizania biznesowe.
Ksika SQL Server 2005. Zaawansowane rozwizania biznesowe przedstawia jeden
z najpopularniejszych serwerw bazodanowych sucych do budowy rnych
systemw informatycznych, czyli SQL Server 2005. Ten obszerny podrcznik zawiera
szczegowe informacje oraz przykady dotyczce wielowymiarowych baz danych
oraz wymaga, jakie mog pojawi si podczas budowy mechanizmw ich zasilania
danymi rdowymi. Czytajc go, dowiesz si, jak tworzy efektywne i wydajne
aplikacje oraz nauczysz si wdraa nowatorskie pomysy, ktre kademu
przedsibiorstwu przynios wymierne korzyci biznesowe.
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Perspektywy
Procedury i funkcje
Wyzwalacze
Dynamiczny SQL
Tabele tymczasowe i zmienne tablicowe
Transakcje i wyjtki w aplikacjach biznesowych
Full Text Search
XML
Database Mail
Rozwizania biznesowe
Integracja z .NET i CLR
SQL Server Integration Services
Spis tre!ci
Wst p .............................................................................................. 9
Rozdzia$ 1. Perspektywy .................................................................................. 11
Wst%p .............................................................................................................................. 11
Informacje oglne ........................................................................................................... 11
Sortowanie danych w perspektywie ............................................................................... 16
Od#wie!anie perspektyw ................................................................................................ 18
Opcje perspektywy ......................................................................................................... 21
ENCRYPTION ......................................................................................................... 21
SCHEMABINDING ................................................................................................ 22
CHECK OPTION ........................................................................................................... 23
Perspektywy indeksowane .............................................................................................. 25
Podsumowanie ................................................................................................................ 28
Spis tre!ci
Rozdzia 8.
XML
Wstp
SQL Server 2005 to pierwsza wersja serwera, w ktrej dane XML s przechowywane
i przetwarzane faktycznie jako XML, a nie jako pochodne danych tekstowych lub binarnych, jak to byo w poprzednich wersjach serwera. Zaadowanie danych XML np.
w SQL Server 2000 byo stosunkowo proste, jednak ju dostp do tych danych, modyfikowanie i wyszukiwanie konkretnych obiektw wymagay zoonych operacji.
SQL Server 2000 umoliwia wykonanie tylko dwch polece zwizanych z obsug
formatu XML:
OPENXML umoliwia zaadowanie dokumentu XML do pamici SQL Servera,
168
Powyszym zagadnieniom powicony zosta ten rozdzia ksiki. Zanim jednak zajmiemy si szczegami tych zagadnie, przypomnijmy sobie podstawowe informacje
na temat danych, plikw i formatu XML.
Rozdzia 8. XML
169
W drugim przykadzie deklarujemy zmienn mixInfo typu XML, przypisujemy jej warto, a nastpnie wstawiamy przy uyciu polecenia INSERT do tabeli myMixes:
DECLARE @mixInfo XML
SET @mixInfo =
CAST('
<Mix>
<Tracks>
<Track id="1">Raven <Track id="2">Track02
<Track id="3">Track03
<Track id="4">Track04
</Tracks>
</Mix>' as XML
)
Intro</Track>
Title02</Track>
Title03</Track>
Title 04</Track>
W obydwu przykadach dane zostay jawnie skonwertowane na typ XML. Podczas tej
konwersji SQL Server wykona tylko podstawowe sprawdzenie, czy dane maj format
XML, np. czy wszystkie tagi otwierajce maj odpowiednie tagi zamykajce. Nie sprawdza natomiast, czy maj one okrelon oczekiwan przez nas struktur. W powyszych przykadach struktura danych XML zakadaa istnienie elementw Mix, Tracks
i Track z atrybutem id. Gdybymy podjli prb wstawienia do tabeli myMixes danych
XML w innej strukturze, SQL Server nie zgosiby bdu, bo nie wie tak naprawd, jaka
powinna by struktura wstawianych danych. Do wprowadzania ogranicze na dane XML
su schematy XML.
170
Tworzenie obiektw danych typu XML wymaga zdefiniowania w bazie danych zbiorw
schematw. Suy do tego instrukcja CREATE XML SCHEMA COLLECTION. Instrukcja ta
tworzy zbir schematw mogcy skada si z jednego lub wicej schematw, z ktrych kady opisuje jedn przestrze nazw. Skadnia tego polecenia jest nastpujca:
CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier
AS Expression
Rozdzia 8. XML
171
Parametr use="required" oznacza, e atrybut ten musi wystpi w pliku XML powizanym z tym schematem. Parametr type="xsd:integer" oznacza, e atrybut LocationID
musi by typu cakowitoliczbowego.
Sprbujmy teraz utworzy now tabel zawierajc kolumn typu XML, do ktrej
przypiszemy omawiany schemat. Nastpnie przetestujemy dziaanie sprawdzania poprawnoci wstawianych danych XML przez ten schemat.
Ponisze polecenie T-SQL tworzy tabel o nazwie TEST skadajc si z dwch kolumn:
identyfikatora wiersza i danych w formacie XML. Do tabeli przypisywany jest schemat
Production.ManuInstructionsSchemaCollection.
CREATE TABLE dbo.TEST
(
rowID int IDENTITY(1,1) PRIMARY KEY,
dane XML (Production.ManuInstructionsSchemaCollection) NULL
)
Pierwszy przykad wstawia do tabeli TEST dane XML zgodne z caym schematem
Production.ManuInstructionsSchemaCollection:
172
Jeli dokadnie przeanalizowalibymy tre wczeniej omawianego schematu, znalelibymy odwoania do wszystkich elementw z powyszego przykadu.
W kolejnym przykadzie atrybutowi LocationID przypiszemy warto tekstow niezgodn ze schematem:
INSERT INTO TEST (dane) VALUES (
CAST(
'<t:root xmlns:t="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/
ProductModelManuInstructions">
<t:Location LotSize="0.0" SetupHours="0.0" LocationID="tekst" MachineHours="0.0"
LaborHours="0.0">
<t:step>
<t:tool>String</t:tool>
</t:step>
</t:Location>
</t:root>' AS XML))
Rozdzia 8. XML
173
Zwrmy uwag, e SQL Server 2005 informuje, e brak tylko atrybutu LocationID. Nie
wspomina natomiast nic o pozostaych atrybutach: LotSize, SetupHours, MachineHours,
LaborHours. Wynika to z tego, e atrybuty te nie maj w definicji schematu Production.
ManuInstructionsSchemaCollection parametru use="required".
Jak zauwaylimy w powyszych przykadach, dziki przypisywaniu schematw XML
do kolumn tego typu mamy moliwo automatycznej weryfikacji poprawnoci wstawianych i modyfikowanych danych. Przedstawione w tym rozdziale informacje dotyczce
schematw XML obejmuj tylko cz tej tematyki. Zainteresowanych tematem schematw XML odsyamy na stron http://www.w3.org/XML/Schema.
Metody dostpu
do danych XML i ich obsugi
W SQL Server 2005 dostpnych jest pi metod umoliwiajcych operowanie na danych
typu XML. S to:
exist,
nodes,
query,
value,
modify.
Metody exist, nodes, query, value zalicza si do jzyka XQuery, ktry suy do wyszukiwania informacji w danych typu XML. Przyjrzyjmy si teraz bliej poszczeglnym
metodom.
Metoda exist
Metoda exist pozwala sprawdzi, czy w danych XML istnieje okrelony obiekt. Zwraca
ona warto 1 (True), gdy obiekt znajduje si w danych XML, w przeciwnym razie
zwracana jest warto 0 (False). Posumy si omawianym wczeniej schematem XML
i sprawdmy, czy w tabeli test w kolumnie dane znajduje si element Location z atrybutem LocationID o wartoci 1. Ponisze polecenie T-SQL wykonuje to sprawdzenie:
SELECT * FROM test
WHERE dane.exist('declare namespace t="http://schemas.microsoft.com/sqlserver/
2004/07/adventure-works/ProductModelManuInstructions";
/t:root/t:Location[@LocationID=1]') = 1
174
Naley take zaznaczy, e w powyszym przykadzie adres URL w deklaracji przestrzeni nazw musi znajdowa si w jednym wierszu. W ksice zosta zamany ze wzgldu na ograniczenia w druku.
Metoda query
Wykorzystujc metod query oraz poprawnie zdefiniowane zapytanie XQuery,
mamy atwy dostp do danych XML. Metoda pobiera fragment danych XML i zwraca je
w postaci tekstowej, a nie XML. W poniszym przykadzie odwoujemy si do bazy
AdventureWorks i tabeli Production.ProductionModel. Pobierane s elementy steps
z danych XML dla wiersza z identyfikatorem 10.
SELECT
ProductModelID,
Instructions.query('declare namespace t="http://schemas.microsoft.com/
sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
/t:root/t:Location/t:step') AS Steps
FROM Production.ProductModel
WHERE ProductModelID = 10
Metoda value
Metoda value suy do pobierania konkretnych wartoci elementw lub ich atrybutw
w postaci jednego z podstawowych typw danych, np. int, varchar. Metoda ta przyjmuje dwa argumenty. Pierwszy to poprawnie skonstruowane polecenie XQuery, drugi
za to nazwa podstawowego typu danych, w ktrym maj by zwrcone wyniki. Dozwolone s wszystkie typy danych oprcz XML, image, text, ntext, timestamp oraz typw
zdefiniowanych przez uytkownika.
Wykorzystajmy ponownie tabel Production.ProductModel z bazy AdventureWorks.
Zamy, e chcemy uzyska warto atrybutu LotSize, drugiego elementu Location
dla wiersza z identyfikatorem 10. Zapytanie moe wyglda tak jak poniej (dla czytelnoci i przejrzystoci zapytania ponownie zastosowalimy polecenie WITH NAMESPACE):
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/
ProductModelManuInstructions' AS t)
SELECT ProductModelID,
Instructions.value('(/t:root/t:Location/@LotSize)[2]',
'decimal (5,2)') AS Location
FROM Production.ProductModel
WHERE ProductModelID = 10
Rozdzia 8. XML
175
Location
1.00
Cay czas pamitajmy, e adres URL w deklaracji przestrzeni nazw musi znajdowa
si w jednym wierszu.
Jeli taka konwersja nie bdzie moliwa, SQL Server 2005 zgosi bd. W poniszym
przykadzie chcemy uzyska warto elementu material i nada jej dziesitny typ danych:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/
ProductModelManuInstructions' AS t)
SELECT ProductModelID,
Instructions.value('(/t:root/t:Location/t:step/t:material)[2]',
'decimal (5,2)') AS Location
FROM Production.ProductModel
WHERE ProductModelID = 10
Wynika to z faktu, e warto elementu material ma posta tekstow. Zatem w poprawnym zapytaniu zwracanej wartoci moe by przypisany typ danych varchar. Przedstawia to poniszy przykad:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/
ProductModelManuInstructions' AS t)
SELECT ProductModelID,
Instructions.value('(/t:root/t:Location/t:step/t:material)[2]',
'varchar(255)') AS Material
FROM Production.ProductModel
WHERE ProductModelID = 10
Material
Acme Polish Cream
Metoda nodes
Metoda nodes umoliwia przeksztacenie danych typu XML w dane o strukturze relacyjnej. Dla kadego wystpienia odpowiednio zdefiniowanego w zapytaniu XQuery
elementu tworzony jest oddzielny wiersz w wynikowej tabeli relacyjnej. Wrmy do
przykadu z tego rozdziau dotyczcego danych XML o megamiksach. W poniszym
przykadzie w pierwszej kolejnoci definiowane s dane w postaci XML. Nastpnie
w zapytaniu T-SQL metoda nodes konwertuje kade wystpienie elementu Track na
posta relacyjn jednego wiersza w tabeli Tab w kolumnie Col. W klauzuli SELECT
posuymy si poznan wczeniej metod value do uzyskania wartoci kadego elementu:
176
Intro</Track>
Title02</Track>
Title03</Track>
Title 04</Track>
Zwrmy uwag, e gdybymy nie uyli w klauzuli SELECT jednej z XML-owych metod
(exist, query, value) i sprbowali wykona nastpujce zapytanie:
SELECT * FROM @mixInfo.nodes('/Mix/Tracks/Track') as Tab(Col)
Metoda modify
Metoda modify jest rozszerzeniem opracowanym przez firm Microsoft do jzyka XQuery
i nazwanym XML Data Manipulation Language XML DML. Standardowe metody
jzyka XQuery, omwione wczeniej w tym rozdziale, su tylko do pobierania informacji z XML. Metoda modify, jako jedyna, umoliwia modyfikowanie danych XML.
XML DML udostpnia nowe polecenia:
insert,
delete,
replace value of.