131
Az SQL Server 2005 Az SQL Server 2005 relációs motorjának relációs motorjának újdonságai újdonságai Kószó Károly Kószó Károly rendszermérnök rendszermérnök Microsoft Magyarország Microsoft Magyarország

Az SQL Server 2005 relációs motorjának újdonságai

  • Upload
    randi

  • View
    34

  • Download
    3

Embed Size (px)

DESCRIPTION

Az SQL Server 2005 relációs motorjának újdonságai. Kószó Károly rendszermérnök Microsoft Magyarország. TechNet események 2005 tavaszán. 2005. március 23. A Windows Server idei újdonságai. 2005. április 6. - PowerPoint PPT Presentation

Citation preview

Page 1: Az SQL Server 2005  relációs motorjának újdonságai

Az SQL Server 2005 Az SQL Server 2005 relációs motorjának újdonságairelációs motorjának újdonságai

Kószó KárolyKószó Károlyrendszermérnökrendszermérnök

Microsoft MagyarországMicrosoft Magyarország

Page 2: Az SQL Server 2005  relációs motorjának újdonságai

TechNet események 2005 tavaszánTechNet események 2005 tavaszán

2005. április 6.2005. április 6. Átállás a legfrissebb technológiákra:Átállás a legfrissebb technológiákra: Windows Server 2003, XP, Office 2003 Windows Server 2003, XP, Office 2003

2005. április 6.2005. április 6. Átállás a legfrissebb technológiákra:Átállás a legfrissebb technológiákra: Windows Server 2003, XP, Office 2003 Windows Server 2003, XP, Office 2003

2005. április 20.2005. április 20. Az SQL Server 2005 relációs motorjánakAz SQL Server 2005 relációs motorjának újdonságai újdonságai

2005. április 20.2005. április 20. Az SQL Server 2005 relációs motorjánakAz SQL Server 2005 relációs motorjának újdonságai újdonságai

2005. május 4.2005. május 4. Az SQL Server 2005 üzleti intelligencia Az SQL Server 2005 üzleti intelligencia szolgáltatásai szolgáltatásai

2005. május 4.2005. május 4. Az SQL Server 2005 üzleti intelligencia Az SQL Server 2005 üzleti intelligencia szolgáltatásai szolgáltatásai

2005. május 18.2005. május 18.

Üzemeltetői konferenciaÜzemeltetői konferencia2005. május 18.2005. május 18.

Üzemeltetői konferenciaÜzemeltetői konferencia

2005. március 23.2005. március 23. A Windows Server idei újdonságaiA Windows Server idei újdonságai2005. március 23.2005. március 23. A Windows Server idei újdonságaiA Windows Server idei újdonságai

Page 3: Az SQL Server 2005  relációs motorjának újdonságai

NapirendNapirend Az Az SQL Server SQL Server adatplatformadatplatform

Az Az SQL Server 2005 SQL Server 2005 áttekintéseáttekintése

Nagyvállalati adatkezelésNagyvállalati adatkezelés

– BiztonságBiztonság

– Rendelkezésre állásRendelkezésre állás

– SkálázhatóságSkálázhatóság

ProgramozhatóságProgramozhatóság

– XML, CLR, T-SQLXML, CLR, T-SQL

(Üzleti intelligencia)(Üzleti intelligencia)

Page 4: Az SQL Server 2005  relációs motorjának újdonságai

SQL ServerSQL ServerÁtfogó,Átfogó, integráltintegrált adatplatformadatplatform

Integration ServicesIntegration Services

Reporting ServicesReporting Services

Analysis ServicesAnalysis Services (OLAP, DM) (OLAP, DM)

Notification ServicesNotification Services

Replication ServicesReplication ServicesRelációsRelációs adatbázisadatbázis

Page 5: Az SQL Server 2005  relációs motorjának újdonságai

Az Az SQL Server SQL Server generációigenerációi

SQL Server 7.0

SQL Server 2005

SQL Server 2000

• A legalacsonyabb TCO• Automatikus hangolás

• Megbízhatóság, biztonság• Integrált üzleti intelligencia

• Rendelkezésre állás fókusz

• Biztonság • Hatékony fejlesztés• Natív XML• Nagyvállalati ETL és

adatbányászat

• Teljesítmény, skálázhatóság fókusz

• XML támogatás• Továbbfejlesztett

OLAP kiszolgáló• Adatbányászat• Notification Services• Reporting Services

• Új relációs és tároló motor

• Kiterjedt automatikus erőforrás kezelés

• OLAP• ETL eszköz (DTS)

Állandó célok

SQL Server 6.0/6.5

• Windows integráció

• DTC (elosztott tranzakciók)

• Beépített tranzakcionális replikáció

1. A kezdetek 2. A modern SQL Server 3. A közeli jövő

Page 6: Az SQL Server 2005  relációs motorjának újdonságai

Magas rendelkezésre állás Magas rendelkezésre állás BiztonságiBiztonsági ésés teljesítmény jellemzőkteljesítmény jellemzők MenedzselhetőségMenedzselhetőség

Visual Studio Visual Studio ésés .NET .NET CLR integráció CLR integráció NatívNatív XML XML technológiatechnológia az adatbázisbanaz adatbázisban Web ServiceWeb Service felületek (natív SOAP) felületek (natív SOAP)

Valósidejű döntéstámogatásValósidejű döntéstámogatás: : jelentéskészítésjelentéskészítés, , OLAP, adatbányászatOLAP, adatbányászat

Intelligens kliensek;Intelligens kliensek; SharePoint SharePoint megoldásokmegoldások Átfogó (és lényegesen gyorsabb)Átfogó (és lényegesen gyorsabb) ETL ETL

szolgáltatásszolgáltatás

Az Az SQL Server 2005SQL Server 2005 fejlesztés fő területei fejlesztés fő területei

NagyvállalatiNagyvállalatiadatkezelésadatkezelés

ProgramozhatóságProgramozhatóság

ÜzletiÜzletiintelligenciaintelligencia

Page 7: Az SQL Server 2005  relációs motorjának újdonságai

NagyvállalatiNagyvállalati adatkezelésadatkezelés

ElvárásokElvárások BiztonságBiztonság Rendelkezésre állásRendelkezésre állás SkálázhatóságSkálázhatóság MenedzselhetőségMenedzselhetőség

SQL Server 2005SQL Server 2005 JogosultságkezelésJogosultságkezelés Adatbázis tükrözésAdatbázis tükrözés Gyors helyreállításGyors helyreállítás Adatbázis pillanatfelvételAdatbázis pillanatfelvétel Online index műveletekOnline index műveletek Pillanatfelvétel izolációPillanatfelvétel izoláció PartícionálásPartícionálás

Page 8: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2005 SQL Server 2005 biztonsági fejlesztésekbiztonsági fejlesztések Továbbfejlesztett biztonsági jellemzőkTovábbfejlesztett biztonsági jellemzők

Adattitkosítás, titkosítási kulcs kezelésAdattitkosítás, titkosítási kulcs kezelés AuditálásAuditálás, , felhasználó azonosításfelhasználó azonosítás és hozzáférési jogosultság és hozzáférési jogosultság

kezeléskezelés A felület minimalizálásaA felület minimalizálása

A legtöbb szolgáltatás telepítése opcionális – explicit választást A legtöbb szolgáltatás telepítése opcionális – explicit választást igényeligényel

Telepítés, javítócsomagokTelepítés, javítócsomagok Microsoft Update ServicesMicrosoft Update Services integráció integráció

Common CriteriaCommon Criteria Tervezett:Tervezett: EAL4+ EAL4+ (Evaluation Assurance Level 4, vagy erősebb) (Evaluation Assurance Level 4, vagy erősebb)

BiztonságiBiztonsági eszközökeszközök MBSA MBSA ((Microsoft Baseline Security AnalyzerMicrosoft Baseline Security Analyzer)) SQL Server SQL Server Best Practices AnalyzerBest Practices Analyzer

Page 9: Az SQL Server 2005  relációs motorjának újdonságai

Redukált (támadási) felületRedukált (támadási) felület

Page 10: Az SQL Server 2005  relációs motorjának újdonságai

demó

Surface Area ConfigurationSurface Area Configuration

Page 11: Az SQL Server 2005  relációs motorjának újdonságai

Jelszó házirendJelszó házirend A helyi NT jelszó házirend alapjánA helyi NT jelszó házirend alapján

Jelszó erősség, lejáratJelszó erősség, lejárat Fiók kizárásFiók kizárás Alapértelmezett működésAlapértelmezett működés

MegvalósításMegvalósítás Új jelszó házirend ellenőrzőÚj jelszó házirend ellenőrző API API aa Windows 2003Windows 2003

ServerServer-től kezdve-től kezdve AzonosításkorAzonosításkor, , jelszó megadáskor hívjákjelszó megadáskor hívják

Adminisztrátori opciók a login-ok kapcsánAdminisztrátori opciók a login-ok kapcsán Házirend ellenőrzések, lejárat ki/be kapcsolásaHázirend ellenőrzések, lejárat ki/be kapcsolása Jelszócsere előírása az első bejelentkezéskorJelszócsere előírása az első bejelentkezéskor Login-ok gyors letiltásaLogin-ok gyors letiltása

Page 12: Az SQL Server 2005  relációs motorjának újdonságai

A felhasználók és a sémák A felhasználók és a sémák szétválasztásaszétválasztása A principálisok és a sémák szétválasztásaA principálisok és a sémák szétválasztása

Principális Principális – Az egyedek, akikkel szemben az objektumokat védjükAz egyedek, akikkel szemben az objektumokat védjük– sys.database_principals sys.database_principals nézetnézet

SémaSéma – Objektum konténerObjektum konténer; ; a 4 részes név 3. darabjaa 4 részes név 3. darabja– sys.schemas sys.schemas nézetnézet

AA default default sémaséma A felhasználók és a szerepkörök tulajdonságaA felhasználók és a szerepkörök tulajdonsága A névfeloldáskor használja aA névfeloldáskor használja a kereső algoritmuskereső algoritmus sys.database_principalssys.database_principals

ÚjÚj DDL DDL a felhasználókra és a sémákraa felhasználókra és a sémákra CREATE/ALTER/DROP CREATE/ALTER/DROP - - USERUSER//ROLEROLE//SCHEMASCHEMA

A felhasználó megszüntetése nem igényli a séma A felhasználó megszüntetése nem igényli a séma átnevezésétátnevezését

Page 13: Az SQL Server 2005  relációs motorjának újdonságai

Default SchemaDefault Schema Névfeloldáshoz, ha nincs megadva a Névfeloldáshoz, ha nincs megadva a

sémanévsémanév Az SQL2000-ben a „dbo” az alapértelmezett Az SQL2000-ben a „dbo” az alapértelmezett

„séma”„séma” A dbo séma bővítése potenciális biztonsági A dbo séma bővítése potenciális biztonsági

résrés– A tulajdonosi lánc helytelen használata eseténA tulajdonosi lánc helytelen használata esetén

SQL2005-ben csak akkor a „dbo” az SQL2005-ben csak akkor a „dbo” az alapértelmezett séma, ha az adatbázis alapértelmezett séma, ha az adatbázis felhasználónál nincs default schema megadvafelhasználónál nincs default schema megadva– create/alter user … create/alter user …

WITH DEFAULT_SCHEMA = WITH DEFAULT_SCHEMA = sémanévsémanév

Page 14: Az SQL Server 2005  relációs motorjának újdonságai

Sémák és felhasználókSémák és felhasználók

Az adatbázis több sémát Az adatbázis több sémát tartalmazhattartalmazhat

Minden sémának van Minden sémának van tulajdonosatulajdonosa – user – user vagyvagy rolerole

Minden felhasználónak Minden felhasználónak van alapértelmezett van alapértelmezett sémája, aminek nem sémája, aminek nem feltétlenül ő a tulajdonosafeltétlenül ő a tulajdonosa

Az adatbázis objektumok Az adatbázis objektumok sémákban létezneksémákban léteznek

A tulajdonosi lánc A tulajdonosi lánc változatlanul működikváltozatlanul működik

Role1 User1

Owns

Has default schema

Owns

Approle1

Owns

Schema1 Schema2

Schema3

SP1Fn1

Tab1

Adatbázis

Page 15: Az SQL Server 2005  relációs motorjának újdonságai

Végrehajtási környezetVégrehajtási környezet

User 3User 3

Select Select jogjog ellenőrzésellenőrzés User3-ra User3-ra

