kapitola 1: Úvod a inštalácia · 29485 catherine abel [email protected] van nuys...

66

Upload: others

Post on 26-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 2: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 3: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

2 SQ Se ve 2008 p akt cký sp evodca nov nkam

Kapitola 1: Úvod a inštalácia

Pod označením SQ Se ve 2008 sa nesk ýva en samotný databázový se ve , a e komp exná mode ná, výkonná, spoľah vá a bezpečná se ve ová p atfo ma p e uk adan e a sp ávu údajov v databázach a údajových sk adoch a ba íky nást ojov p e Bus ness nte gence v átane pok oč ého epo tovan a Up atní sa v š okej šká e podn kov všetkých veľkostí Po adí s n e en s e ačným a mu t d menz oná nym údajm , a e poskytne spoľah vé ú ož sko aj p e mu t med á ne dokumenty a súbo y Nová č ta „spat a “ poskytuje š oké možnost sp acovan a geomet ckých a geog afi ckých údajov, nap ík ad z ôznych GPS za adení a podobne N ekto é č ty sú vy epšené z p edchádzajúcej ve z e, no n ekto é sú úp ne nové a je pot ebné, aby sa s n m vývojá databázových ap kác í zoznám a vede ch efektívne využívať v nových ap kác ách

SQL Server 2008 – komplexná a škálovateľná databázová platforma

Microsoft SQL Server 2008 ako súčasť novej vlny produktov

Databázový se ve SQ Se ve 2008 je nteg á nou súčasťou novej v ny uvádzaných p oduktov V tejto v ne ep ezentuje vývojá ske nást oje V sua Stud o 2008 a s ním spojená techno og cká p atfo ma NET F amewo k 3 5 Kome čná ve z a je na t hu od decemb a 2007 V oku 2008 p budo do od ny se ve ov z d e ne spo očnost M c osoft nový ope ačný systém W ndows Se ve 2008 a SQ Se ve 2008 Aby bo o možné vyvíjať ap kác e p e SQ Se ve 2008, je pot ebné dop n ť V sua Stud o 2008 o ba íček SP1

SQL Server 2008 je jedným z nosných pilierov novej „vlny“ produktov spoločnosti Microsoft

Page 4: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 5: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

4 SQ Se ve 2008 p akt cký sp evodca nov nkam

Inštalácia SQL Servera 2008

P e p akt cké zoznámen e sa s novým databázovým se ve om MS SQ Se ve 2008 bude p í učka zame aná v ac p akt cky, to znamená, že jednot vé témy budú p ebe ané na cv čných p ík adoch P eto ako p vý úkon odpo účame nšta ác u nšta ác a všetkých s už eb p og amov a nást ojov se ve a SQ Se ve 2008 je súst edená do ut ty SQ Se ve nsta at on Cente Ako veľm zaujímavú a te natívu p e testovan e a zoznamovan e sa so se ve om SQ Se ve 2008 odpo účame na nšta ovať ho na v tuá ny počítač vytvo ený pomocou nást oja M c osoft V tua PC 2007 Ako ope ačný systém odpo účame p e vývojá ov a študentov W ndows V sta a p e m g ujúc ch adm n st áto ov W ndows Se ve 2008 V p íp avnej fáze sa na nšta uje techno og cká p atfo ma M c osoft NET F amewo k 3 5, p ípadne sa upg aduje na ve z u SP1 a podpo né súbo y (Powe She , MS )

Ponuka možností SQL Server Installation Center

V ďa šej p vej fáze po súh ase s cenčným podm enkam nšta ačný p og am skont o uje konfi gu ác u počítača, č je p e nšta ác u se ve a SQ Se ve 2008 vhodný V p ípade nevhodného ope ačného systému, ma ej pamäte a ebo d skovej kapac ty, p ípadne poma ého p oceso a bude používateľ na túto skutočnosť upozo nený

Kontrola konfi gurácie systému

Page 6: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 7: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

6 SQ Se ve 2008 p akt cký sp evodca nov nkam

Konfi gurácia servera – prístupové účty

P ístupové účty sú spo očné s ope ačným systémom W ndows

Prístupové účty sú spoločné s operačným systémom Windows

Nas eduje voľba oká neho a ebo doménového p ístupu Môžeme zvo ť možnosť Windows Authentication Mode a ebo Mixed Mode, kedy sa ove í autent fi kác a ope ačného systému W ndows spo u s p h asovacím hes om se ve a SQ Se ve P e tento mód je pot ebné zadať hes o, kto é budeme používať ako adm n st áto

Konfi gurácia typu prístupu

Page 8: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 9: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

8 SQ Se ve 2008 p akt cký sp evodca nov nkam

Kapitola 2: Konfi gurácia, administrácia a vytvorenie cvičnej databázy

SQ Se ve 2008 je súh nný názov p e súbo s už eb na pozadí a nást ojov p e ch sp ávu Najdô ež tejšou ap kác ou p e sp ávu databázového se ve a je SQ Se ve Management Stud o Je to zá oveň aj akýs „p ezo “ pomocou kto ého môžeme z st ť, čo databázový se ve obí, aké št uktú y sp avuje a podobne Tento nást oj spust a p e zoznámen e sa so se ve em SQ Se ve 2008 aj „m g ant “ z ných databázových p atfo em a v nepos ednom ade aj zač atočníc v odbo e databáz, kto í s naštudova zák ady teó e databáz a jazyka SQ a budú s chc eť vyskúšať p vý jednoduchý p ík ad Bude ch u č te zaujímať, kam v astne t e SQ p íkazy zadávať a kde a v akej fo me získajú výs edok SQ Se ve Management Stud o je komp exné nteg ované p ost ed e p e sp ávu databázového se ve a SQ Se ve 2008 Spúšťa sa štanda dným spôsobom z menu ope ačného systému W ndows Start All Programs Microsoft SQL Server 2008 SQL Server Management Studio P štanda dnej nšta ác se ve a SQ Se ve 2008 v ope ačnom systéme W ndows sa tento nást oj nachádza v p eč nkuC \P og am F es\M c osoft SQ Se ve \100\Too s\B nn\VSShe \Common7\ DE\Ssms exe

Po spustení sa zob azí d a óg p e p pojen e sa k databázovému se ve u Ak obíme zoznamovac e pokusy s novým databázovým se ve om môžeme ako metódu p h ásen a použ ť W ndows Authent cat on

Prihlasovací dialóg a voľba pripojenia nástroja Management Studio 2008 na server

Ak nepoznáme názov databázového se ve a, môžeme k knúť na šípku vp avo v ko ónke p e zadan e názvu se ve a, (Se ve Name) a využ ť možnosť nechať s zob az ť zoznam dostupných databázových, ana yt ckých, epo tovacích a nteg ačných s už eb

Po zat ačení t ač d a Opt ons sa sp ístupní ozší ený mód p h asovac eho d a ógu so zá ožkam og n a Connect on P ope t es a Add t ona Connect on Pa amete s V zá ožke Connect on P ope t es sú pod obnejš e pa amet e p e p pojen e sa k databázovému se ve u Môžeme nastav ť typ s eťového p otoko u a časový m t p e p pojen e a časový m t p e vykonan e p íkazu