Execute Execute jogjog ellenőrzésellenőrzés User3 User3-ra-ra

User1.Proc1User1.Proc1 User1.T1User1.T1

Execute Execute jogjog ellenőrzésellenőrzés User3 User3-ra-ra

NincsNincs jogosultság jogosultság ellenőrzés User3-raellenőrzés User3-ra

User 3User 3 User2.Proc1User2.Proc1 User1.T1User1.T1

‘‘Execute AS ‘X’ ’Execute AS ‘X’ ’

Execute Execute jogjog ellenőrzésellenőrzés User3 User3-ra-ra

Select Select jogjog ellenőrzésellenőrzés‘X’‘X’-re,-re, NemNem user3 user3-ra-ra

SQL ServerSQL Server

SQL SQL Server Server 20002000

User2.Proc1User2.Proc1 User1.T1User1.T1

Page 16: Az SQL Server 2005  relációs motorjának újdonságai

Modul végrehajtási környezetModul végrehajtási környezet ModuleModule

Tárolt eljárásTárolt eljárás, , függvényfüggvény, , triggertrigger

A tulajdonosi lánc helyett/mellett használhatóA tulajdonosi lánc helyett/mellett használható A tulajdonosi lánc szabályok változatlanul érvényesekA tulajdonosi lánc szabályok változatlanul érvényesek

A jogosultságokat a végrehajtási környezetre A jogosultságokat a végrehajtási környezetre ellenőrizzükellenőrizzük Az adat definíciós utasításokra és a dinamikus SQL-re isAz adat definíciós utasításokra és a dinamikus SQL-re is

A modulok végrehajtási környezetét tartalmazó A modulok végrehajtási környezetét tartalmazó rendszer nézetek:rendszer nézetek: sys.sql_modulessys.sql_modules és a sys. és a sys. assembly_modulesassembly_modules

Page 17: Az SQL Server 2005  relációs motorjának újdonságai

Modul végrehajtási környezet (2)Modul végrehajtási környezet (2) Execute AS CALLERExecute AS CALLER

A modul utasításai a modultA modul utasításai a modult közvetlenülközvetlenül hívó nevében (és jogaival) hívó nevében (és jogaival) hajtódnak végrehajtódnak végre

Alapértelmezett viselkedésAlapértelmezett viselkedés, , hasonló az SQL Server 2000-hezhasonló az SQL Server 2000-hez Execute AS ‘Execute AS ‘useruser’’

A modul a megadott felhasználóval hajtódik végreA modul a megadott felhasználóval hajtódik végre Az Az execute as execute as záradékot megadó felhasználónak IMPERSONATE záradékot megadó felhasználónak IMPERSONATE

jog kell a megadott ‘user’-rejog kell a megadott ‘user’-re Execute AS SELFExecute AS SELF

AA végrehajtásvégrehajtás aa záradékot megadó felhasználó nevében történikzáradékot megadó felhasználó nevében történik Execute AS OWNERExecute AS OWNER

Az utasítások a modul mindenkori tulajdonosa nevében futnakAz utasítások a modul mindenkori tulajdonosa nevében futnak Impersonate Impersonate jog kell az aktuális tulajdonosra (megadáskor)jog kell az aktuális tulajdonosra (megadáskor)

Kiszolgáló hatókörű DDL triggerek esetén:Kiszolgáló hatókörű DDL triggerek esetén: Execute AS Execute AS ‘login’‘login’

Page 18: Az SQL Server 2005  relációs motorjának újdonságai

Példa azPélda az Execute AsExecute As használatárahasználatára ProblémaProbléma::

A A TRUNCATE TRUNCATE jog nem továbbadhatójog nem továbbadható AzAz ALTER ALTER jog a jog a TRUNCATETRUNCATE-et tartalmazza-et tartalmazza, , de az túl de az túl

sok lennesok lenne MegoldásMegoldás: : Execute AsExecute As

Tárolt eljárást készítünk a Tárolt eljárást készítünk a TRUNCATETRUNCATE-re-re Execute AsExecute As egy olyan felhasználóval, akinek van egy olyan felhasználóval, akinek van

ALTER ALTER jogajoga Grant execute Grant execute jog a cél felhasználónakjog a cél felhasználónak

EredményEredmény:: A A TRUNCATE TRUNCATE jogot „továbbadhatóvá” tettükjogot „továbbadhatóvá” tettük

Page 19: Az SQL Server 2005  relációs motorjának újdonságai

Új jogosultságokÚj jogosultságok A legtöbb objektumra vonatkoznak a A legtöbb objektumra vonatkoznak a

következő jogosultságokkövetkező jogosultságok CONTROLCONTROL: : tulajdonos-szerű jogoktulajdonos-szerű jogok ALTERALTER: : a tulajdonságok megváltoztatásaa tulajdonságok megváltoztatása ALTER ANY ‘X’:ALTER ANY ‘X’: ALTER jog mindenALTER jog minden X X típusú típusú

objektumraobjektumra Take OwnershipTake Ownership: : a tulajdonjog átvételének a tulajdonjog átvételének

jogajoga Rendszer nézetekRendszer nézetek

sys.database_permissionssys.database_permissions, , sys.server_permissionssys.server_permissions

Page 20: Az SQL Server 2005  relációs motorjának újdonságai

Jogosultság alapú meta-adat Jogosultság alapú meta-adat biztonságbiztonság

A meta-adatok alapértelmezésben védettekA meta-adatok alapértelmezésben védettek A sysadmin szerep mindent láthat a A sysadmin szerep mindent láthat a

kiszolgálónkiszolgálón Az adatbázis tulajdonos (dbo) mindent láthat Az adatbázis tulajdonos (dbo) mindent láthat

az adatbázisbanaz adatbázisban Az objektum tulajdonosa láthatja az adott Az objektum tulajdonosa láthatja az adott

objektum adataitobjektum adatait A ”A ”VIEW DEFINITONVIEW DEFINITON” engedély teszi lehetővé ” engedély teszi lehetővé

az objektum meta-adatainak olvasásátaz objektum meta-adatainak olvasását

Page 21: Az SQL Server 2005  relációs motorjának újdonságai

A rendelkezésre állás fokozásaA rendelkezésre állás fokozása Automatikus feladatátvételAutomatikus feladatátvétel

Feladatátvevő fürtözés (Feladatátvevő fürtözés (Failover ClusteringFailover Clustering)) Adatbázis tükrözésAdatbázis tükrözés

Adatbázis karbantartás, helyreállításAdatbázis karbantartás, helyreállítás Online Online index műveletekindex műveletek Gyors helyreállítás (Gyors helyreállítás (recoveryrecovery)) OnlineOnline, akár lap szintű visszatöltés, akár lap szintű visszatöltés

Egyidejű adatelérés, blokkolás elkerüléseEgyidejű adatelérés, blokkolás elkerülése Pillanatfelvétel izolációPillanatfelvétel izoláció

Egyéb fejlesztésekEgyéb fejlesztések Adatbázis pillanatfelvételekAdatbázis pillanatfelvételek Replikáció Replikáció

Page 22: Az SQL Server 2005  relációs motorjának újdonságai

Adatbázis tükrözésAdatbázis tükrözésMagas rendelkezésre állás – alacsony költséggelMagas rendelkezésre állás – alacsony költséggel

TükörképPrincipális

Ügyfelek

Napló rekordok

Tanú

AdatbázisAdatbázis feladatátvételfeladatátvétel

<3 mp<3 mp Automatikus/ Automatikus/

manuális manuális feladatátvételfeladatátvétel

AutomatikusAutomatikus kliens kliens átirányításátirányítás

Standard Standard hardver hardver eszközökeszközök

Page 23: Az SQL Server 2005  relációs motorjának újdonságai

Az adatbázis tükrözés előnyeiAz adatbázis tükrözés előnyei

Gyors, automatikus feladatátvételGyors, automatikus feladatátvétel Adatbázis szinten teljes másolatAdatbázis szinten teljes másolat

Különálló gépekKülönálló gépek Az adatok két példányban léteznekAz adatok két példányban léteznek A gépek szabványos hálózaton keresztül A gépek szabványos hálózaton keresztül

kommunikálnakkommunikálnak

Nem igényel speciális hardvertNem igényel speciális hardvert Önellenőrző Önellenőrző Magas rendelkezésre állás – adatbázis szintenMagas rendelkezésre állás – adatbázis szinten

Page 24: Az SQL Server 2005  relációs motorjának újdonságai

Tükrözés - szerepkörökTükrözés - szerepkörök PrincipálisPrincipális

Fogadja az ügyfél kapcsolatokatFogadja az ügyfél kapcsolatokat Engedi az adatok módosításátEngedi az adatok módosítását

TükörképTükörkép ( („azonnali”„azonnali” tartaléktartalék)) A principálisnál történő változásokat végrehajtja A principálisnál történő változásokat végrehajtja

a tükör adatbázisona tükör adatbázison Az ügyfelek közvetlenül nem érik el a tükörképetAz ügyfelek közvetlenül nem érik el a tükörképet Szerepet cserélhet, principálissá válhatSzerepet cserélhet, principálissá válhat A tükörkép pillanatfelvételei felhasználhatók A tükörkép pillanatfelvételei felhasználhatók

jelentés készítésrejelentés készítésre

Page 25: Az SQL Server 2005  relációs motorjának újdonságai

A tanú szerepeA tanú szerepe Lehetővé teszi az automatikus Lehetővé teszi az automatikus

feladatátvételtfeladatátvételt Megakadályozza aMegakadályozza a „megosztott agy” „megosztott agy”

problémátproblémát „„Miért nem látom a másik kiszolgálót? A hálózat Miért nem látom a másik kiszolgálót? A hálózat

szűnt meg, vagy a kiszolgáló nem működik?szűnt meg, vagy a kiszolgáló nem működik?

Csak az a kiszolgáló lehet principális, Csak az a kiszolgáló lehet principális, amelyik legalább egy másik kiszolgálóval amelyik legalább egy másik kiszolgálóval képes kommunikálniképes kommunikálni

Page 26: Az SQL Server 2005  relációs motorjának újdonságai

A tanú jellemzőiA tanú jellemzői Egy SQL Server 2005 példányEgy SQL Server 2005 példány Egy tanú több tükrözést támogathatEgy tanú több tükrözést támogathat Nagyon kevés erőforrást fogyasztNagyon kevés erőforrást fogyaszt

Válaszol aVálaszol a „„pingping”-ekre”-ekre Közli, hogy a másik kiszolgáló él-eKözli, hogy a másik kiszolgáló él-e

NemNem egyetlen meghibásodási pontegyetlen meghibásodási pont A tükröző partnerek egymással is meg tudnak A tükröző partnerek egymással is meg tudnak

állapodniállapodni Amíg két szerver tud kommunikálni Amíg két szerver tud kommunikálni

egymással, a tükrözés működőképesegymással, a tükrözés működőképes

Page 27: Az SQL Server 2005  relációs motorjának újdonságai

A tükrözés folyamata - szinkronA tükrözés folyamata - szinkron

Érvényesítés

Tranzakció-napló írás

Továbbítás a tükörhöz

Log

Nyugta

Napló írás nyugta

Folyamatos előregörgetés

Nyugta

DBDB Log

Tranzakció-napló írás

Page 28: Az SQL Server 2005  relációs motorjának újdonságai

Adatbázis tükrözés - szinkronAdatbázis tükrözés - szinkron A principális egyszerre írja a saját A principális egyszerre írja a saját

tranzakciónaplóját és küldi a hálózatra a tranzakciónaplóját és küldi a hálózatra a módosításokatmódosításokat

A tranzakció akkor érvényesítődik, ha a A tranzakció akkor érvényesítődik, ha a tükör is beírta a módosításokat a saját tükör is beírta a módosításokat a saját tranzakciónaplójábatranzakciónaplójába

Feladatátvétel esetén nincs adatvesztésFeladatátvétel esetén nincs adatvesztés A tükörkép kész a feladatátvételre, ha A tükörkép kész a feladatátvételre, ha

megtörtént a tranzakciók előregörgetése – az megtörtént a tranzakciók előregörgetése – az esetleges visszagörgetésre nem kell várniesetleges visszagörgetésre nem kell várni

Automatikus feladatátvétel lehetségesAutomatikus feladatátvétel lehetséges

Page 29: Az SQL Server 2005  relációs motorjának újdonságai

Az adatbázisAz adatbázis állapotai a állapotai a tükrözési folyamat sorántükrözési folyamat során SYNCHRONIZEDSYNCHRONIZED

A tükör is minden adatot tartalmazA tükör is minden adatot tartalmaz

SYNCHRONIZINGSYNCHRONIZING A tükör le van maradva, de dolgozikA tükör le van maradva, de dolgozik

SUSPENDEDSUSPENDED A tükrözés fel van függesztveA tükrözés fel van függesztve

DISCONNECTEDDISCONNECTED A kiszolgáló nem tud kommunikálni a partnerrelA kiszolgáló nem tud kommunikálni a partnerrel

EXPOSED EXPOSED (veszélyeztetett) (veszélyeztetett) = = SYNCHRONIZING SYNCHRONIZING // SUSPENDED SUSPENDED // DISCONNECTED DISCONNECTED

Page 30: Az SQL Server 2005  relációs motorjának újdonságai

Szinkron és aszinkron tükrözésSzinkron és aszinkron tükrözés A biztonsági szint beállítása szerintA biztonsági szint beállítása szerint

SECURITY: SECURITY: FULL – FULL – csak akkor csak akkor érvényesítünk a principálison, ha a érvényesítünk a principálison, ha a módosítás naplózódott a tükörképen ismódosítás naplózódott a tükörképen is– A tükrözés hatással van a principális A tükrözés hatással van a principális

áteresztőképességéreáteresztőképességére– A feladatátvétel ideje szabályozható A feladatátvétel ideje szabályozható

((REDO_QUEUE REDO_QUEUE adatbázis opció)adatbázis opció) SECURITY: SECURITY: OFF – OFF – a principális nem vár a a principális nem vár a

tükörkép nyugtájáratükörkép nyugtájára– A tükrözés hatása a principális A tükrözés hatása a principális

áteresztőképességére minimálisáteresztőképességére minimális

Page 31: Az SQL Server 2005  relációs motorjának újdonságai

Aszinkron tükrözésAszinkron tükrözés

Érvényesítés

Tranzakció-napló írás

Továbbítás a tükörhöz

Log

Nyugta

Napló írás megtörtént

Folyamatos előregörgetés

DBDB Log

Tranzakció-napló írás

1

2

2

3

Page 32: Az SQL Server 2005  relációs motorjának újdonságai

Az tükrözés alkalmazásaiAz tükrözés alkalmazásai Magas rendelkezésre állásMagas rendelkezésre állás

Biztonság:Biztonság: FULL FULL Automatikus feladatátvételAutomatikus feladatátvétel Egy kiszolgáló elvesztése esetén az adatbázis Egy kiszolgáló elvesztése esetén az adatbázis

változatlanul használhatóváltozatlanul használható Magas védelemMagas védelem

Biztonság: FULL; nincs tanú Biztonság: FULL; nincs tanú manuális áttérés manuális áttérés Nagy teljesítményNagy teljesítmény

Biztonság:Biztonság: OFF OFF A rendszergazda végzi a feladatátadástA rendszergazda végzi a feladatátadást Adatvesztés lehetségesAdatvesztés lehetséges Egy fajta mentési mechanizmusEgy fajta mentési mechanizmus

Page 33: Az SQL Server 2005  relációs motorjának újdonságai

demó

Adatbázis tükrözésAdatbázis tükrözés

Page 34: Az SQL Server 2005  relációs motorjának újdonságai

GyorsGyors helyreállítás (helyreállítás (recoveryrecovery)) SQL Server 2000SQL Server 2000

Az adatbázisAz adatbázis a a visszagörgetésvisszagörgetés utánután hozzáférhető hozzáférhető

SQL Server SQL Server 20052005 Az adatbázisAz adatbázis a a visszagörgetésvisszagörgetés megkezdésekormegkezdésekor

hozzáférhetőhozzáférhető

VisszagörgetésElőregörgetés

Használható

VisszagörgetésElőregörgetés

Használható

Idő

Page 35: Az SQL Server 2005  relációs motorjának újdonságai

Adatbázis pillanatfelvételAdatbázis pillanatfelvételMire jó?Mire jó?

Felhasználói hiba kivédéseFelhasználói hiba kivédése Visszatérés a „múltba”Visszatérés a „múltba” A hiba megtörténte előtt kell pillanatfelvételt A hiba megtörténte előtt kell pillanatfelvételt

készítenikészíteni

Erősen használt adatbázis adott Erősen használt adatbázis adott állapotának elmentéseállapotának elmentése Például, adatbázis tükörkép eseténPéldául, adatbázis tükörkép esetén Jelentéskészítés céljábólJelentéskészítés céljából

Page 36: Az SQL Server 2005  relációs motorjának újdonságai

Adatbázis pillanatfelvételAdatbázis pillanatfelvétel

Az adatbázis állapota egy adott Az adatbázis állapota egy adott időpillanatbanidőpillanatban Azonnal létrejönAzonnal létrejön Csak olvashatóCsak olvasható

Az eredeti adatbázis változását nem Az eredeti adatbázis változását nem korlátozzakorlátozza

A pillanatfelvétel új (csak olvasható) A pillanatfelvétel új (csak olvasható) adatbázisként jelenik megadatbázisként jelenik meg

Hiba esetén visszanyúlhatunk a Hiba esetén visszanyúlhatunk a pillanatfelvételhez a régi adatokértpillanatfelvételhez a régi adatokért

Page 37: Az SQL Server 2005  relációs motorjának újdonságai

PillanatfelvételPillanatfelvételTechnológiaTechnológia

Helykímélő Helykímélő Csak a módosult adatlapokat tároljukCsak a módosult adatlapokat tároljuk

Másolás íráskor (Másolás íráskor (Copy-On-WriteCopy-On-Write)) Kezdetben a kópia nem igényel helyetKezdetben a kópia nem igényel helyet

A pillanatfelvétel létezése befolyásolja A pillanatfelvétel létezése befolyásolja az eredeti adatbázis működési az eredeti adatbázis működési sebességétsebességét

Page 38: Az SQL Server 2005  relációs motorjának újdonságai

ValueValue

RR

DD

BB

HH

JJ

LL

YY

MM

Tárolási igény

Parancs

Create Northwind_SS

Northwind Northwind_SS

Update Northwind

0%

ValueValue

DDXX

Read Northwind_SS

12.5%

Eredmény:

PillanatfelvételPillanatfelvétel MásolásMásolás íráskoríráskor

DD

Page 39: Az SQL Server 2005  relációs motorjának újdonságai

Pillanatfelvétel a tükörképenPillanatfelvétel a tükörképen

Több pillanatfelvétel is készíthetőTöbb pillanatfelvétel is készíthető Minden pillanatfelvétel saját névvel rendelkezikMinden pillanatfelvétel saját névvel rendelkezik Az adatbázis állapotát eltérő időpontokban mutatjákAz adatbázis állapotát eltérő időpontokban mutatják

A tükörképen létrehozott pillanatfelvételek A tükörképen létrehozott pillanatfelvételek befolyásolhatják a principális működésétbefolyásolhatják a principális működését

Az egy időben létező pillanatfelvételek Az egy időben létező pillanatfelvételek számát csak az erőforrások korlátozzákszámát csak az erőforrások korlátozzák

Page 40: Az SQL Server 2005  relációs motorjának újdonságai

Jelentéskészítés a tükörképenJelentéskészítés a tükörképen Pillanatfelvételekkel Pillanatfelvételekkel

Tükörkép

Principális

Jelentéskészítő kliensek

AdatbázisAdatbázis tükrözéstükrözés

OLTP kliensekTanú

PillanatfelvételekPillanatfelvételek

Page 41: Az SQL Server 2005  relációs motorjának újdonságai

Online Online indexindex műveletekműveletek

Online index Online index karbantartáskarbantartás Create, Rebuild, Reorganize, DropCreate, Rebuild, Reorganize, Drop Add / Drop Constraint Add / Drop Constraint

Parallel végrehajtás (MAXDOP opció)Parallel végrehajtás (MAXDOP opció) Online/offline Online/offline választhatóválasztható

Page 42: Az SQL Server 2005  relációs motorjának újdonságai

Pillanatfelvétel tranzakció izolációPillanatfelvétel tranzakció izoláció

Az adatok olvasásakor az Az adatok olvasásakor az utasításutasítás, vagy a , vagy a tranzakciótranzakció megkezdésekor érvényes utolsó megkezdésekor érvényes utolsó értékeket látjukértékeket látjuk Nincs zárolásNincs zárolás Az olvasások nem blokkolják a módosításokat és a Az olvasások nem blokkolják a módosításokat és a

módosítások nem blokkolják az olvasásokatmódosítások nem blokkolják az olvasásokat

Javítja az adatok elérhetőségét, csökkenti a Javítja az adatok elérhetőségét, csökkenti a deadlockdeadlock-ok kialakulását-ok kialakulását

Az adatsorok verziózásán alapul (Az adatsorok verziózásán alapul (tempdbtempdb)) Adatbázis szinten lehet engedélyezniAdatbázis szinten lehet engedélyezni

Page 43: Az SQL Server 2005  relációs motorjának újdonságai

Pillanatfelvétel izoláció változatokPillanatfelvétel izoláció változatok

A A Read CommittedRead Committed szint új változata szint új változata Zárolás nélküli Zárolás nélküli Read CommittedRead Committed Utasítás szintű pillanatfelvétel izolációUtasítás szintű pillanatfelvétel izoláció

– Olvasáskor az utasítás kezdetekor érvényes utolsó Olvasáskor az utasítás kezdetekor érvényes utolsó értéket kapjukértéket kapjuk

Új tranzakció izolációs szintÚj tranzakció izolációs szint SnapshotSnapshot – új izolációs szint – új izolációs szint Tranzakció szintűTranzakció szintű

– Olvasáskor a tranzakció kezdetekor érvényes utolsó Olvasáskor a tranzakció kezdetekor érvényes utolsó értéket kapjukértéket kapjuk

Page 44: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2005 SQL Server 2005 Tranzakció izolációs szintekTranzakció izolációs szintek

Lehetséges anomáliákLehetséges anomáliák

Izolációs szintekIzolációs szintek Érvénytelen Érvénytelen adat olvasásadat olvasás

Nem Nem megismétel-megismétel-hető olvasáshető olvasás

FantomokFantomok UPDATE UPDATE konfliktuskonfliktus

Egyidejű Egyidejű elérés elérés

vezérlésevezérlése

Read Read UncommittedUncommitted igenigen igenigen igenigen nemnem nincsnincs

Read CommittedRead Committed- zárolássalzárolással- pillanatfelvételpillanatfelvétel

nemnem

nemnem

igenigen

igenigen

igenigen

igenigen

nemnem

nemnem

pesszimistapesszimista

optimistaoptimista

Repeatable ReadRepeatable Read nemnem nemnem igenigen nemnem pesszimistapesszimista

SnapshotSnapshot nemnem nemnem nemnem igenigen optimistaoptimista

SerializableSerializable nemnem nemnem nemnem nemnem pesszimistapesszimista

Page 45: Az SQL Server 2005  relációs motorjának újdonságai

A pillanatfelvétel engedélyezése és A pillanatfelvétel engedélyezése és az izolációs szint beállításaaz izolációs szint beállítása Engedélyezés – adatbázis szintenEngedélyezés – adatbázis szinten

alter database <alter database <adatbázisadatbázis> > set READ_COMMITTED_SNAPSHOT onset READ_COMMITTED_SNAPSHOT on

és/vagy:és/vagy: alter database <alter database <adatbázisadatbázis> > set ALLOW_SNAPSHOT_ISOLATION onset ALLOW_SNAPSHOT_ISOLATION on

Izolációs szint beállítás – kapcsolat szintenIzolációs szint beállítás – kapcsolat szinten set transaction isolation level read set transaction isolation level read committedcommitted

set transaction isolation level snapshotset transaction isolation level snapshot A tranzakció működése az engedélyezett és a A tranzakció működése az engedélyezett és a

beállított értéktől is függbeállított értéktől is függ

Page 46: Az SQL Server 2005  relációs motorjának újdonságai

Read Committed SnapshotRead Committed Snapshot Adatbázis: Adatbázis: READ_COMMITTED_SNAPSHOT onREAD_COMMITTED_SNAPSHOT on Kapcsolat: Kapcsolat: set transaction isolation set transaction isolation

level read committedlevel read committed A módosítások nem blokkolják az olvasásokat A módosítások nem blokkolják az olvasásokat