Záložka prihlasovacieho dialógu „Connection Properties“

Page 10: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 11: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

10 SQ Se ve 2008 p akt cký sp evodca nov nkam

Skô než začneme zadávať SQ dopyty do n ekto ej databázy, odpo účame u st ť sa, č je Management Stud o p epnuté na sp ávnu databázu P epnut e sa ea zuje buď pomocou combo boxu na ho nom pane nást ojov ap kác e, a ebo p íkazom

�������������� �

Nap ík ad

use AdventureWorksLT2008

P íkazy môžeme z učovať aj do dávok

use AdventureWorksLT2008GO

SELECT City, StateProvince, CustomerCount = count(*)FROM SalesLT.AddressGROUP BY City, StateProvinceHAVING count(*) > 1ORDER BY count(*) descGO

Výs edky dopytovan a je možné zob az ť vo fo me tabuľky a ebo textového výp su, p ípadne u ož ť do súbo u

V okne p e spúšťan e T SQ dopytov môžeme testovať n e en SQ p íkazy a e nap ík ad aj spúšťať u ožené p ocedú y P e tento úče s úž p íkaz EXEC Ukážeme p ík ad spusten a systémovej u oženej p ocedú y SPWHO, kto á vypíše nfo mác e o používateľoch a p ocesoch

EXEC sp_whoGO

U oženú p ocedú u môžeme vo ať aj s pa amet am Syntax pa amet ov p e p ocedú u SP WHO

sp who [[@ og n name ] og n ]

V konzo ovej ap kác vo áme p ocedú u s pa amet om v tva e

EXEC sp_who 'VISTAVIRTUAL_PC\VISTAVIRTUAL';

Tento az sa vypíšu en údaje p e konk étneho používateľa

Výpis parametrov a vlastnostíKonzo ová ap kác a SQ Se ve Management Stud o umožňuje aj výp s pa amet ov a to na ôznej ú ovn Pomocou k auzu y SERVERPROPERTY môžeme z sťovať n ekto é pa amet e databázového se ve a, nap ík ad

SELECT SERVERPROPERTY('ServerName')SELECT SERVERPROPERTY('Edition')SELECT SERVERPROPERTY('ProductVersion')SELECT SERVERPROPERTY('ProductLevel')

Se ve nám v át hodnoty požadovaných pa amet ov v tva e

VISTAVIRTUAL_PCEnterprise Evaluation Edition10.0.1600.22RTM

Pomocou k auzu y DATABASEPROPERTY môžeme z sťovať pa amet e konk étnej databázy, nap ík ad

Page 12: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 13: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

12 SQ Se ve 2008 p akt cký sp evodca nov nkam

Rozloženie vzťahu „viaceré k viacerým“ pomocou spojovacej tabuľky

Po um estneí tabu ek na p ochu sa automat cky zah nú e ačné väzby, kto é bo medz n m defi nované

Query Editor

Takto sme na pá k knutí nav h dotaz to t och e ačne zv azaných tabu ek

SELECT SalesLT.Customer.CustomerID, SalesLT.Customer.FirstName, SalesLT.Customer.LastName, SalesLT.Customer.EmailAddress, SalesLT.Address.CityFROM SalesLT.Customer INNER JOIN SalesLT.CustomerAddress ON SalesLT.Customer.CustomerID = SalesLT.CustomerAddress.CustomerID INNER JOIN SalesLT.Address ON SalesLT.CustomerAddress.AddressID = SalesLT.Address.AddressID

Môžeme s ho ove ť spustením

CustomerID FirstName LastName EmailAddress City----------- ----------------------------------------------------------------------29485 Catherine Abel [email protected] Van Nuys29486 Kim Abercrombie [email protected] Branch29489 Frances Adams [email protected] Modesto29490 Margaret Smith [email protected] Lewiston

Page 14: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 15: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

14 SQ Se ve 2008 p akt cký sp evodca nov nkam

Záložka Options pre nastavenie parametrov

Page 16: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 17: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

16 SQ Se ve 2008 p akt cký sp evodca nov nkam

SQ Se ve 2008 podpo uje symet cké a asymet cké š f ovac e kľúče a d g tá ne ce t fi káty H e a ch a kľúčov je názo ne ukázaná na ob ázku

Správa kľúčov

Akt vovaním č ty T anspa ent Data Enc ypt on š f ovan a na databáze bude zaš f ovaný údajový súbo aj t ansakčný og na d sku Nezaš f ované sú en údaje v cache pamäte T anspa ent Data Enc ypt on v p ncípe š f uje/deš f uje v eá nom čase d skové /O ope ác e P e ap kác e p stupujúce k údajom sa n č nemení, p ístup k údajom je adený „g antovaním“ p áv P e š f ovan e databázy s úž špec á ny kľúč „database enc ypt on key“ (DEK), kto ý je u ožený v „boot“ zázname databázy p e dostupnosť údajov aj počas „ ecove y“ DEK je ch ánený ce t fi kátom u oženým v „maste “ databáze Údaje sú š f ované použ tím a go tmov AES128, AES192, AES256 a ebo T p eDES („Defau t“ je AES128 )

Š f ovan e môžeme povo ť už p vytvá aní novej databázy nastavením pa amet a „Enc ypt on Enab ed“ na hodnotu „T ue“

Povolenie šifrovania v dialógu pre nastavovanie vlastností databázy

Page 18: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 19: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

18 SQ Se ve 2008 p akt cký sp evodca nov nkam

Vynútenie politiky cez Declarative Management FrameworkDec a at ve Management F amewo k je nový f amewo k, kto ý umožňuje cent a zovanú sp ávu nštanc í se ve a SQ Se ve 2008 v ob ast dod ž avan a po tík p e zvo enú systémovú konfi gu ác u Defi nované p av d á p at a p e jednot vé nštanc e a ebo objekty v nštanc ako sú databázy, tabuľky, pohľady, u ožené p ocedú y Mon to uje zmeny a dokáže zab án ť neauto zovaným zásahom dôs ednou kont o ou dod žovan a po tík p e požadovanú konfi gu ác u Dec a at ve Management F amewo k podstatne zn žuje nák ady na sp ávu, nakoľko zjednodušuje adm n st áto ské ú ohy Umožňuje exp c tnú a automat zovanú adm n st ác u Declarative Management Framework je popísaný podrobne vo štvrtej kapitole

Prediktívny systém optimalizácie výkonuPož adavky na výkon databázového se ve a ôzne ko íšu Sú ôzne p e ôzne odde en a a ôzne obdob a ka endá neho, a ebo častejš e fi šká neho oka Opt ma zác a výkonu p sta ších ve z ách bo a č nnosť značne časovo ná očná a keďže ju vykonávajú vysoko kva fi kovaní adm n st áto tak aj d ahá SQ Se ve 2008 obsahuje množ nu čŕt p e p ed ktívnu a šká ovateľnú opt ma zác u výkonu v átane cent á neho epoz tá a p e uk adan e opt ma zovaných údajov a epo tovacích a mon to ovacích nást ojov