és fordítvaés fordítva A módosítások blokkolják egymást!A módosítások blokkolják egymást!

A módosítások zárakkal történnekA módosítások zárakkal történnek

Nem használható a Nem használható a mastermaster, az , az msdbmsdb és a és a tempdbtempdb adatbázisokkal adatbázisokkal

Page 47: Az SQL Server 2005  relációs motorjának újdonságai

SnapshotSnapshot Adatbázis: Adatbázis: ALLOW_SNAPSHOT_ISOLATION onALLOW_SNAPSHOT_ISOLATION on Kapcsolat: Kapcsolat: set transaction isolation set transaction isolation

level level snapshotsnapshot A módosítások nem blokkolják az olvasásokat A módosítások nem blokkolják az olvasásokat

és fordítvaés fordítva A módosítások konfliktusba kerülhetnekA módosítások konfliktusba kerülhetnek

Elvesztett módosítás veszélyeElvesztett módosítás veszélye Automatikus és kötelező konfliktus feloldás véd az Automatikus és kötelező konfliktus feloldás véd az

„elvesztett módosítás” probléma ellen„elvesztett módosítás” probléma ellen

Alapértelmezett a Alapértelmezett a mastermaster–en és az –en és az msdbmsdb-n-n

Page 48: Az SQL Server 2005  relációs motorjának újdonságai

demó

Pillanatfelvétel izolációPillanatfelvétel izoláció

Page 49: Az SQL Server 2005  relációs motorjának újdonságai

ReplikációReplikáció újdonságokújdonságok Tranzakcionális replikáció Tranzakcionális replikáció OracleOracle-ből-ből az az

SQL Server-beSQL Server-be HTTPS Merge HTTPS Merge szinkronizálásszinkronizálás AZAZ SQL Server 2005 SQL Server 2005 új adattípusainak új adattípusainak

támogatásatámogatása Pont-pont replikációPont-pont replikáció A replikált táblák szerkezete módosíthatóA replikált táblák szerkezete módosítható JobbJobb biztonságbiztonság, , teljesítményteljesítmény, ,

adminisztráció,adminisztráció, diagnosztika, …diagnosztika, …

Page 50: Az SQL Server 2005  relációs motorjának újdonságai

Partícionált táblák és indexekPartícionált táblák és indexek Értéktartomány (Értéktartomány (rangerange) alapú ) alapú

partícionáláspartícionálás A táblákat, indexeket több tárolási A táblákat, indexeket több tárolási

objektumra bontjuk egy adatoszlop objektumra bontjuk egy adatoszlop értéke szerintértéke szerint

A relációs motor és az SQL programozó A relációs motor és az SQL programozó számára a tábla egyetlen egység maradszámára a tábla egyetlen egység marad

A tároló motor több objektumként A tároló motor több objektumként kezeli a partíciókatkezeli a partíciókat Max.Max. 1000 1000 partíció / táblapartíció / tábla

Page 51: Az SQL Server 2005  relációs motorjának újdonságai

Egy nagy monolitikus táblaEgy nagy monolitikus tábla

Customer ID IndexCustomer ID Index

Order History TableOrder History Table

Nem partícionáltNem partícionált::

Filegroup DATAFilegroup DATA

Filegroup IDXFilegroup IDX

PéldaPélda: : AzAz ORDER HISTORY ORDER HISTORY tábla; egy nemtábla; egy nem fürtözöttfürtözött indexindex aa CUSTOMER ID CUSTOMER ID-n-n

OrderOrderHistoryHistory

Customer IDCustomer ID

Order DateOrder Date

AmountAmount

……

Order IDOrder ID

Page 52: Az SQL Server 2005  relációs motorjának újdonságai

PartícionálásPartícionálás és tárolásés tárolás

Customer ID IndexCustomer ID Index Customer ID IndexCustomer ID Index Customer ID IndexCustomer ID Index

ORDER DATEORDER DATE szerint szerint::

Order Date <Order Date <‘‘2003-01-01’2003-01-01’

Order Date >=Order Date >=‘‘2003-01-01’ and2003-01-01’ andOrder Date <Order Date <‘‘2004-01-01’2004-01-01’

Order Date >=Order Date >=‘‘2004-01-01’2004-01-01’

Filegroup Filegroup DATA_2002DATA_2002

Filegroup Filegroup DATA_2003DATA_2003

Filegroup Filegroup DATA_2004DATA_2004

Filegroup Filegroup IDX_2002IDX_2002

Filegroup Filegroup IDX_2003IDX_2003

Filegroup Filegroup IDX_2004IDX_2004

OrdersOrders

Customer IDCustomer ID

Order DateOrder Date

AmountAmount

……

Order IDOrder IDOrderOrderHistoryHistory

Customer IDCustomer ID

Order DateOrder Date

AmountAmount

……

Order IDOrder ID

Order History TableOrder History Table Order History TableOrder History Table Order History TableOrder History Table

Page 53: Az SQL Server 2005  relációs motorjának újdonságai

A partícionált táblák előnyeiA partícionált táblák előnyei Kezelhetőség Kezelhetőség

GyorsGyors adatbetöltés és törlésadatbetöltés és törlés Darabonkénti mentés/visszatöltés a „régi” adatokraDarabonkénti mentés/visszatöltés a „régi” adatokra Partíciónkénti index kezelésPartíciónkénti index kezelés Nincs index töredezettség a régi adatokraNincs index töredezettség a régi adatokra Eltérő tárolási mód lehetséges a régi adatokraEltérő tárolási mód lehetséges a régi adatokra

Jobb lekérdezési sebesség a nagy táblák Jobb lekérdezési sebesség a nagy táblák eseténesetén Hatékony join, ha az illeszkedő táblák azonosan Hatékony join, ha az illeszkedő táblák azonosan

partícionáltakpartícionáltak Kisebb index fát és adatpartíciót kell bejárni Kisebb index fát és adatpartíciót kell bejárni

Page 54: Az SQL Server 2005  relációs motorjának újdonságai

A partícionálás elemeiA partícionálás elemei

ObjektumokObjektumok:: Partíció függvényPartíció függvény PartícióPartíció sémaséma

MűveletekMűveletek:: Megosztás - Megosztás - Split PartitionSplit Partition Összefésülés - Összefésülés - Merge PartitionMerge Partition Csere - Csere - Switch PartitionSwitch Partition

Page 55: Az SQL Server 2005  relációs motorjának újdonságai

A partíció függvényA partíció függvény A partícionáló oszlop adatait egész A partícionáló oszlop adatait egész

számokra képezi leszámokra képezi le A határpontok által definiáltA határpontok által definiált N N pont pont N+1 N+1 partíciópartíció

Partition #Partition #

11 22 33 44 55

BoundaryBoundary

11BoundaryBoundary

22BoundaryBoundary

33BoundaryBoundary

44

Page 56: Az SQL Server 2005  relációs motorjának újdonságai

Partíció függvény példaPartíció függvény példaCREATE PARTITION FUNCTION annual_range CREATE PARTITION FUNCTION annual_range

(DATETIME)(DATETIME)as RANGE RIGHTas RANGE RIGHT /* a határpontokra eső adatok helye */ /* a határpontokra eső adatok helye */for valuesfor values(( -- Partition 1 -- -- Partition 1 -- 20012001 és korábbiés korábbi'200'20022-01-01',-01-01', -- Partition 2 -- 200-- Partition 2 -- 20022'200'20033-01-01',-01-01', -- Partition 3 -- 200-- Partition 3 -- 20033'200'20044-01-01',-01-01', -- Partition 4 -- 200-- Partition 4 -- 20044'200'20055-01-0-01-011'' -- Partition 5 -- Partition 5 ---- 200 2005 5 és későbbiés későbbi))

Partíció sorszám lekérdezése:Partíció sorszám lekérdezése:select $partition.select $partition.annual_rangeannual_range(‘2003-03-15’)(‘2003-03-15’)

Page 57: Az SQL Server 2005  relációs motorjának újdonságai

dátumdátum < < 20020022-01-01-01-01

20020022-01-01-01-01<=dátum <<=dátum <2003-01-012003-01-01

20020033-01-01-01-01<=dátum <<=dátum <2004-01-012004-01-01

20020044-01-01-01-01<=dátum <<=dátum <2005-01-012005-01-01

20020055-01-01-01-01<=dátum <=dátum

Partíció függvény példa (2)Partíció függvény példa (2)

Partition #Partition #

11 22 33 44 55

BoundaryBoundary

11BoundaryBoundary

22BoundaryBoundary

33BoundaryBoundary

44

20020022-01-01-01-01 20020033-01-01-01-01 20020044-01-01-01-01 20020055-01-01-01-01

Page 58: Az SQL Server 2005  relációs motorjának újdonságai

Partíció sémaPartíció séma Egy-egy fájlcsoportot rendel a Egy-egy fájlcsoportot rendel a

partíciókhozpartíciókhoz Nem kötelező különböző fájlcsoportokat Nem kötelező különböző fájlcsoportokat

használnihasználni Különböző fájlcsoportok használata hasznos Különböző fájlcsoportok használata hasznos

lehet mentés/helyreállítás eseténlehet mentés/helyreállítás esetén

Page 59: Az SQL Server 2005  relációs motorjának újdonságai

Partíció séma példákPartíció séma példákCREATE PARTITION SCHEME annual_scheme_1CREATE PARTITION SCHEME annual_scheme_1as PARTITION annual_range toas PARTITION annual_range to(annual_min,(annual_min, -- filegroup pre-2002-- filegroup pre-2002annual_200annual_20022,, -- filegroup 2002-- filegroup 2002annual_200annual_20033,, -- filegroup 2003-- filegroup 2003annual_200annual_20044,, -- filegroup 2004-- filegroup 2004annual_200annual_2005)5) -- filegroup 2005-- filegroup 2005-től-től

Create PARTITION SCHEME annual_scheme_2Create PARTITION SCHEME annual_scheme_2as PARTITION annual_rangeas PARTITION annual_rangeALL to ([PRIMARY])ALL to ([PRIMARY])

Page 60: Az SQL Server 2005  relációs motorjának újdonságai

Partícionált táblák és indexekPartícionált táblák és indexek A partícionáló kulcs csak egyetlen A partícionáló kulcs csak egyetlen

oszlop lehetoszlop lehet A partícionált táblák és indexekA partícionált táblák és indexek partíció partíció

sémákon hozhatók létre (nem sémákon hozhatók létre (nem fájlcsoportokon)fájlcsoportokon)

Több tábla és index is használhatja Több tábla és index is használhatja ugyanazt augyanazt a partíció függvénytpartíció függvényt ésés sémátsémát

Tábla,Tábla, indexindex

PartícióPartíciósémaséma

PartícióPartíciófüggvényfüggvény

Page 61: Az SQL Server 2005  relációs motorjának újdonságai

Tábla és index létrehozásaTábla és index létrehozása

CREATE CREATE TABLE Order_History (TABLE Order_History (Order_ID Order_ID bigint,bigint,Order_DateOrder_Date datetime,datetime,Customer_IDCustomer_ID bigintbigint……

) ON ) ON Annual_Scheme_1(Order_Date)Annual_Scheme_1(Order_Date)

CREATE INDEX Order_Cust_IdxCREATE INDEX Order_Cust_IdxON Order_History(Order_ID)ON Order_History(Order_ID)

ON ON Annual_Scheme_1(Order_Date)Annual_Scheme_1(Order_Date)

Page 62: Az SQL Server 2005  relációs motorjának újdonságai

Index Index partícionáláspartícionálás Ha egy indexHa egy index hasonlóhasonló partíció függvénytpartíció függvényt

használ és ugyanazt a partícionáló kulcsot használ és ugyanazt a partícionáló kulcsot használja, minthasználja, mint az alaptáblaaz alaptábla, , akkor az index akkor az index „illeszkedő” („illeszkedő” (alignedaligned)) 1-11-1 megfelelés az adat és index partíciók közöttmegfelelés az adat és index partíciók között Hasonló:Hasonló:

– Azonos adattípusAzonos adattípus– Azonos számú partícióAzonos számú partíció– Azonos határpontokAzonos határpontok

Index létrehozásakor alapértelmezett az Index létrehozásakor alapértelmezett az illeszkedő indexilleszkedő index

Lehetővé teszi a gyors partícióváltást Lehetővé teszi a gyors partícióváltást ((switch partitionswitch partition))

Page 63: Az SQL Server 2005  relációs motorjának újdonságai

Ha a partícionáló kulcs szerepel Ha a partícionáló kulcs szerepel aa WHERE WHERE záradékban, a végrehajtás kevesebbzáradékban, a végrehajtás kevesebb partíciót partíciót érintérint

Select * from OrderHistory o where …Select * from OrderHistory o where …o.date_key betweeno.date_key between ‘2002-01-01’ and ‘2002-06-30’ ‘2002-01-01’ and ‘2002-06-30’

VigyázatVigyázat: : joinjoin-on keresztül nem tudjuk -on keresztül nem tudjuk szűkíteni az érintett partícók számátszűkíteni az érintett partícók számát

Select * from Sales s INNER JOIN Region d Select * from Sales s INNER JOIN Region d on d.region_id = s.region_id where …on d.region_id = s.region_id where …d.Name = d.Name = ‘Asia’‘Asia’

Partícionált táblák adatainak Partícionált táblák adatainak lekérdezéselekérdezése

Page 64: Az SQL Server 2005  relációs motorjának újdonságai

Műveletek partíciókkalMűveletek partíciókkal

Megosztás - Megosztás - Split PartitionSplit Partition Összefésülés - Összefésülés - Merge PartitionMerge Partition Csere - Csere - Switch PartitionSwitch Partition

Page 65: Az SQL Server 2005  relációs motorjának újdonságai

SplitSplit ALTER PARTITION FUNCTION … SPLIT ALTER PARTITION FUNCTION … SPLIT

RANGE …RANGE … Új határpont felvétele a partíció függvénybenÚj határpont felvétele a partíció függvényben Minden objektumra hat, amelyik a függvényt Minden objektumra hat, amelyik a függvényt

használjahasználja Az új határpont egy partíciót kettéosztAz új határpont egy partíciót kettéoszt Az új partícióba eső adatokat a tároló Az új partícióba eső adatokat a tároló

motor átmozgatja a régi helyükrőlmotor átmozgatja a régi helyükről Azonnal megtörténik, ha a partíció üresAzonnal megtörténik, ha a partíció üres

Partícionált tábla végein célszerű mindig egy Partícionált tábla végein célszerű mindig egy üres partíciót fenntartaniüres partíciót fenntartani

Page 66: Az SQL Server 2005  relációs motorjának újdonságai

MergeMerge ALTER PARTITION FUNCTION … ALTER PARTITION FUNCTION …

MERGE RANGEMERGE RANGE Eltávolít egy határpontot a partíció Eltávolít egy határpontot a partíció

függvénybőlfüggvényből A határpont két oldalán levő partíciók A határpont két oldalán levő partíciók

adatai összemásolódnakadatai összemásolódnak Sok írással, olvasással járó műveletSok írással, olvasással járó művelet Gyors (azonnali) ha a két partíció üresGyors (azonnali) ha a két partíció üres

Page 67: Az SQL Server 2005  relációs motorjának újdonságai

SwitchSwitch FelcseréliFelcseréli a a forrásforrás partíciót, vagy táblátpartíciót, vagy táblát egyegy

másikmásik tábla egy tábla egy üresüres partíciójával, vagy egy partíciójával, vagy egy üresüres táblával ( táblával (célcél))

Tisztán meta-adat műveletTisztán meta-adat művelet MegkötésekMegkötések::

A cél üres kell, hogy legyenA cél üres kell, hogy legyen A forrás és a cél azonos fájlcsoportban legyenA forrás és a cél azonos fájlcsoportban legyen A forráson legyen meg minden index,A forráson legyen meg minden index, amitamit a cél a cél

megkövetelmegkövetel, , illeszkedve,illeszkedve, ésés a megfelelő fájlcsoportona megfelelő fájlcsoporton HaHa a céla cél egy partícióegy partíció, , a forrás táblán legyen olyana forrás táblán legyen olyan

check constraintscheck constraints,, ill. a forrás partícióill. a forrás partíció olyan legyen, olyan legyen, amiami beleillik a cél partíció tartománybabeleillik a cél partíció tartományba

A csereA csere az összes kapcsolódó indexet is az összes kapcsolódó indexet is automatikusan magával visziautomatikusan magával viszi

Page 68: Az SQL Server 2005  relációs motorjának újdonságai

Switch Switch tippektippek Ha táblát cserélünk partícióra, a tábla Ha táblát cserélünk partícióra, a tábla

indexeinek tartalmazni kell a indexeinek tartalmazni kell a partícionáló kulcsotpartícionáló kulcsot CREATE INDEXCREATE INDEX,, INCLUDE INCLUDE opcióopció

AA $partition $partition.<partíció függvény>.<partíció függvény> konstrukciót használjuk az abszolút konstrukciót használjuk az abszolút partíció sorszámok helyettpartíció sorszámok helyett AA partíció sorszámok változhatnakpartíció sorszámok változhatnak

Page 69: Az SQL Server 2005  relációs motorjának újdonságai

CsúszóCsúszó időablak kezelésidőablak kezelésÚj adatok betöltéseÚj adatok betöltése

PartícióPartíció # #11 22 33 44 55

20020022-01-01-01-01 20020033-01-01-01-01 20020044-01-01-01-01 20020055-01-01-01-01

2001 & 2001 & korábbikorábbi

2002 2002 adatokadatok2003 2003 adatokadatok2004 2004 adatokadatok2005 & 2005 & későbbikésőbbi

[[üresüres]] [[üresüres]]

Előkészítő tábla létrehozásaElőkészítő tábla létrehozása Split Split az utolsó partíciónaz utolsó partíción Bulk load Bulk load ésés index index az az

előkészítő táblánelőkészítő táblán SwitchSwitch

[[üresüres]]

20020066-01-01-01-01

2005 2005 adatokadatok2006 & 2006 & későbbikésőbbi

66

2005 Staging 2005 Staging TableTable

Page 70: Az SQL Server 2005  relációs motorjának újdonságai

CsúszóCsúszó időablak kezelésidőablak kezelésA legrégebbi adatok törléseA legrégebbi adatok törlése

PartícióPartíció # #

20020033-01-01-01-01 20020044-01-01-01-01 20020055-01-01-01-01

2003 2003 adatokadatok2004 2004 adatokadatok

Üres tábla létrehozása az Üres tábla létrehozása az eltávolítandó adatok számáraeltávolítandó adatok számára

SwitchSwitch MergeMerge

[[üresüres]]

20020066-01-01-01-01

2005 2005 adatokadatok2006 & 2006 & későbbikésőbbi

2002 2002 adatokadatok

11 22 33 44 55

20020022-01-01-01-01

2001 & 2001 & korábbikorábbi

[[üresüres]]

66

2002 Unload 2002 Unload TableTable

[[üresüres]]

11 22 33 44 55

2002 & 2002 & korábbikorábbi

Page 71: Az SQL Server 2005  relációs motorjának újdonságai

Mentés,Mentés, visszatöltésvisszatöltés A partícionálással kihasználhatjuk az A partícionálással kihasználhatjuk az

SQL Server 2005 új szolgáltatásaitSQL Server 2005 új szolgáltatásait A A Read-Only Read-Only fájlcsoportok a tranzakciónapló fájlcsoportok a tranzakciónapló

visszatöltése nélkül is helyreállíthatókvisszatöltése nélkül is helyreállíthatók

Nem változó, historikus adatok esetén Nem változó, historikus adatok esetén meggyorsítja a mentéstmeggyorsítja a mentést

Page 72: Az SQL Server 2005  relációs motorjának újdonságai

Online Online visszatöltésvisszatöltés

SQL Server 2000SQL Server 2000 Visszatöltés közben az adatbázis offline, Visszatöltés közben az adatbázis offline,

nem használhatónem használható

SQL Server 200SQL Server 20055 Az adatbázisAz adatbázis online online marad marad

– Csak a visszatöltött rész nem elérhetőCsak a visszatöltött rész nem elérhető

Visszatöltés részekbenVisszatöltés részekben– File / Filegroup File / Filegroup visszatöltésvisszatöltés– A megsérült adatlapok követéseA megsérült adatlapok követése ésés lap szintű lap szintű

visszatöltésvisszatöltés

Page 73: Az SQL Server 2005  relációs motorjának újdonságai

ProgramozhatóságProgramozhatóság

ElvárásokElvárások Hatékony fejlesztésHatékony fejlesztés Üzleti logika a Üzleti logika a

kiszolgálónkiszolgálón Kevéssé strukturált Kevéssé strukturált

adatok kezeléseadatok kezelése Együttműködés más Együttműködés más

rendszerekkelrendszerekkel

SQL Server 2005SQL Server 2005 Visual Studio Visual Studio

integrációintegráció CLR függvények, CLR függvények,

eljárások, triggerekeljárások, triggerek XML adattípus kezelés XML adattípus kezelés

a kiszolgálóbana kiszolgálóban Natív http, SOAPNatív http, SOAP Transact-SQL Transact-SQL

továbbfejlesztésektovábbfejlesztések

Page 74: Az SQL Server 2005  relációs motorjának újdonságai

.NET .NET ésés Visual Studio Visual Studio integrációintegráció Programozási nyelvek választékaProgramozási nyelvek választéka

T-SQL T-SQL a halmaz-orientált adatkezelésrea halmaz-orientált adatkezelésre .NET .NET nyelvek a procedurális algoritmusokranyelvek a procedurális algoritmusokra

Az üzleti logika helye választhatóAz üzleti logika helye választható Adatbázis, középső réteg, ügyfél oldalAdatbázis, középső réteg, ügyfél oldal Ugyanaz a modul, ugyanaz az adatelérési felület (ADO.Net)Ugyanaz a modul, ugyanaz az adatelérési felület (ADO.Net)

Integrált hibakeresésIntegrált hibakeresés Különböző nyelveken keresztülKülönböző nyelveken keresztül – TSQL – TSQL ésés .NET .NET

Rugalmas, bővíthető kódRugalmas, bővíthető kód Függvények, tárolt eljárások, triggerek Függvények, tárolt eljárások, triggerek

– SQL-ben, vagy .Net nyelven– SQL-ben, vagy .Net nyelven Felhasználói adattípusok, aggregátumokFelhasználói adattípusok, aggregátumok XML XML adattípusadattípus

Page 75: Az SQL Server 2005  relációs motorjának újdonságai

ÜzletiÜzleti logika megvalósítása a logika megvalósítása a kiszolgálón - CLRkiszolgálón - CLR Függvények, tárolt eljárások, triggerek -Függvények, tárolt eljárások, triggerek - tetszőlegestetszőleges

CLR CLR nyelvennyelven Számításigényes algoritmusokat procedurális nyelvekben Számításigényes algoritmusokat procedurális nyelvekben

könnyebb megírni és a kapott kód gyorsabban fut, mint ugyanaz könnyebb megírni és a kapott kód gyorsabban fut, mint ugyanaz Transact-SQL-benTransact-SQL-ben

AA Transact-SQL (T-SQL) Transact-SQL (T-SQL) beépített függvényeinek beépített függvényeinek kiterjesztésekiterjesztése

Célterület:Célterület: Számításigényes, procedurális logika az adatbázis rétegbenSzámításigényes, procedurális logika az adatbázis rétegben Sok adatelérést végző logika a középső rétegben Sok adatelérést végző logika a középső rétegben SQL Server SQL Server Nem (csak) SQL Server API-kat használó modulokNem (csak) SQL Server API-kat használó modulok Külső erőforrások eléréseKülső erőforrások elérése

Page 76: Az SQL Server 2005  relációs motorjának újdonságai

VS .NET VS .NET ProjectProject

Assembly: “MyLib.dll”

VB,C#,C++VB,C#,C++ BuildBuild

SQL ServerSQL Server

SQL Data Definition:SQL Data Definition: create assembly … create function … create procedure … create trigger … create type …SQL SQL lekérdezéslekérdezés: :

select dbo.függvény(paraméter)

CLR runtime SQL Server (in-process)

A fejlesztés meneteA fejlesztés menete

Page 77: Az SQL Server 2005  relációs motorjának újdonságai

FüggvényekFüggvények

SkalárisSkaláris Tábla-értékűTábla-értékű

Page 78: Az SQL Server 2005  relációs motorjának újdonságai

Skaláris Skaláris CLR CLR függvényekfüggvények

EgyEgy .NET Framework assembly .NET Framework assembly egy egy osztályának metódusaiosztályának metódusai