Rozšírená správa udalostíSQ Se ve 2008 obsahuje č tu nazývanú „SQ Se ve Extended Events“ p e sp ávu uda ostí Tento mechan zmus zachytáva, fi t uje a t ed uda ost gene ované se ve ovým p ocesm To umožňuje ých u a efektívnu d agnost ku p ob émov za behu se ve a, mon to ovan e zásobníkov vo aní p ocedú

p ocedu á neho jazyka T SQ

Azda najčastejš e sa st etneme s novým č tam v databázovom jazyku SQ T eto nov nky je tot ž možné využívať v e ačných databázach, v dopytoch p e vytvo en e epo tov a podobne P eto p edstavíme najvýznamnejš e nov nky pod obnejš e

Page 20: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 21: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

20 SQ Se ve 2008 p akt cký sp evodca nov nkam

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valueREQUEST_MAX_CPU_TIME_SEC = valueMAX_DOP = valueGROUP_MAX_REQUESTS = value

Nás edne vytvo íme Resou ce poo

CREATE|ALTER|DROP RESOURCE POOL {pool_name | default}WITH ([MIN_CPU_PERCENT = value] [[,]MAX_CPU_PERCENT = value] [[,]MIN_MEMORY_PERCENT = value] [[,]MAX_MEMORY_PERCENT = value]) [;]

nap ík ad

CREATE RESOURCE POOL bigPoolGOALTER RESOURCE GOVERNOR RECONFIGUREGO

a záťaž

ALTER RESOURCE POOL „default“WITH ( MAX_CPU_PERCENT = 25)GOALTER RESOURCE GOVERNOR RECONFIGUREGO

Uved eme komp exnejší p ík ad