A visszatérési érték A visszatérési érték Csak skaláris (Csak skaláris (UnicodeUnicode)) lehetlehet Nem lehet:Nem lehet: rowversion, text, ntext, image rowversion, text, ntext, image A visszaadott .Net adattípusnak illeszkednie kell A visszaadott .Net adattípusnak illeszkednie kell

egyegy SQL Server SQL Server adattípushozadattípushoz Testre szabott attribútumok használhatókTestre szabott attribútumok használhatók

[[SqlFunction(SqlFunction(attribútumokattribútumok)])]

Page 79: Az SQL Server 2005  relációs motorjának újdonságai

demó

Skaláris CLR függvény készítéseSkaláris CLR függvény készítése

Page 80: Az SQL Server 2005  relációs motorjának újdonságai

A skalárisA skaláris függvények függvények attribútumaiattribútumai SqlFunction[(SqlFunction[(függvény-attribútumfüggvény-attribútum [,...])] [,...])]

IsDeterministicIsDeterministic= {true | = {true | falsefalse}} DataAccessDataAccess = { DataAccessKind.None | = { DataAccessKind.None |

DataAccessKind.Read }DataAccessKind.Read }– Felhasználói táblák eléréseFelhasználói táblák elérése

SystemDataAccessSystemDataAccess = = { SystemDataAccessKind.None | { SystemDataAccessKind.None | SystemDataAccessKind.Readread }SystemDataAccessKind.Readread }– Rendszer katalógusok, nézetek eléréseRendszer katalógusok, nézetek elérése

IsPreciseIsPrecise = { true | false } = { true | false }

Page 81: Az SQL Server 2005  relációs motorjának újdonságai

A skalárisA skaláris függvények függvények attribútumai - példaattribútumai - példa[SqlFunctionSqlFunction(IsDeterministic = true, IsPrecise = true)]

public static SqlString ExtractAreaCode(string s)

{

Regex r1 = new Regex("\\((?<ac>[1-9][0-9]+)\\)");

Match m = r1.Match(s);

if (m.Success)

return m.Value.Substring(1, m.Length-2);

else return SqlString.Null;

}

Page 82: Az SQL Server 2005  relációs motorjának újdonságai

Számított oszlop CLR Számított oszlop CLR függvénnyelfüggvénnyel A CLR skaláris függvényeket A CLR skaláris függvényeket

felhasználhatjuk számított oszlopok felhasználhatjuk számított oszlopok létrehozásáralétrehozására A A PERSISTEDPERSISTED kulcsszóval előírhatjuk a kulcsszóval előírhatjuk a

számított oszlop tárolásátszámított oszlop tárolását

CLR függvénnyel készített számított CLR függvénnyel készített számított oszlopraoszlopra akkor készíthető index, haakkor készíthető index, ha determinisztikusdeterminisztikus, , nem végez adathozzáféréstnem végez adathozzáférést PERSISTEDPERSISTED (tárolt) (tárolt)

Page 83: Az SQL Server 2005  relációs motorjának újdonságai

Index számított oszlopon - példaIndex számított oszlopon - példa

create table Contacts (

Fname nvarchar(30),

Lname nvarchar(30),

PhoneNo nvarchar(30),

AreaCode AS dbo.ExtractAreaCode(PhoneNo) PERSISTED)

go

create index ContactAreaCode ON Contacts(AreaCode)

Page 84: Az SQL Server 2005  relációs motorjának újdonságai

Tábla értékűTábla értékű függvényekfüggvények A függvény értéke táblaként használhatóA függvény értéke táblaként használható A tábla értékű függvény adatainak A tábla értékű függvény adatainak

eléréseelérése T-SQL függvény esetén: T-SQL függvény esetén:

belső munkatáblán keresztül (belső munkatáblán keresztül (spooledspooled)) CLR függvény esetén: adatfolyam (CLR függvény esetén: adatfolyam (streamedstreamed))

– Nem kell bevárni az egész adathalmaz elkészültét a Nem kell bevárni az egész adathalmaz elkészültét a feldolgozássalfeldolgozással

A függvénynek implementálni kell az A függvénynek implementálni kell az ISqlReaderISqlReader interfészt interfészt

Page 85: Az SQL Server 2005  relációs motorjának újdonságai

demó

Tábla értékű CLR függvény készítéseTábla értékű CLR függvény készítése

Page 86: Az SQL Server 2005  relációs motorjának újdonságai

CLR tárolt eljárásokCLR tárolt eljárások A függvényekkel ellentétben:A függvényekkel ellentétben:

Végezhetnek adat definíciós Végezhetnek adat definíciós (DDL(DDL) és) és adat adat módosítómódosító (DML) (DML) műveleteketműveleteket

Küldhetnek eredményeket a kliens oldalraKüldhetnek eredményeket a kliens oldalra Felhasználási területFelhasználási terület

A A CLR CLR előnyös, haelőnyös, ha::– Sok számítást végzünk az adatokonSok számítást végzünk az adatokon– A korábbi verziókban használt kiterjesztett tárolt A korábbi verziókban használt kiterjesztett tárolt

eljárások (eljárások (Extended Stored ProceduresExtended Stored Procedures) helyett) helyett Halmaz műveletekre változatlanul az Halmaz műveletekre változatlanul az SQL SQL aa

legjobblegjobb

Page 87: Az SQL Server 2005  relációs motorjának újdonságai

AdatelérésAdatelérés CLR CLR tárolt eljárásból tárolt eljárásból In-process adatelérésre optimalizált In-process adatelérésre optimalizált ADO.NET ADO.NET

szolgáltatószolgáltató System.Data.SqlServer System.Data.SqlServer névtérnévtér A programozási modell alapvetően megfelel azA programozási modell alapvetően megfelel az

SqlClientSqlClient-nek-nek SqlConnection, SqlCommand, SqlReader, SqlConnection, SqlCommand, SqlReader,

SqlParameterSqlParameter

BővítményekBővítmények SqlContextSqlContext

– SqlPipeSqlPipe – eredmények küldése a kliens felé – eredmények küldése a kliens felé

– SqlTriggerContex – a triggerek számáraSqlTriggerContex – a triggerek számára

Page 88: Az SQL Server 2005  relációs motorjának újdonságai

CLR CLR adatmódosítás példaadatmódosítás példa

using System.Data.SqlServer;

SqlConnection cn = SqlContext.GetConnection();

SqlCommand cmd = cn.CreateCommand();

cmd.CommandText = “UPDATE Emp SET photo = @img” +

“WHERE EmpId=10”;

SqlParameter param1 = cmd.Parameters.Add(“@img”, SqlDbType.VarBinary, SqlMetadata.Max);

param1.Value = img;

cmd.ExecuteNonQuery();

Page 89: Az SQL Server 2005  relációs motorjának újdonságai

Eredményhalmaz küldéseEredményhalmaz küldése SqlPipe SqlPipe - - Send Send metódusmetódus ((overloadedoverloaded)): :

void Send(string message)void Send(string message)– T-SQL: printT-SQL: print

void Send(SqlDataReader reader)void Send(SqlDataReader reader)– Több soros eredményhalmazTöbb soros eredményhalmaz

void Send(SqlDataRecord record)void Send(SqlDataRecord record)– Egy soros eredményhalmazEgy soros eredményhalmaz

Adatbázis lekérdezés eredménye a kliensreAdatbázis lekérdezés eredménye a kliensre:: SqlPipe.Execute(SqlCommand)SqlPipe.Execute(SqlCommand)

SqlCommand cmd = SqlContext.GetCommand(); cmd.CommandText = "select @@version"; SqlContext.GetPipe().Execute(cmd);

Page 90: Az SQL Server 2005  relációs motorjának újdonságai

Eredményhalmaz küldése (2)Eredményhalmaz küldése (2)

Előzőleg végrehajtott lekérdezés Előzőleg végrehajtott lekérdezés eredményének elküldéseküldéseeredményének elküldéseküldésepublic static void SendReaderToClient() { SqlCommand cmd = SqlContext.GetCommand(); cmd.CommandText = "select @@version"; ISqlReader rdr = cmd.ExecuteReader(); using (rdr) { SqlContext.GetPipe().Send(rdr); } }

Page 91: Az SQL Server 2005  relációs motorjának újdonságai

Dinamikusan összeállított eredményhalmazDinamikusan összeállított eredményhalmaz//oszlop meta-adatok létrehozása SqlMetaData[] columnSchema = new SqlMetaData[] { new SqlMetaData("stringcol", SqlDbType.NVarChar, 128) }; //sor meta-adatok létrehozása SqlMetaData tableSchema = new SqlMetaData("row",SqlDbType.Row,columnSchema); //rekord létrehozás ISqlUpdatableRecord newRecord = SqlContext.GetConnection().CreateRecord(tableSchema); //rekord oszlopainak feltöltésenewRecord.SetSqlString(0, "Hello World!"); //rekord elküldés SqlContext.GetPipe().SendResultsStart(newRecord, true /*sending row*/); //a küldés befejezése SqlContext.GetPipe().SendResultsEnd();

Page 92: Az SQL Server 2005  relációs motorjának újdonságai

TriggerekTriggerek

DML DML ésés DDL DDL triggerektriggerek is készíthetőkis készíthetők CLRCLR-ben-ben

A triggerek aA triggerek a TriggerContext TriggerContext objektumon objektumon keresztül érikkeresztül érik el a módosításra vonatkozó el a módosításra vonatkozó információkatinformációkat

Page 93: Az SQL Server 2005  relációs motorjának újdonságai

Trigger ADO.NET Trigger ADO.NET bővítményekbővítmények

SqlContext.GetTriggerContext()SqlContext.GetTriggerContext() bool [bool [ ] ColumnsUpdated: ] ColumnsUpdated:

– T-SQLT-SQL:: ColumnsUpdated() ColumnsUpdated()

TriggerAction: TriggerAction: a triggert elindító műveleta triggert elindító művelet

tc =SqlContext.GetTriggerContext();

if (tc.TriggerAction == TriggerAction.Update)

LogDirectUpdate(…);

Page 94: Az SQL Server 2005  relációs motorjának újdonságai

Felhasználási javaslatokFelhasználási javaslatok A A CLR CLR nem a Transact-SQL helyett vannem a Transact-SQL helyett van A CLR modulok lehetővé teszik A CLR modulok lehetővé teszik

Komplex, procedurális üzleti logika megvalósításátKomplex, procedurális üzleti logika megvalósítását Külső adatok elérésétKülső adatok elérését Az üzleti logika SQL Serverben történő megvalósításátAz üzleti logika SQL Serverben történő megvalósítását

Nem „kötelező” minden üzleti logikát Nem „kötelező” minden üzleti logikát kiszolgálóban megvalósítanikiszolgálóban megvalósítani Skálázhatósági megfontolásokSkálázhatósági megfontolások

Page 95: Az SQL Server 2005  relációs motorjának újdonságai

XML kezelésXML kezelés

XML támogatás az SQL Server 2000-benXML támogatás az SQL Server 2000-ben

XML XML támogatástámogatás azaz SQL Server 2005 SQL Server 2005-ben-ben Beépül az adatbázis-motorbaBeépül az adatbázis-motorba

– XML XML adattípusadattípus, XML , XML manipulációmanipuláció, XML , XML indexekindexek, , XML XML sémáksémák

XML adat-manipuláció a kiszolgálónXML adat-manipuláció a kiszolgálón

Page 96: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2000 –SQL Server 2000 – kiszolgáló kiszolgálóXML be és XML kiXML be és XML ki

sp_xml_preparedocumentsp_xml_preparedocument

OpenXMLOpenXML

XMLXML DOMDOM

…………

……

……

PhonePhoneIDIDnamename

insert into …insert into …

TableTable

TableTable

TableTable

XML dataXML data ParseParse

11 22

33

44

selectselect … … for xml … for xml …55

Page 97: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2000SQL Server 2000 – középső réteg – középső rétegXML XML nézeteknézetek Annotált leképező sémák (XDR, XSD)Annotált leképező sémák (XDR, XSD) SQLXML 3.0 SP2SQLXML 3.0 SP2

PhonePhoneAddressAddressLast NameLast NameFirst NameFirst Name

BulBulkk

loadload

PersonPerson

AddressAddressLNLN PhonePhoneFNFN

LekérdezésLekérdezés,,updategramupdategramXML ViewXML View

3322

11

Page 98: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2005 SQL Server 2005 XML XML a relációs adatbázisbana relációs adatbázisban

XML adattípusXML adattípus Oszlop, változó, …Oszlop, változó, … Típus nélküli, és/vagy séma gyűjteménnyel ellenőrzöttTípus nélküli, és/vagy séma gyűjteménnyel ellenőrzött Ellenőrzések (Ellenőrzések (constraintconstraint-ek) XML adatokon-ek) XML adatokon Bináris, vagy szöveges tárolás (max. 2GB)Bináris, vagy szöveges tárolás (max. 2GB)

XML XML adatok lekérdezése és módosításaadatok lekérdezése és módosítása XQuery (fejlődő W3C szabvány), XPath 2.0XQuery (fejlődő W3C szabvány), XPath 2.0

Indexek XML oszlopokonIndexek XML oszlopokon Elsődleges XML index: B+ fa minden címkén, értéken és Elsődleges XML index: B+ fa minden címkén, értéken és

ösvényenösvényen Másodlagos XML indexek (PATH, PROPERTY, VALUE)Másodlagos XML indexek (PATH, PROPERTY, VALUE)

Page 99: Az SQL Server 2005  relációs motorjának újdonságai

SQL Server 2005 SQL Server 2005 A relációsA relációs ésés XML XML adatok integrációjaadatok integrációja Egységes relációs ésEgységes relációs és XML XML tárolótároló

A meglevőA meglevő SQL SQL Server tároló motorServer tároló motor ésés lekérdezés optimalizáló lekérdezés optimalizáló felhasználásávalfelhasználásával

A relációs és az XML záradékok ugyanabba az optimalizált A relációs és az XML záradékok ugyanabba az optimalizált lekérdezési tervbe kerülneklekérdezési tervbe kerülnek

Az integrált XML adattípus előnyeiAz integrált XML adattípus előnyei Kevéssé strukturált adatok modellezéseKevéssé strukturált adatok modellezése A táblákra bontás, ill. újra összekapcsolás költsége eltűnikA táblákra bontás, ill. újra összekapcsolás költsége eltűnik AzAz XML XML feldolgozást az SQL Server optimalizáljafeldolgozást az SQL Server optimalizálja A meglevő relációs táblákba beilleszthető XML oszlopok nem A meglevő relációs táblákba beilleszthető XML oszlopok nem

igénylik a működő alkalmazások módosításátigénylik a működő alkalmazások módosítását

Page 100: Az SQL Server 2005  relációs motorjának újdonságai

Kiszolgáló oldali XML támogatásKiszolgáló oldali XML támogatás TárolásTárolás

XML adattípus, varchar(max), varbinary(max)XML adattípus, varchar(max), varbinary(max) Táblákra bontásTáblákra bontás

openXMLopenXML() és() és XML metódusokXML metódusok

– query() query() –– XML XML dokumentum egy részének előállításadokumentum egy részének előállítása– value() value() – skaláris érték kiolvasása– skaláris érték kiolvasása– existexist() – létezés vizsgálata() – létezés vizsgálata– nodesnodes() – csomópontok keresése az XML () – csomópontok keresése az XML

dokumentumbandokumentumban– modifymodify() – () – XML XML dokumentum egy részének dokumentum egy részének

módosításamódosítása

Page 101: Az SQL Server 2005  relációs motorjának újdonságai

Kiszolgáló oldali XML támogatás (2)Kiszolgáló oldali XML támogatás (2) IndexelésIndexelés

XML indexekXML indexek Full-text index az elemek tartalmáraFull-text index az elemek tartalmára

LekérdezésLekérdezés for xml … [type]for xml … [type] XQuery, XPathXQuery, XPath

XSD támogatásXSD támogatás CREATE XML SCHEMA COLLECTIONCREATE XML SCHEMA COLLECTION

CLR támogatásCLR támogatás System.Xml névtér eszközeiSystem.Xml névtér eszközei

Page 102: Az SQL Server 2005  relációs motorjának újdonságai

Eszközök az XML dokumentumok Eszközök az XML dokumentumok kezeléséhezkezeléséhez XML XML szerkesztőszerkesztő SQL ServerSQL Server Management Management

StudioStudio-ban-ban Integration Integration ServicesServices

XML XML dokumentumdokumentum táblákra bontásatáblákra bontása XML XML dokumentumdokumentum XML XML oszlopokban történő oszlopokban történő

tárolásatárolása

Page 103: Az SQL Server 2005  relációs motorjának újdonságai

Adatmodellezési javaslatokAdatmodellezési javaslatok Strukturált adatok, ismert sémaStrukturált adatok, ismert séma relációs relációs

modellmodell Bevált, ismert technológiaBevált, ismert technológia EsetlegEsetleg [n]varchar(max) [n]varchar(max) oszlopok a tárolásra, ha nem oszlopok a tárolásra, ha nem

akarjuk manipulálni a dokumentumot a kiszolgálónakarjuk manipulálni a dokumentumot a kiszolgálón XML XML adattípusadattípus

Egyszerű adatkezelés kevéssé strukturált adatok Egyszerű adatkezelés kevéssé strukturált adatok eseténesetén

Jobb teljesítmény, mintha felbontanánk és újra Jobb teljesítmény, mintha felbontanánk és újra összeállítanánk a komplex XML dokumentumokatösszeállítanánk a komplex XML dokumentumokat

Egyszerű migráció text típusú oszlopról:Egyszerű migráció text típusú oszlopról: ALTER TABLE <ALTER TABLE <táblatábla>>

ALTER COLUMN <ALTER COLUMN <oszloposzlop> XML [XML schema > XML [XML schema collection]collection]

Page 104: Az SQL Server 2005  relációs motorjának újdonságai

XML kezelés összefoglalásXML kezelés összefoglalás

Gyengén strukturáltGyengén strukturált adatok kezeléseadatok kezelése NatívNatív XML XML adattípusadattípus FejlettFejlett indexelésindexelés & & lekérdezés optimalizáláslekérdezés optimalizálás Modern Modern programozási nyelv a kiszolgálónprogramozási nyelv a kiszolgálón

Az Az XML XML támogatás beépül a relációs támogatás beépül a relációs tárolóba és a lekérdezés optimalizálóbatárolóba és a lekérdezés optimalizálóba

Az SQL Server eszközei használhatókAz SQL Server eszközei használhatók hibakereséshibakeresés, , lekérdezési tervek, nyomkövetéslekérdezési tervek, nyomkövetés

– – a meglevő eszközökkela meglevő eszközökkel

Page 105: Az SQL Server 2005  relációs motorjának újdonságai

Transact-SQL újdonságokTransact-SQL újdonságok LekérdezésekLekérdezések

Rekurzív lekérdezésekRekurzív lekérdezések Rang függvényekRang függvények Új relációs operátorokÚj relációs operátorok Adatmódosítás – output záradékkelAdatmódosítás – output záradékkel Teljes-szöveges keresésTeljes-szöveges keresés

Új adattípusokÚj adattípusok T-SQLT-SQL procedurális bővítmények procedurális bővítmények

Page 106: Az SQL Server 2005  relációs motorjának újdonságai

Common Table Expression (CTE) Common Table Expression (CTE) ésés rekurzív lekérdezésekrekurzív lekérdezések

Rekurzív hierarchia bejárása egyetlen Rekurzív hierarchia bejárása egyetlen lekérdezéssellekérdezéssel

FelhasználásFelhasználás Hierarchia egy táblábanHierarchia egy táblában ( (főnök-főnök-

beosztottbeosztott, , alkatrészek beépülésealkatrészek beépülése)) Keressük egy főnök összes beosztottjátKeressük egy főnök összes beosztottját Keressük egy termék beépülő alkatrészeitKeressük egy termék beépülő alkatrészeit

Page 107: Az SQL Server 2005  relációs motorjának újdonságai

Common Table ExpressionCommon Table Expression SQL-99SQL-99 Szintaxis:Szintaxis:

WITH WITH <<CTECTE Név Név>> ( < ( <oszlop listaoszlop lista> )> )ASAS( ( <CTE<CTE definíció definíció>> ))SELECT SELECT … FROM …… FROM … <CTE <CTE NévNév> >

Lehet rekurzívLehet rekurzív és nem rekurzívés nem rekurzív Nem rekurzív CTENem rekurzív CTE::

Olvashatóbb lekérdezésekOlvashatóbb lekérdezések

Page 108: Az SQL Server 2005  relációs motorjának újdonságai

RekurzívRekurzív CTE CTE

Önmagára hivatkozikÖnmagára hivatkozik RekurzívRekurzív CTE CTE definíció: definíció:

<<nemnem--rekurzívrekurzív SELECT> SELECT>

UNION ALLUNION ALL

<SELECT <SELECT aa CTE CTE felhasználásával felhasználásával>>

A rekurzió megáll, ha a második A rekurzió megáll, ha a második SELECT nem ad eredménytSELECT nem ad eredményt

inicializálás

gyűjtés

Page 109: Az SQL Server 2005  relációs motorjának újdonságai

Rekurzív CTE példaRekurzív CTE példaWITH EmpCTE(ID, Név, Mgr, Szint)WITH EmpCTE(ID, Név, Mgr, Szint)ASAS( ( SELECT EmployeeID, FirstName+' '+LastName,SELECT EmployeeID, FirstName+' '+LastName,

ReportsTo, 1ReportsTo, 1 FROM EmployeesFROM Employees WHERE ReportsTo is nullWHERE ReportsTo is null UNION ALLUNION ALL SELECT E.EmployeeID, E.FirstName+' '+SELECT E.EmployeeID, E.FirstName+' '+

E.LastName, E.ReportsTo, E.LastName, E.ReportsTo, M.M.Szint+1Szint+1 FROM Employees AS E JOIN EmpCTE AS MFROM Employees AS E JOIN EmpCTE AS M ON E.ReportsTo = M.IDON E.ReportsTo = M.ID))SELECT * FROM EmpCTESELECT * FROM EmpCTE

Northwind adatbázisNorthwind adatbázis

Page 110: Az SQL Server 2005  relációs motorjának újdonságai

Rang és sorszámRang és sorszám függvényekfüggvények AzAz SQL-99 OLAP SQL-99 OLAP bővítmények szerintbővítmények szerint

RANK()RANK() DENSE_RANK()DENSE_RANK() NTILE(<expression>) NTILE(<expression>) ROW_NUMBER() ROW_NUMBER()

SzintaxisSzintaxis

<<ranrangg__függvényfüggvény> >

OVER( [PARTITION BY <OVER( [PARTITION BY <oszloposzlop>] >]

ORDER BY <ORDER BY <oszloposzlop>>))

Page 111: Az SQL Server 2005  relációs motorjának újdonságai

Rang és sorszám használataRang és sorszám használata AdatelemzésAdatelemzés (RANK, DENSE_RANK, (RANK, DENSE_RANK,

NTILE)NTILE) SorrendeketSorrendeket generálhatunk különböző generálhatunk különböző

kritériumok szerint, egyetlen lekérdezésbenkritériumok szerint, egyetlen lekérdezésben A megjelenítés sorrendje eltérhet a rangoktólA megjelenítés sorrendje eltérhet a rangoktól

Lapozás aLapozás a ROW_NUMBER ROW_NUMBER segítségével segítségével Nagyobb eredményhalmaz megjelenítéseNagyobb eredményhalmaz megjelenítése

Page 112: Az SQL Server 2005  relációs motorjának újdonságai

Rang példaRang példa

select ProductName,select ProductName, sum(Quantity),sum(Quantity), rank() over rank() over

(order by sum( Quantity) desc),(order by sum( Quantity) desc),rank() overrank() over

(order by max(od.UnitPrice))(order by max(od.UnitPrice))from dbo.Products pfrom dbo.Products pjoin dbo.[Order Details] od on join dbo.[Order Details] od on

p.ProductID=od.ProductIDp.ProductID=od.ProductIDjoin dbo.Orders o on join dbo.Orders o on

od.OrderID=o.OrderIDod.OrderID=o.OrderIDgroup by ProductNamegroup by ProductNameorder by ProductNameorder by ProductName

A termékek rangjának lekérdezése eladott darabszám és egységár szerint

Northwind adatbázisNorthwind adatbázis

Page 113: Az SQL Server 2005  relációs motorjának újdonságai

Sorszámozás példaSorszámozás példaselect N=row_number() overselect N=row_number() over

(order by CustomerID) , *(order by CustomerID) , *from dbo.Ordersfrom dbo.Orders

Northwind adatbázisNorthwind adatbázis

Page 114: Az SQL Server 2005  relációs motorjának újdonságai