CREATE RESOURCE POOL poolLimitedWITH( MAX_CPU_PERCENT=30, MAX_MEMORY_PERCENT=50

CREATE WORKLOAD GROUP wrkgroupLimitedWITH( IMPORTANCE = MEDIUM , REQUEST_MAX_MEMORY_GRANT_PERCENT = 50, REQUEST_MAX_CPU_TIME_SEC = 300, REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 300, MAX_DOP = 8, GROUP_MAX_REQUESTS = 30

USING poolLimited;

P e získan e p ehľadu o p e ozde ení záťaže s úž a pohľady

sys dm esou ce gove no wo k oad g oupssys dm esou ce gove no esou ce poo ssys dm esou ce gove no confi gu at on

Page 22: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 23: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

22 SQ Se ve 2008 p akt cký sp evodca nov nkam

P e každú skup nu nastavíme pe centuá ne ozde en e záťaže Nap ík ad p e adm n st áto ov

BEGIN TRAN-- Create a new resource pool and set resource limits.CREATE RESOURCE POOL poolAdminWITH ( MIN_CPU_PERCENT = 10, MIN_MEMORY_PERCENT = 10, MAX_MEMORY_PERCENT = 10);ALTER WORKLOAD GROUP groupAdminUSING poolAdmin;COMMIT TRANGO-- Apply the changes to the Resource Governor in-memory confi guration.ALTER RESOURCE GOVERNOR RECONFIGUREGO

Page 24: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 25: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

24 SQ Se ve 2008 p akt cký sp evodca nov nkam

select [name], database_id, is_cdc_enabled from sys.databases

name database_id is_cdc_enabled------------------------------ ----------- --------------master 1 0tempdb 2 0model 3 0msdb 4 0ReportServer 5 0ReportServerTempDB 6 0AdventureWorksLT2008 7 0AdventureWorks2008 8 0Pokusy 9 0Test 10 0

CDC_databaza 11 1

V nást oj SQ Se ve Management Stud o sa môžeme p esvedč ť, že zavo aním u oženej p ocedú y p e akt vác u CDC p budo do zoznamu používateľov v p eč nku „Secu ty“ nový používateľ CDC a v zá ožke „Schemas“ ovnomenná schéma

Do zoznamu používateľov v priečinku „Security“ pribudol nový používateľ CDC a v záložke „Schemas“ rovnomenná schéma

P e fungovan e CDC je pot ebné spust ť s užbu SQ Se ve Agent V mp c tnej nšta ác je tot ž zastavená s p íznakom, že sa spúšťa učne Môžeme ju spust ť nap ík ad p ost edníctvom nást oja Sq Se ve Confi gu at on Manage

Spustenie služby SQL Server Agent

Page 26: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 27: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

26 SQ Se ve 2008 p akt cký sp evodca nov nkam

select [name], is_tracked_by_cdc from sys.tables

name is_tracked_by_cdc-------------------- -----------------ddl_history 0lsn_time_mapping 0captured_columns 0index_columns 0zamestnanci 1dbo_zamestnanci_CT 0systranschemas 0change_tables 0

Do tabuľky p dáme n ekoľko záznamov

INSERT INTO dbo.zamestnanci VALUES (1, 'Mickey Mouse','[email protected]');INSERT INTO dbo.zamestnanci VALUES (2, 'Donald Duck','[email protected]');INSERT INTO dbo.zamestnanci VALUES (3, 'Snehurka','[email protected]');

Najskô s vypíšeme obsah tabuľky v kto ej sme vykonáva zmeny, č že tabuľku zamestnancov, do kto ej sme p da t záznamy

SELECT * FROM dbo.zamestnanci

ID meno email----------- ------------------------------ ------------------------------1 Mickey Mouse [email protected] Donald Duck [email protected] Snehurka [email protected]

Vypíšeme obsah tabuľky p e zachytávan e zm en

SELECT * FROM cdc.dbo_zamestnanci_CT;

Výp s je z dôvodu t ače ozde ený na dve čast

__$start_lsn __$end_lsn __$seqval ---------------------- ------------- ---------------------- 0x0000001C000000480013 NULL 0x0000001C000000480012 0x0000001C0000004C0003 NULL 0x0000001C0000004C0002 0x0000001C0000004D0003 NULL 0x0000001C0000004D0002

__$operation __$update_mask ID meno email------------ ---------------- ---- --------------- --------------------2 0x07 1 Mickey Mouse [email protected] 0x07 2 Donald Duck [email protected] 0x07 3 Snehurka [email protected]

Page 28: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 29: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

28 SQ Se ve 2008 p akt cký sp evodca nov nkam

Kapitola 6: Vynútenie dodržiavania politík cez Declarative Management Framework

Dec a at ve Management F amewo k je nový f amewo k, kto ý umožňuje cent a zovanú sp ávu nštanc í SQ Se ve u 2008 v ob ast dod ž avan a po tík p e zvo enú systémovú konfi gu ác u Defi nované p av d á p at a p e jednot vé nštanc e a ebo objekty v nštanc ako sú databázy, tabuľky, pohľady, u ožené p ocedú y Mon to uje zmeny a dokáže zab án ť neauto zovaným zásahom dôs ednou kont o ou dod žovan a po tík p e požadovanú konfi gu ác u Dec a at ve Management F amewo k podstatne zn žuje nák ady na sp ávu, nakoľko zjednodušuje adm n st áto ské ú ohy Umožňuje exp c tnú a automat zovanú adm n st ác u

Môžeme nap ík ad defi novať po t ku p e názvy objektov N ekedy to vývojá ov občas zvádza k používan u k átkych často jednopísmenových názvov p emenných a at bútov, nap ík ad A, B1

Z dôvodu p ehľadnost kódu n e je p í š vhodný an d uhý ext ém ozs ah e a vyče pávajúce názvy nap ík ad Tabu ka nte va u o ejovan a os k uky sp naca vytahoveho stykaca

Veľm dob ý a p ehľadný je spôsob označovan a p emenných nazývaný Maďa ská notác a (zav edo ju jeden p og amáto M c osoftu maďa ského pôvodu), kde ok em jedno, p ípadne dvojs ovného názvu objektu a ebo p emennej, naznačíme pomocou p vého písmena, p ípadne p vých t och písmen aj typ objektu a ebo j dátový typ at bútu a ebo p emennej Aby sme ukáza ako to funguje, defi nujeme podm enku, že názvy všetkých novovytvá aných tabu ek sa mus a začínať p efi xom „tb “ Potom nebudeme môcť vytvo ť tabuľku „zamestnanc “ a e v zmys e defi novanej po t ky en „tb Zamestnanc “

P e p akt cký p ík ad použ t a spustíme nást oj SQ Se ve Management Stud o a p pojíme sa k databázovému se ve u V okne „Object Exp o e “ ozv n eme postupne po ožky „Management“, “Po cy Management“ a „Facets“, P avým t ač d om myš k kneme na „Tab e“ nás edne na po ožku „New Cond t on“ Podm enku vhodne pomenujeme a zo zoznamu vybe eme typ objektu kto ého sa podm enka bude týkať Nás edne v okne „Exp ess o n“ Zostavíme podm enku nap ík ad s názvom „Tabu ka začína tb “ Podm enku bude tvo ť vý az

@Name LIKE 'tbl%'

Nová podmienka

Page 30: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 31: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

30 SQ Se ve 2008 p akt cký sp evodca nov nkam

Vytvo me novú tabuľku v databáze „Pokusy“

CREATE TABLE Zamestnanci( ID int NOT NULL, meno nvarchar(30), email nvarchar(30))

Ak je ešt kčná po t ka zapnutá, v takom p ípade sa nám to nepoda í, se ve vyh ás chybu po ušen e po t ky

Policy 'Table Naming Conventions' has been violated by '/Server/(local)/Database/pokusy/Table/dbo.zamestnanci'.This transaction will be rolled back.Policy description: ''Additional help: '': ''.Msg 3609, Level 16, State 1, Procedure sp_syspolicy_dispatch_event, Line 50The transaction ended in the trigger. The batch has been aborted.

P íkaz, kto ý je v sú ade s po t kou p ebehne úspešne

CREATE TABLE tblZamestnanci( ID int NOT NULL, meno nvarchar(30), email nvarchar(30))

Vop ed nastavené po t ky môžeme podľa pot eby zapnúť a vypnúť v kontextovom menu

Jednotlivé nastavené politiky môžeme podľa potreby zapnúť a vypnúť

Page 32: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 33: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

32 SQ Se ve 2008 p akt cký sp evodca nov nkam

SELECT name, length FROM sys.systypes WHERE name LIKE '%date%' OR name LIKE '%time%'

name length

-------------------------------- ------date 3time 5datetime2 8datetimeoffset 10smalldatetime 4datetime 8timestamp 8

(7 row(s) affected)

P e demonšt ác u použ t a týchto údajových typov vytvo íme novú cv čnú tabuľku, kde p e nové typy p e uk adan e hodnôt dátumu a času vytvo íme jeden at bút

CREATE TABLE datove_typy ( d1 DATE, d2 TIME(3), d3 DATETIME2(7) NOT NULL DEFAULT GETDATE(), d4 DATETIMEOFFSET CHECK (d4 < CAST(GETDATE() AS DATETIMEOFFSET(0))));

Aby sme ukáza , ako sa s jednot vým údajovým typm p acuje u ožíme do cv čnej tabuľky nejaké údaje, p e zaujímavosť u ožíme m tné hodnoty, teda m n má ny a max má ny dátumový a časový údaj

INSERT INTO datove_typy VALUES ('0001-01-01', '23:59:59', '0001-12-21 23:59:59.1234567', '0001-10-21 23:59:59.1234567 -07:00');

INSERT INTO datove_typy VALUES ('9999-12-31', '23:59:59', '9999-12-31 23:59:59.1234567', '1111-10-21 23:59:59.1234567 -07:00');

V pos ednom k oku sa pokús me t eto údaje vypísať

SELECT d4, DATEPART(TZOFFSET, d4), DATEPART(ISO_WEEK, d4), DATEPART(MICROSECOND, d4) FROM datove_typy;

d4 ---------------------------------- ----------- ----------- -----------0001-10-21 23:59:59.1234567 -07:00 -420 42 1234561111-10-21 23:59:59.1234567 -07:00 -420 42 123456

VISTAVYVOJ-PC(VistaVyvoj-PC\VistaVyvoj): (2 row(s) affected)

Page 34: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 35: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

34 SQ Se ve 2008 p akt cký sp evodca nov nkam

create table tbl_timezones ( id int identity(1,1), cas datetimeoffset)

insert into tbl_timezones (cas) values ('1998–09–20 7:45:50.71345 -5:00')insert into tbl_timezones (cas) values ('1956–01–27 6:45:50.00000 -3:00')insert into tbl_timezones (cas) values ('1972–12–18 7:45:50.71345 +1:00')insert into tbl_timezones (cas) values ('2005–01–20 7:12:50.71345 +9:00')insert into tbl_timezones (cas) values ('2005–01–20 01:00:00.00000 +4:00')

p e výp s časového posunut a využ jeme funkc u DATEPART, kto ej ú ohou je vypísať časť dátumu a času Jej syntax je

DATEPART(časť dátumu, dátum)

Funkc a v át číse nú hodnotu čast dátumu, zadanú p vým pa amet om, p e dátum zadaný d uhým pa amet om Nap ík ad, z stíme aktuá ny mes ac

SE ECT DATEPART(month, GETDATE()) FROM test; [2]

V našom p ípade vytvo íme dopyt p e výpočet offsetu Najskô z stíme oká ny ofset (v m nútach) p e aktuá ne časové pásmo voč GMT

select datepart(TZoffset,sysdatetimeoffset())

60

Naše posunut e voč GMT je 60 m nút teda GMT 1 hod na Vypíšme nam zadané časy tak, aby sme vede aký bo v tom okam hu čas v našom časovom pásme V ľavom stĺpc je čas v jeho v astnej časovej zóne, v p avom stĺpc čas v našom časovom pásme GMT 1

SELECT cas, SWITCHOFFSET (cas, datepart(TZoffset,sysdatetimeoffset())) AS TimeinCurrentTimezoneFROM tbl_timezones

as TimeinCurrentTimezone---------------------------------- ----------------------------------20. 9. 1998 7:45:50 -05:00 20. 9. 1998 13:45:50 +01:0027. 1. 1956 6:45:50 -03:00 27. 1. 1956 10:45:50 +01:0018. 12. 1972 7:45:50 +01:00 18. 12. 1972 7:45:50 +01:0020. 1. 2005 7:12:50 +09:00 19. 1. 2005 23:12:50 +01:0020. 1. 2005 1:00:00 +04:00 19. 1. 2005 22:00:00 +01:00

(5 row(s) affected)

Page 36: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 37: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

36 SQ Se ve 2008 p akt cký sp evodca nov nkam

Používateľom defi novaný údajový typ TABLE v nástroji Management Studio

Vytvo íme u oženú p ocedú u p e p dávan e záznamov s využ tím údajového typu TAB E

CREATE PROCEDURE MultiZadavanie2(@zamestnanec ZamestnanciTabTyp READONLY)ASBEGININSERT INTO dbo.zamestnanciSELECT * FROM @zamestnanecEND

Vytvo íme dočasnú p emennú nam defi novaného tabuľkového údajového typu TAB E, nap níme ju údajm a pomocou u oženej p ocedú y u ožíme jej obsah do databázovej tabuľky zamestnanc

DECLARE @zamestnanci ZamestnanciTabTyp

INSERT INTO @zamestnanciVALUES (1, 'Mickey Mouse','[email protected]')

INSERT INTO @zamestnanciVALUES (2, 'Donald Duck','[email protected]')

INSERT INTO @zamestnanciVALUES (3, 'Snehurka','[email protected]')

EXECUTE MultiZadavanie2 @zamestnanci

Ak po ovnáme ob dve metódy, v díme, že v d uhom p ípade sa u ožená p ocedú a vo a a nam esto t k át en az Takt ež v p ípade zmeny št uktú y tabuľkových údajov, n e je nutné ekomp ovať u oženú p ocedú u Tento spôsob je výhodnejší, jednoduchší a ých ejší aj v p ípade ak p og amujeme vyšš u v stvu v NET jazyku v ap kác V sua Stud o Tento údajový typ je p ne podpo ovaný aj v ADO NET 3 0

Page 38: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 39: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

38 SQ Se ve 2008 p akt cký sp evodca nov nkam

Kapitola 9: Údajový typ FILESTREAM

Z g afu názo ne v d eť, že v ac než 93 % nfo mác í bo o získaných a u ožených v d g tá nej podobe v pos edných okoch P evažná väčš na z n ch je u ožených v netextovej, teda p evažne mu t med á nej podobe ako d g tá ne fotog afi e, zvukové a ob azové záznamy en 0,003 % z nfo mác í je u ožených v textovom (n e hype textovom) fo máte Ďa šou nemenej zaujímavou skutočnosťou je, že p b žne 30 % zo zh omaždených údajov sú momentá ne u ožené na d skoch bežných PC so všetkým výhodam , a e h avne nevýhodam , kto é sú s tým spojené Všetc s ž vo v ete p edstav ť tú ob ovskú dup c tu údajov, m n má nu bezpečnosť, a na d uhej st ane z ož té vyhľadávan e a komp kovaný p ístup k nfo mác ám Ďa ších 30 % údajov je u ožených na d g tá nych nos čoch (CD, DVD ) a en p b žne 15 až 30 % údajov je bezpečne u ožených na se ve och v databázach Čo az popu á nejší sa stáva fo mát XM a to n e en p e výmenu údajov, a e aj p e ch u ožen e Jeho masívny nástup zača s ozvojom webových s už eb

Objemy údajov skladovaných a spravovaných v databázach a súboroch rastú geometrickým radom

Nový údajový typ F est eam podpo uje u ožen e veľkých b ná nych objektov do NTFS fi esystému, zat aľ čo t eto objekty zostávajú nede teľnou súčasťou databázy

Ukladanie údajov v databázach, súboroch a integrácia databázy a súborového systému

P ed p vým použ tím je pot ebné povo ť používan e údajového typu F ESTREAM na ú ovn databázového eng ne Môžeme to u ob ť v zá ožke „Advanced“ databázového se ve a

Page 40: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 41: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

40 SQ Se ve 2008 p akt cký sp evodca nov nkam

FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM ( NAME = FileStreamDBResumes, FILENAME = N'C:\udaje\Resumes')LOG ON ( NAME = 'FileStreamDB_log', FILENAME = N'C:\udaje\FileStreamDB_log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB);GO

Po úspešnom vytvo ení databázy sa môžeme poz eť do p eč nka UDAJE, č v ňom vzn k p ís ušné súbo y a podp eč nok RESUMES

Súbory v priečinku databázy využívajúcej údajový typ FILESTREAM

Pa amet e novovytvo enej databázy s môžeme poz eť aj v nást oj SQ Se ve Management Stud o

V nam vytvo enej databáze kto á bude využívať F ESTREAM, vytvo íme jednoduchú databázovú tabuľku

USE FileStreamDB;GO

CREATE TABLE dbo.katalog(katalog_id UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE, nazov varchar(25), Resume varbinary(max) FILESTREAM);GO

Ak v ožíme záznam s hodnotu at butú Resume NU , nebude p e tento záznam vytvo ený ž adny súbo

INSERT INTO dbo.katalog VALUES (newid (), 'prazdny', NULL);

Page 42: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 43: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

42 SQ Se ve 2008 p akt cký sp evodca nov nkam

Ap kačné ozh an e p e F ESTREAM

// New TSQL Function: Get_fi lestream_transaction_context() SqlTransaction Tran = sqlConn.BeginTransaction(); SqlCommand cmd = new SqlCommand(SELECT Get_fi lestream_transaction_context(),conn); cmd.Transaction = Tran; byte[] txCxt = (byte[]) cmd.ExecuteScalar();

// New TSQL Function: PathName() SqlCommand cmd = new SqlCommand(SELECT Resume.PathName() FROM Demo_DB..student“, conn); string path = (string) cmd.ExecuteScalar();

// New SQL Native Client Function: OpenSqlFilestream()HANDLE hImage = OpenSqlFilestream(path,..., txCxt); WriteFile(hImage,...);

// All triggers will be fi red upon closing the handleCloseHandle(hImage);

Page 44: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 45: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

44 SQ Se ve 2008 p akt cký sp evodca nov nkam

Pomocou p íkazu MERGE zosynch on zujeme c eľovú tabuľku so zd ojovou

MERGE ciel AS c USING zdroj as z ON c.id = z.id WHEN MATCHED AND (c.meno != z.meno OR c.skore_hry!= z.skore_hry) THEN -- Ak riadok existuje no obsahuje rozdielne udaje UPDATE SET c.meno = z.meno, c.skore_hry = z.skore_hry WHEN NOT MATCHED THEN -- Ak riadok existuje len v zdrojovej tabulke INSERT VALUES (z.id, z.meno, z.skore_hry) WHEN NOT MATCHED BY SOURCE THEN -- Ak riadok existuje len v cielovej tabulke vymažeme ho DELETE OUTPUT $action, inserted.id, deleted.id;

V pos ednom adku p íkazu sme necha vypísať D v ožených a vymazaných záznamov

$action id id---------- ----------- -----------UPDATE 1 1UPDATE 2 2

Po vykonaní p íkazu MERGE naše cv čné tabuľky obsahujú údaje

zd oj

id meno skore_hry----------- -------------------- -----------1 Peter 1002 Ignac 200cieľ

id meno skore_hry----------- -------------------- -----------1 Peter 1002 Ignac 200

Page 46: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 47: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

46 SQ Se ve 2008 p akt cký sp evodca nov nkam

INSERT INTO tblZakaznici VALUES(1, 'Omigaj a syn s.r.o', 365000);

INSERT INTO tblZakaznici VALUES(2, 'Postavil & Rozboril', 2000000);

INSERT INTO tblZakaznici VALUES(3, 'Prva distribucna a.s', 1565000);

Te az môžeme vypísať údaje vo fo máte XM

SELECT * FROM tblZakaznici FOR XML AUTO

<zakaznici id_zak=“1“ nazov=“Omigaj a syn s.r.o“ obrat=“365000.0000“/><zakaznici id_zak=“2“ nazov=“Postavil & Rozboril“ obrat=“2000000.0000“/><zakaznici id_zak=“3“ nazov=“Prva distribucna a.s“ obrat=“1565000.0000“/>

Takto sa vypíše obsah v textovom móde Ak p epneme konzo u do tabuľkového výstupu, zob azí sa p epojen e na XM dokument

Výpis XML dokumentu ako prepojenia

K knutím na p epojen e otvo íme dokument v novej zá ožke

Obsah XML dokumentu v novej záložke

Ukážeme aj p ík ad využ t a OPENXM

Page 48: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 49: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

48 SQ Se ve 2008 p akt cký sp evodca nov nkam

P e p vé pokusy s údajovým typom XM s vytvo íme p e tento údajový typ p emennú

DECLARE @premenna xmlSET @premenna='<A></A><B>bbb</B>'SELECT @premenna AS premennaSELECT CONVERT(nvarchar(1000),@premenna) AS premenna_ako_retazec

Vš mn te s , že ep ezentác a p ázdneho tagu je od šná od vstupného eťazca

premenna------------------------<A /><B>bbb</B>

premenna_ako_retazec------------------------<A/><B>bbb</B>

Môžeme sa pokús ť databázovému se ve u podv hnúť aj non we fo matted XM dokument, kde poč atočný a koncový e ement n e sú ovnaké

DECLARE @premenna xmlSET @premenna='<A></AB>'

no skončí to samoz ejme nezda om

Msg 9436, Level 16, State 1, Line 2XML parsing: line 1, character 8, end tag does not match start tag

P e demonšt ác u zák adných možností p áce s XM dokumentm a natívnym XM údajovým typom vytvo íme jednoduchú cv čnú tabuľku, kto á obsahuje dva stĺpce V jednom je D záznamu ako údajový typ ntege , d uhý stĺpec bude obsahovať natívny XM údajový typ

CREATE TABLE tblXml_tabulka ( id INT, xml_stlpec XML)

Do takto nav hnutej tabuľky v ožme jeden záznam Vš mn te s , že do údajového typu XM vk adáme textový eťazec Je to v po adku, však XM dokument je dokument textovej povahy V p ebehu vk adan a p ebehne

va dác a a auto konve z a textového eťazca na XM dokument

INSERT INTO tblXml_tabulka VALUES(1, '<doc/>')

Ak textový eťazec neobsahuje p atný XM dokument (tagy X1 a X2 sú vo vnút dokumentu navzájom p ehodené), autokonve z a nep ebehne a p íkaz na vk adan e záznamov skončí chybovým h ásením

INSERT INTO tblXml_tabulka VALUES(2, '<doc><x1><x2></x1></x2></doc>')

Msg 9436, Level 16, State 1, Line 1XML parsing: line 1, character 18, end tag does not match start tag

XM stĺpec môže obsahovať ba „we fo med“ XM podľa špec fi kác e XM 1 0 Môže obsahovať dokumenty a ebo ch čast

P výp se pomocou p íkazu SE ECT sa výs edok zob azí v tva e

Page 50: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 51: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

50 SQ Se ve 2008 p akt cký sp evodca nov nkam

CREATE XML SCHEMA COLLECTION ObsahObjednavkySchema AS'<?xml version=“1.0“ encoding=“UTF-16“?><xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“>

<!-- deklaracia schémy -->

</xs:schema>'

Te az môžeme vytvo ť tabuľku s XM datatypom a p adenou schémou

CREATE TABLE tblObjednavky( id integer PRIMARY KEY, datum datetime, ZakaznikID integer, ObsahObjednavky xml(ObsahObjednavkySchema))

XM funkc ona ta bo a významne ozší ená vo ve z 2008, h avne v ob ast možnost va dác e XM dokumentu podľa schémy najmä o podpo u va dác e dátumu a času, bo a ozší ená podpo a XQue y a možnost vk adan a XM dokumentov do databázových tabu ek

Va dác a podľa XM schémy dokáže p acovať s takzvaným žo íkm (w dca ds)n pomocou dek a ác e any, anyAttribute a anyType

<xs:complexType name=“Order“ mixed=“true“> <xs:sequence> <xs:element name=“CustomerName“/> <xs:element name=“OrderTotal“/> <xs:any namespace=“##other“ processContents=“skip“ minOccurs=“0“ maxOccurs=“unbounded“/> </xs:sequence></xs:complexType>

Podľa takejto schémy môžeme va dovať aj XM dokumenty, kto é obsahujú aj né at búty ako Custome Name a O de Tota V našom p ík ade p budo at bút shp De ve y

<Invoice xmlns=“http://adventure-works.com/order“ xmlns:shp=“http://adventure-works.com/shipping“> <Order> <CustomerName>Graeme Malcolm</CustomerName> <OrderTotal>299.99</OrderTotal> <shp:Delivery>Express</shp:Delivery> </Order></Invoice>

Page 52: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 53: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

52 SQ Se ve 2008 p akt cký sp evodca nov nkam

Aj v takomto p ípade môžeme dek a ovať p ípustné hodnoty p e jedného odbe ateľa veľkost ob ečen a a p e ného veľkost b cyk ových ámov

<Catalog> <Product> <ProductName>Road Bike</ProductName> <AvailableSizes>22 24</AvailableSizes> </Product> <Product> <ProductName>Cycling Jersey</ProductName> <AvailableSizes>S M L</AvailableSizes> </Product></Catalog>

Nad XM stĺpcam môžeme vytvo ť špec á ne XM ndexy, kto é opt ma zujú XM pož adavky nad p ís ušným stĺpcom Tabuľka a ebo pohľad, v kto ej ndexujeme XM údajový typ musí mať p má ny kľúč typu „c uste ed“ Najskô musí byť vytvo ený p má ny XM ndex Kompoz tný XM ndex n e je podpo ovaný

CREATE TABLE xml_tab ( id integer primary key, doc xml)GOCREATE PRIMARY XML INDEX xml_idx on xml_tab (doc)GO

SQ Se ve 2005 podpo uje 3 špec a zované typy XM ndexov VA UE, PATH a PROPERTY

XQueryK as cký databázový jazyk SQ n e je p e dopytovan e vo vnút XM údajových typov p í š vhodný P e tento úče je v SQ Se ve 2005 mp ementovaný jazyk XQue y Jeho zák adom sú metódy XM typu

xm ex st xm va ue xm que y xm mod fy xm nodes

spo u v komb nác s F OWR p íkazm a konšt ukc am F OWR je ak onym od h avných kľúčových s ov XQu ey vý azov FOR, ET, WHERE, ORDER BY a RETURN Ak sa t eto XQue y metódy použ jú s SQ p íkazom SE ECT môžu v acať stĺpce v „ owset och“

F OWR p íkazy

P íkaz Pop s

Fo Iteruje cez „súrodenecké“ uzly.

Whe e Filtrovacie kritérium pre iteráciu.

Retu n Špecifi kuje návratové XML.

Page 54: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 55: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

54 SQ Se ve 2008 p akt cký sp evodca nov nkam

Metóda xml.value nám v át , hodnotu p ís ušného p vku P vok je u čený ndexm v h anatých zátvo kách

Pomocou metódy xml.nodes vybe áme p ís ušné uz y Môžeme použ ť k auzu u CROSS APP Y a ebo OUTER APP Y V p vom p ípade použ jeme k auzu u CROSS APP Y Zob az a sa en záznamy obsahujúce dokumenty s jedným e ementom Ak použ jeme k auzu u OUTER APP Y, zob az a sa všetky e ementy

SQ Se ve 2008 podpo uje k auzu u let p e p aden e hodnôt do p emenných Ukážeme to na p ík ade

declare @x xmlset @x='<Faktury><Faktura> <Zakaznik>Jan Novak</Zakaznik> <Polozky> <Polozka ProdID=“2“ Cena=“1.99“ Kusy=“1“ /> <Polozka ProdID=“3“ Cena=“2.99“ Kusy=“2“ /> <Polozka ProdID=“5“ Cena=“1.99“ Kusy=“1“ /> </Polozky></Faktura> <Faktura> <Zakaznik>Zuzana Kratka</Zakaznik> <Polozky> <Polozka ProdID=“2“ Cena=“1.99“ Kusy=“1“/> </Polozky> </Faktura></Faktury>'SELECT @x.query('<Objednavky>{for $faktura in /Faktury/Fakturalet $count:=count($faktura/Polozky/Polozka)order by $countreturn<Objednavka>{$faktura/Zakaznik}<Pocet>{$count}</Pocet></Objednavka>}</Objednavky>')

Výs edkom je XM dokument

Objednavky> <Objednavka> <Zakaznik>Zuzana Kratka</Zakaznik> <Pocet>1</Pocet> </Objednavka> <Objednavka> <Zakaznik>Jan Novak</Zakaznik> <Pocet>3</Pocet> </Objednavka></Objednavky>

Page 56: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 57: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

56 SQ Se ve 2008 p akt cký sp evodca nov nkam

Premietnutie „guľových“ zemepisných súradníc do planárneho systému

P e ešen e „spat a “ ú oh pot ebujeme vytvo ť vhodnú nštanc u geomet e P acuje sa s jednoduchým geomet ckým útva m a ob azcam ako sú bod, p amka, eťazec p amok a po ygón, teda ob asť geomet cky ep ezentovaná ako ľubovoľný mnohouho ník

Spatial Geometry

Najskô ukážeme defi novan e zák adných objektov

Po ntdeclare @g geometryset @g = geometry::Parse('POINT(5.5 8.8)')

neSt ngDECLARE @g geometry;SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);

Po ygonDECLARE @g geometry;SET @g = geometry::STPolyFromText('POLYGON((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1))', 10);

Geomet yCo ect onDECLARE @g geometry;SET @g = geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);

P e najjednoduchš e „spat a “ ú ohy nad údajm v databázových tabuľkách je pot ebné vytvo ť databázovú tabuľku s dvom at bútm , dent fi káto om a údajovým typom „geomet y“ P eá nych ú ohách použ jeme aj ďa š e at búty, ako sú názvy objektov, ceny a podobne Ukážeme p ík ady p e geomet cké aj geog afi cké údaje

Page 58: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 59: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

58 SQ Se ve 2008 p akt cký sp evodca nov nkam

Spatial indexyP e efektívne ešen e z ož tejších ú oh je pot ebné údaje v databázových tabuľkách ndexovať Spat a ndexy využívajú v acú ovňový tabuľkový systém s ôznou veľkosťou m ežky, p čom každé po e m ežky je možné ozde ť na menš e po íčka s oz íšením OW 4x4, MED UM 8x8 a ebo H GH 16x16 Takýto systém umožňuje

oveľa vyšš u fl ex b tu ako jednoduchá m ežka P ík ad ndexovan a m ežky je na ob ázku

Princíp indexovania geografi ckých údajov

Spat a ndex vytvo íme pomocou p íkazu

CREATE SPATIAL INDEX sixdON Tspatial(region)WITH ( BOUNDING_BOX = (0, 0, 500, 500), GRIDS = (LOW, LOW, MEDIUM, HIGH), CELLS_PER_OBJECT = 20)

Ďa ší ob ázok ukazuje p ncíp ozde en a mu t eve m ežky na menš e ob ast a p ík ad ad esovan a poľa

Multi-level grid

Techno óg u Spat a naj epš e pochopíme na n ekoľkých názo ných p ík adoch

Page 60: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 61: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

60 SQ Se ve 2008 p akt cký sp evodca nov nkam

Plocha B je obdĺžn k Podobne ako štvo ec ho môžeme jednoznačne popísať sú adn cam jeho v cho ov

INSERT INTO PlochyVALUES (2, geometry::STGeomFromText('POLYGON ((5 2, 10 2, 10 5, 5 5, 5 2))', 0));

V tomto okam hu teda máme v tabuľke p ochy u oženú našu schému pozostávajúcu z dvoch ob azcov Nad tým to údajm môžeme eš ť mnoho jednoduchých aj pome ne z ož tých typov ú oh, kto é nap ík ad poznáme zo ško skej geomet e

Môžeme nap ík ad z st ť, č ex stuje p en k dvoch zadaných p ôch A a B, kto é podľa ob ázka oč v dne p en k obsahujú P e tento úče využ jeme ope ác u STIntersection

DECLARE @geom1 geometry;DECLARE @geom2 geometry;DECLARE @result geometry;

SELECT @geom1 = plocha FROM Plochy WHERE id = 1;SELECT @geom2 = plocha FROM Plochy WHERE id = 2;SELECT @result = @geom1.STIntersection(@geom2);SELECT @result.STAsText();

Výs edkom (p en kom) je po ygón so sú adn cam

POLYGON ((5 2, 8 2, 8 5, 5 5, 5 2))

Ako p en k sme získa pop s geomet e ob azca (5,5, 5,2, 8,2, 8,5, 5,5)

Môžeme vypočítať p ochu tohto p en ku pomocou metódy STA ea

DECLARE @g geometry;SET @g = geometry::STGeomFromText('POLYGON((5 2, 8 2, 8 5, 5 5, 5 2))', 0);SELECT @g.STArea();

9

Podobne ako p en k môžeme eš ť zjednoten e, teda ce kovú p ochu, kto ú p edstavujú dve v našom p ípade p ek ývajúce sa p ochy A a B P e tento úče využ jeme ope ác u STUnion

DECLARE @geom1 geometry;DECLARE @geom2 geometry;DECLARE @result geometry;

SELECT @geom1 = plocha FROM Plochy WHERE id = 1;SELECT @geom2 = plocha FROM Plochy WHERE id = 2;SELECT @result = @geom1.STUnion(@geom2);SELECT @result.STAsText();

Výs edkom je po ygón so sú adn cam

POLYGON ((1 1, 8 1, 8 2, 10 2, 10 5, 8 5, 8 8, 1 8, 1 1))

Page 62: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 63: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

62 SQ Se ve 2008 p akt cký sp evodca nov nkam

CREATE TABLE Pobocky ( id int PRIMARY KEY, mesto varchar(20), suradnice geography );

INSERT INTO PobockyVALUES (1, 'Praha', geography::STGeomFromText('POINT(14.41935 50.09193)', 4326));

INSERT INTO PobockyVALUES (2, 'Benatky', geography::STGeomFromText('POINT(12.28389 45.45233)', 4326));

P čom sú adn ce 14.41935 50.09193 v p vom zázname u čujú zemep snú dĺžku a ší ku P ahy Pozo nosť s zas úž vysvet en e významu pa amet a SR D, kto ý udáva d uh zemep sných sú adníc Konštanta 4326 je p e systém zemep sných sú adníc WGS 84, teda bežne používaný a zo ško ských at asov dob e známy systém uh ových m e zemep sných dĺžok a ší ok Po vytvo ení a nap není cv čných tabu ek a p íp avných úkonoch, môžeme začať eš ť geog afi cké ú ohy Ako p vú ú ohu z stíme vzd a enost poboč ek od sk adov

SELECT P.mesto AS 'Pobocka', S.mesto AS 'Sklad', P.suradnice.STDistance(S.suradnice)FROM Sklady S, Pobocky P

S Pobocka Sklad -------------------- -------------------- ----------------------Praha Rim 906148,58340179Praha Mnichov 377360,123348305Benatky Rim 380404,107941765Benatky Mnichov 312783,529829918

Vzd a enost vo výs ednej tabuľke sú v met och V d uhej ú ohe budeme z sťovať, z kto ého sk adu je najvýhodnejš e zásobovať kto ého zákazníka ntu tívne by sme odpoveda , že zákazníka z Benátok budeme zásobovať z Ríma a zákazníka z P ahy z Mníchovského sk adu Ak sa však poz eme na mapu, z stíme, že do Benátok je b žš e z Mníchova než z Ríma

SELECT S.mesto AS 'Sklad', P.suradnice.STDistance(S.suradnice)FROM Sklady S, Pobocky PWHERE P.mesto = 'Benatky'AND P.suradnice.STDistance(S.suradnice) = (SELECT MIN(P1.suradnice.STDistance(S1.suradnice)) FROM Sklady S1, Pobocky P1)

Sklad -------------------- ----------------------Mnichov 312783,529829918

Príklad určovania príslušnosti k lokalite

Častým ok uhom ú oh je u čovan e p ís ušnost geomet ckého, a ebo geog afi ckého objektu do nejakej ob ast Typ ckým p ík adom je ú oha u č ť do kto ej mestskej čast pat í zadaná u ca P e túto ú ohu vytvo íme a nap níme dve tabuľky V jednej budú údaje o mestských čast ach fi ktívneho mesta a v d uhej údaje o u c ach P e jednoduchosť budeme ú ohu eš ť v geomet ckých sú adn c ach na neá nom p áne mesta Mestské čast budú oh an čené po ygónom a u ce budú tvo ené ako postupnosť vekto ov, teda NESTR NG

Page 64: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com
Page 65: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com

64 SQ Se ve 2008 p akt cký sp evodca nov nkam

Príloha: Inštalácia cvičných databáz

Cv čné databázy Adventu eWo ks2008 a Adventu eWo ks2008 DW B môžeme st ahnuť na ad esehttp // www codep ex com nšta ačné p og amy jednot vých ve z í cv čnej databázy Adventu eWo ks2008 majú p b žne 50 MB a umožnujú jej na nšta ovan e na oká ny se ve Po spustení nšta ačného p og amu sa vytvo í ad esá

c \P og am F es\M c osoft SQ Se ve \100\Too s\Samp es\

V tomto ad esá je cv čná databáza u ožená vo fo me zá ožného súbo u s p íponou BAK Sk pt p e obnovu tejto databázy je v súbo e Resto eAdventu eWo ks2008xx sqTento sk pt spustíme pomocou nást oja SQ Se ve Management Stud o Sk pt obsahuje v komentá p ame nastaven e ad esá a, v kto om sa nachádza súbo zá ohy Aby sme sa vyh p ob émom s p deľovaním p ístupových p áv do podad esá ov ad esá a c \P og am F es, p ekopí ova sme súbo zá ohy do novovytvo eného ad esá a c \ nsta , kto ý má štanda dné p ístupové p áva

USE master;DECLARE @source_path nvarchar(256);SET @source_path = 'c:\Install\'BEGIN DECLARE @sql_path nvarchar(256); SELECT @sql_path = SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_fi les WHERE database_id = 1 AND fi le_id = 1; IF EXISTS (SELECT * FROM sys.databases WHERE name = 'AdventureWorksLT2008') BEGIN EXECUTE (N'ALTER DATABASE AdventureWorksLT2008 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;'); EXECUTE (N'DROP DATABASE AdventureWorksLT2008;'); END EXECUTE (N'RESTORE DATABASE AdventureWorksLT2008 FROM DISK = ''' + @source_path + 'Tools\Samples\AdventureWorksLT2008.bak'' WITH MOVE ''AdventureWorksLT2008_Data'' TO N''' + @sql_path + N'AdventureWorksLT2008.mdf'', MOVE ''AdventureWorksLT2008_Log'' TO N''' + @sql_path + N'AdventureWorksLT2008.ldf'';'); EXECUTE (N'ALTER DATABASE AdventureWorksLT2008 SET NEW_BROKER;');END

Page 66: Kapitola 1: Úvod a inštalácia · 29485 Catherine Abel catherine0@adventure-works.com Van Nuys 29486 Kim Abercrombie kim2@adventure-works.com Branch 29489 Frances Adams frances0@adventure-works.com