TOPTOP SQL 2000SQL 2000: SELECT TOP <: SELECT TOP <konstanskonstans>> SQL 2005SQL 2005: SELECT TOP (<: SELECT TOP (<kifejezéskifejezés>)>)

INSERT, UPDATE, DELETEINSERT, UPDATE, DELETE esetén is esetén is használhatóhasználható

A SET ROWCOUNT is használhatóA SET ROWCOUNT is használható– a SELECT utasítás esetén felülbírálja a TOP-ota SELECT utasítás esetén felülbírálja a TOP-ot– INSERT, UPDATE, DELETE esetén a TOP INSERT, UPDATE, DELETE esetén a TOP

felülbírálja a SET ROWCOUNT-otfelülbírálja a SET ROWCOUNT-ot– A következő verzióban (A következő verzióban () a SET ROWCOUNT ) a SET ROWCOUNT

nem fog hatni INSERT, UPDATE, DELETE esetén nem fog hatni INSERT, UPDATE, DELETE esetén

Page 115: Az SQL Server 2005  relációs motorjának újdonságai

Új relációs operátorokÚj relációs operátorok PIVOTPIVOT, , UNPIVOTUNPIVOT, , APPLYAPPLY PIVOTPIVOT

Sorokból oszlopokat készítSorokból oszlopokat készít Hasonló azHasonló az Access TRANSFORM Access TRANSFORM-hoz-hoz

UNPIVOTUNPIVOT AA PIVOT PIVOT ellentéte ellentéte

APPLYAPPLY A külső tábla minden sorára kiértékel egy A külső tábla minden sorára kiértékel egy

tábla értékűtábla értékű függvényt és a két táblát függvényt és a két táblát összekapcsoljaösszekapcsolja

Page 116: Az SQL Server 2005  relációs motorjának újdonságai

PIVOT példa, összegzésPIVOT példa, összegzés

MakeMake YearYear SalesSales

HondaHonda 19901990 20002000

AcuraAcura 19901990 500500

HondaHonda 19911991 30003000

AcuraAcura 19911991 600600

SELECT *SELECT *FROM T PIVOT(SUM(FROM T PIVOT(SUM(SalesSales) )

FOR FOR YearYear IN IN ([1990], ([1990],

[1991])) t[1991])) t

MakeMake 19901990 19911991

HondaHonda 20002000 30003000

AcuraAcura 500500 600600

Page 117: Az SQL Server 2005  relációs motorjának újdonságai

PIVOT példa, név-érték párosításPIVOT példa, név-érték párosítás

SELECT *SELECT *

FROM tableFROM table PIVOT(MIN(PIVOT(MIN(PropValPropVal) ) FOR FOR PropNamePropName IN IN ([Name],[Author])) t([Name],[Author])) t

ObjIDObjID PropNamePropName PropValPropVal

11 NameName x.docx.doc

11 CrDateCrDate 12/3/200112/3/2001

22 NameName Sales.xlsSales.xls

22 AuthorAuthor HigginsHiggins

ObjIDObjID NameName AuthorAuthor

11 xx.doc.doc NULLNULL

22 Sales.xlsSales.xls HigginsHiggins

Page 118: Az SQL Server 2005  relációs motorjának újdonságai

DML DML utasításutasítás OUTPUT OUTPUT záradékkal záradékkal Az adatmódosító utasítás részeként sorokat Az adatmódosító utasítás részeként sorokat

tudunk visszaadni egy tábla változóbatudunk visszaadni egy tábla változóba AzAz InsertedInserted ésés DeletedDeleted virtuális táblák virtuális táblák

tartalmazzák a régi és új értékekettartalmazzák a régi és új értékeket

Példa:Példa:

UPDATE OrdersUPDATE OrdersSET status= SET status= ''processedprocessed''OUTPUT DELETED.*, INSERTED.* OUTPUT DELETED.*, INSERTED.* into @tabinto @tabWHERE statusWHERE status='un='unprocessedprocessed''

Page 119: Az SQL Server 2005  relációs motorjának újdonságai

Full-Text Full-Text indexelésindexelés

Skálázhatóság, teljesítménySkálázhatóság, teljesítmény Az index felépítése egy nagyságrenddel Az index felépítése egy nagyságrenddel

gyorsabbgyorsabb A lekérdezésekA lekérdezések 30-50% 30-50%-kal gyorsabbak-kal gyorsabbak

Page 120: Az SQL Server 2005  relációs motorjának újdonságai

Full-Text Full-Text -- újdonságokújdonságok

Thesaurus Thesaurus támogatástámogatás Több oszlopos lekérdezésekTöbb oszlopos lekérdezések

CONTAINS((col1,col2), ‘Yukon’)CONTAINS((col1,col2), ‘Yukon’)

Jobb nyelv támogatásJobb nyelv támogatás Konfigurálható ékezetfüggőségKonfigurálható ékezetfüggőség Elosztott lekérdezésekElosztott lekérdezések::

Fulltext Fulltext lekérdezés kapcsolt kiszolgálóralekérdezés kapcsolt kiszolgálóra

Indexelt nézetek támogatásaIndexelt nézetek támogatása

Page 121: Az SQL Server 2005  relációs motorjának újdonságai

FullFull-T-Text ext - adminisztráció- adminisztráció Az adatbázis mentés a full-text Az adatbázis mentés a full-text

katalógusokat is tartalmazzakatalógusokat is tartalmazza Adatbázis detach/attach a full-text Adatbázis detach/attach a full-text

katalógusokat is mozgatjakatalógusokat is mozgatja Példány szintű erőforrásPéldány szintű erőforrás ( (nincsenek nincsenek

megosztott komponensekmegosztott komponensek) ) Az Az MS Search MS Search azaz SQL Server SQL Server

biztonsági kontextusában futbiztonsági kontextusában fut

Page 122: Az SQL Server 2005  relációs motorjának újdonságai

Varchar(max)Varchar(max) AA varchar, nvarchar, varbinary varchar, nvarchar, varbinary

kiterjesztésekiterjesztése 2GB 2GB méretig méretigcreate tablecreate table T T (Id int,(Id int, Picvarbinary(max))Picvarbinary(max))

AA text/ntext/image text/ntext/image alternatívája alternatívája Minden string függvény működik a Minden string függvény működik a

varchar(max)-onvarchar(max)-on Az UPDATE támogatja a darabolástAz UPDATE támogatja a darabolást

UPDATE UPDATE T T SET Picture.Write(@newchunk, SET Picture.Write(@newchunk, @offset, @remove)@offset, @remove)

Page 123: Az SQL Server 2005  relációs motorjának újdonságai

DDL DDL triggerektriggerek Adatszerkezet módosításra induló Adatszerkezet módosításra induló

triggerektriggerek Minden DDL eseményreMinden DDL eseményre

CREATE_TABLE, ALTER_PROCEDURE, CREATE_TABLE, ALTER_PROCEDURE, DROP_LOGIN, DROP_LOGIN, stbstb..

Adatbázis és kiszolgáló szintenAdatbázis és kiszolgáló szinten Az esemény adatait aAz esemény adatait a trigger trigger azaz

eventdata() eventdata() függvényen keresztül éri elfüggvényen keresztül éri el

Page 124: Az SQL Server 2005  relációs motorjának újdonságai

A A DDL DDL triggerek felhasználásatriggerek felhasználása Fejlesztési szabályok érvényesítéseFejlesztési szabályok érvényesítése

CREATE/ALTER CREATE/ALTER visszagörgetésevisszagörgetése

Véletlen objektum eldobás Véletlen objektum eldobás megakadályozásamegakadályozása

Objektum Objektum checkin/checkoutcheckin/checkout Forrás verziózásForrás verziózás Az adatbázis menedzsment naplózásaAz adatbázis menedzsment naplózása

Page 125: Az SQL Server 2005  relációs motorjának újdonságai

Kivételkezelés Kivételkezelés

Az Az “if @@error” “if @@error” kód helyettkód helyett Szintaxis:Szintaxis:

BEGIN TRY

<utasítások>

END TRY

BEGIN CATCH

<kivételkezelés>

END CATCH

Page 126: Az SQL Server 2005  relációs motorjának újdonságai

Kivételkezelés - tranzakcióKivételkezelés - tranzakció Tranzakció abortáló kivételek esetén aTranzakció abortáló kivételek esetén a

tranzakciótranzakció „haldokló”„haldokló” állapotban marad egy állapotban marad egy explicit „rollback” kiadásáigexplicit „rollback” kiadásáig Haldokló tranzakcióban naplózott műveletek Haldokló tranzakcióban naplózott műveletek

nem végezhetőknem végezhetők A kivételkezelés többnyire rollback-kel A kivételkezelés többnyire rollback-kel

kezdődikkezdődik Új függvények aÚj függvények a hibakódhibakód, , hibaüzenethibaüzenet, ,

súlyosságsúlyosság elérésére aelérésére a CATCH CATCH blokkbanblokkban Újra lehet dobni az eredeti kivételtÚjra lehet dobni az eredeti kivételt

Page 127: Az SQL Server 2005  relációs motorjának újdonságai

Tranzakció abort példaTranzakció abort példa

CREATECREATE PROCEDUREPROCEDURE add_to_T1 @a add_to_T1 @a int,int, @b @b nvarchar(nvarchar(10001000))ASASdeclaredeclare @error_msg @error_msg nvarchar(nvarchar(400400),), @error_num @error_num int,int, @error_severity @error_severity intintBEGINBEGIN TRYTRY          BEGINBEGIN TRANTRAN                    ----idegen kulcs megsértés hibaidegen kulcs megsértés hiba                    INSERTINSERT T1 T1 VALUESVALUES ((@a@a,, @b @b))          COMMITCOMMIT TRANTRANENDEND TRYTRYBEGINBEGIN CATCHCATCH          ROLLBACKROLLBACK          INSERTINSERT T1_Log T1_Log VALUESVALUES ((@a@a,, @b @b,, GETDATE())GETDATE())          SELECTSELECT @error_msg @error_msg==error_messageerror_message(),(), @error_num @error_num==error_numbererror_number(),(),

@error_severity@error_severity==error_severityerror_severity()()          RAISERRORRAISERROR ((@error_msg@error_msg,, @error_num @error_num,, @error_severity @error_severity))ENDEND CATCHCATCH

Page 128: Az SQL Server 2005  relációs motorjának újdonságai

Utasítás szintű újrafordítás Utasítás szintű újrafordítás (recompile)(recompile) Nem kell az egész tárolt eljárást újrafordítani Nem kell az egész tárolt eljárást újrafordítani

(mint az SQL2000-ben)(mint az SQL2000-ben) Az utasítás szintű tervek is a gyorsírótárba Az utasítás szintű tervek is a gyorsírótárba

kerülnek a modul szintű tervekkel együttkerülnek a modul szintű tervekkel együtt Hasznos, ha:Hasznos, ha:

Változnak a tábla statisztikákVáltoznak a tábla statisztikák Nagy méretű tárolt eljárás újrafordítása helyettNagy méretű tárolt eljárás újrafordítása helyett Dinamikus SQL helyettDinamikus SQL helyett

Page 129: Az SQL Server 2005  relációs motorjának újdonságai

Összefoglalás Összefoglalás A A Transact-SQL Transact-SQL tovább él és virultovább él és virul A A Transact-SQLTransact-SQL változatlanul a legjobb változatlanul a legjobb

nyelv halmaz-orientált műveletekrenyelv halmaz-orientált műveletekre A .Net CLR kiváló procedurális A .Net CLR kiváló procedurális

lehetőségekkel bővíti az SQL Server lehetőségekkel bővíti az SQL Server fejlesztők eszköztárátfejlesztők eszköztárát

Page 130: Az SQL Server 2005  relációs motorjának újdonságai

Címek, hivatkozásokCímek, hivatkozások SQL Server 2005SQL Server 2005

http://www.microsoft.com/hun/sql/default.mspxhttp://www.microsoft.com/hun/sql/default.mspx http://www.microsoft.com/sql/2005/http://www.microsoft.com/sql/2005/

SQL Server 2005 WebcastsSQL Server 2005 Webcasts http://www.microsoft.com/events/series/http://www.microsoft.com/events/series/

technetsqlserver2005.mspxtechnetsqlserver2005.mspx http://www.microsoft.com/events/series/

msdnsqlserver2005.mspx MSDN

http://msdn.microsoft.com/sql/

Page 131: Az SQL Server 2005  relációs motorjának újdonságai