SQL Server 2005 - Tutorial -...

Post on 31-Mar-2018

215 views 2 download

Transcript of SQL Server 2005 - Tutorial -...

SQL Server 2005Φροντιςτόριο

Γεράςιμοσ Μαρκζτοσ

InfoLab, Τμιμα Πλθροφορικισ, Πανεπιςτιμιο Πειραιϊσ (http://infolab.cs.unipi.gr/)

Φροντιςτόριο-Εργαςτόρια

Ημερομηνία Αντικείμενο Περιγραφή

Φροντιςτιριο ςτον SQL Server Παρουςίαςθ περιβάλλοντοσ SQL Server

Εργαςτιριο - SQL Server Database Engine/ Integration

Services

Σχεδίαςθ ΒΔ ςτον SQL Server, διαδικαςίεσ μεταφοράσ και

χειριςμοφ δεδομζνων (SSIS), TSQL, κζματα βζλτιςθσ εκτζλεςθσ

SQL ερωτθμάτων

Εργαςτιριο - SQL Server Database Engine

DBA ςε 2 ϊρεσ (διαχείριςθ χρθςτϊν, απόδοςθ SQL Server,

ςυνοδευτικά εργαλεία)

2

RDBMS Μερύδια Αγορϊσ

Company 20062006 Market

Share (%) 20052005 Market

Share (%)2005-2006

Growth (%)

Oracle 7,168.0 47.1 6,238.2 46.8 14.9

IBM 3,204.1 21.1 2,945.7 22.1 8.8

Microsoft 2,654.4 17.4 2,073.2 15.6 28.0

Teradata 494.2 3.2 467.6 3.5 5.7

Sybase 486.7 3.2 449.9 3.4 8.2

Other Vendors

1,206.3 7.9 1,149.0 8.6 5.0

Total 15,213.7 100.0 13,323.5 100.0 14.2

Source: Gartner Dataquest (June 2007)

Worldwide Vendor Revenue Estimates from RDBMS Software, Based on Total Software Revenue, 2006 (Millions of Dollars)

4

SQL Server 2005

Γενικά

SQL Server

SQL Server

7.0

SQL Server

2005

SQL Server

2000

• Lowest TCO• Automatic Tuning

• Reliability & Security• Integrated Business Intelligence

High availability

Security

Developer productivity

Native XML

First to include Enterprise ETL & Deep Data Mining

Performance, scalability focus

XML support

First to include Notification

First to include Data Mining & Reporting

Re-architecture of relational server

Extensive auto resource management

First to include OLAP & ETL

Cross-release objectives

SQL Server

6.0/6.5

Differentiation from Sybase SQL Server

Windows integration

First to include Replication

1st Generation 2nd Generation 3rd Generation

SQL Server 2005 Data Platform

SQL Server 2005 Components

SQL Server 2005Relational Database Engine

.NET CLR

Analysis Services

Native HTTP Support

Service BrokerReplication

Reporting ServicesFull-Text Search

Notification Services

SQL Server Integration Services

Εκδόςεισ Enterprise (για Windows Server)

Περιλαμβάνει το ςφνολο των δυνατοτιτων ςου ςυςτιματοσ SQL Server 2005

Standard

Περιλαμβάνει τισ βαςικζσ δυνατότθτεσ του ςυςτιματοσ SQL Server 2005

Workgroup

Βαςικζσ δυνατότθτεσ για μικρζσ επιχειριςεισ

Developer (τρζχει και ςε Windows XP)

Περιλαμβάνει όλεσ τισ δυνατότθτεσ (όπωσ τθν enterprise) αλλά ζχει περιοριςμοφσ ςτθ χριςθ (μόνο για development, τεςτ και demo)

Compact

Για mobile εφαρμογζσ

Express

Η δωρεάν ζκδοςθ που όμωσ ζχει πολλοφσ περιοριςμοφσ (ςτο μζγεκοσ των βάςεων δεδομζνων κτλ)

Δείτε: http://technet.microsoft.com/el-gr/library/ms143506(en-us,SQL.90).aspx

Νέο στον SQL Server 2005

Express Workgroup

Standard EnterpriseFastest way for

developers to learn, build & deploy simple

data driven applications

Easiest to use & most affordable database solution for smaller

departments & growing businesses

Complete data management & analysis platform for medium businesses and large

departments

Fully integrated data management and

analysis platform for business critical

enterprise applications

2 CPU

3 GB RAM

Management Studio

Import/Export

Limited Replication Publishing

Back-up Log-shipping

4 CPU

Unlimited RAM(64-bit)

Database Mirroring

OLAP Server

Reporting Server

New Integration Services

Data Mining

Full Replication & SSB Publishing

Unlimited Scale + Partitioning

Adv. DB mirroring, Complete online &

parallel operations,

DB snapshot

Advanced Analysis Tools including full

OLAP & Data Mining

Report Builder + Customized & High

Scale Reporting

Adv SSIS

1 CPU1 GB RAM

4GB DB Size

Simple Management Tool

Report Wizard & Report Controls

Replication & SSB Client

Εκδόςεισ

Καλϊ όλα αυτϊ… αλλϊ…

Ποιο λογιςμικό χρειάηομαι;

SQL Server 2005 Developer Edition 32/64 bit

Που κα το βρω;

http://msdnaa.cs.unipi.gr

Τι πρζπει να εγκαταςτιςω;

SQL Server Database Services

Workstations components , books online, development tools και sample databases

Να οριςτεί Mixed το Windows Authentication Mode

10

Πωσ ςυνδϋομαι;

Ανοίγω το SQL Server Management Studio

Επιλζγω να ςυνδεκϊ ςτο Database Engine (υπάρχουν και άλλα…)

Επιλζγω τον Database Server ςτον οποίο κα ςυνδεκϊ (π.χ. Localhost)

Επιλζγω τφπο πιςτοποίθςθσ (authentication): υπάρχουν δυο είδθ λογαριαςμϊν ςτον SQL Server

Windows ι domain χριςτεσ – Windows Authentication

SQL Server χριςτεσ – SQL Server Authentication

Πλθκτρολογϊ username, password

11

Βαςικϊ εργαλεύα

Νζο: SQL Server Management Studio Υποςτιριξθ όλων των SQL Server components

Database Engine

Analysis Services

Reporting Services

Notification Services

Integration Services

SQL Server Mobile Edition …

Υποςτιριξθ προθγοφμενων εκδόςεων του SQL Server

Νζο : Management Objects (SMO) Objects για διαχείριςθ (με προγραμματιςτικό τρόπο) του SQL Server

Νζο : SQLCMD Command line εργαλείο διαχείριςθσ του SQL Server

Νζο : Database Mail Αντικακιςτά το SQLMail

SMTP Support, Cluster Support, 64-bit Support

Δεν απαιτείται το Outlook

SQL Server Management Studio

SQL Server Configuration Manager

Change the Service Log On

Accounts for each SQL Service

Manage the State and Start

Mode for SQL ServicesConfigure SQL Services, Network

Protocols and Network

Configuration

Δημιουργύα Scripts

Το Management Studio χρθςιμοποιεί τον SMO scripter

Όλεσ οι ενζργειεσ γίνονται scripts Καλφτεροσ ζλεγχοσ

Αποκικευςθ εντολϊν για μελλοντικι/ επαναλαμβανόμενθ χριςθ

SQL Command-Line Tool

Type SQLCMD to enter

Interactive Mode

Type Exit to exit Interactive Mode

“SQLCMD –S” to connect to

Named Instance

Run “SQLCMD –i” to run against

a pre-built script fileRun “SQLCMD –o” to direct

output to a file

CONNECT LON-DC-01\MSSQLSERVER

setvar db CustomerDB

BACKUP DATABASE $(db) TO DISK = “$(PATH)\$(db).bak”

CONNECT LON-SQL-01\MSSQLSERVER

setvar db ContactsDB

BACKUP DATABASE $(db) TO DISK = “$(PATH)\$(db).bak”

SQLCMD –Q –i C:\SCRIPTS\BACKUP.SQL –v PATH=“N:\BACKUPS”

SQLCMD Scripting Functionality

LON-DC-01

CustomerDB

LON-SQL-01

ContactsDB

N:\BACKUPS

Database Mail Μζςω SMTP – Δεν είναι

απαραίτθτο το Microsoft Outlook

Cluster support

64-bit support

Δεν χρθςιμοποιείται το SQLCLR

Βαςίηεται ςε αςφγχρονθ αρχιτεκτονικι

Πολλαπλοί SMTP λογαριαςμοί

Καταγραφι ενεργειϊν (Logging)

Ενεργοποιοφνται Alerts λόγω:

Λακϊν ςτον SQL Server

Θεμάτων ςτθν απόδοςθ του server

Ο SQL Agent μπορεί να χρθςιμοποιεί τοdatabase mail

Νζοι τφποι εργαςιϊν

Analysis Services

Integration Services

Οριςμόσ Proxy λογαριαςμϊν

Κάκε proxy λογαριαςμόσ ςυςχετίηεται SQL Server λογαριαςμό

Proxy λογαριαςμοί ορίηονται ςε database χριςτεσ, database ρόλουσ, και server ρόλουσ

SQL Server Agent

Δημιουργύα Βϊςησ Δεδομϋνων

Απλόσ τρόποσ:

δεξί κλικ ςτο φάκελο

‘Database’,

επιλογι ‘New Database’

Ολοκλιρωςθ του Wizard

‘New Database’

Σφνκετοσ τρόποσ:

Με χριςθ τθσ εντολισ T-

SQL CREATE DATABASE

Δημιουργύα Πύνακα Μζςα από το γραφικό

περιβάλλον

Επιλζγουμε τθ βάςθ δεδομζνων και κάνουμε δεξί κλικ ςτον φάκελο Table και επιλζγουμε New Table

Ορίηουμε για κάκε ςτιλθ όνομα και τφπο δεδομζνων

Δυνατότθτα αποκικευςθσ του Script

Με χριςθ τθσ εντολισ T-SQL CREATE TABLE

Σχεδιαςμόσ Βϊςησ Δεδομϋνων Μοντελοποίθςθ

βάςεων δεδομζνων (δθμιουργία διαγραμμάτων)

Δυνατότθτα δθμιουργίασ και διαγραφισ πινάκων, ευρετθρίων, κλειδιϊν κ.α.

Δημιουργύα Όψεων (Views)

Όψθ = εικονικόσ πίνακασ που βαςίηεται ςε ζνα SQL ερϊτθμα

Μζςα από το γραφικό περιβάλλον

Επιλζγουμε τθ βάςθ δεδομζνων και κάνουμε δεξί κλικ ςτον φάκελο Views και επιλζγουμε New View

Επιλζγουμε πίνακεσ και τρόπο ςφνδεςθσ τουσ

TIP: Εφκολοσ ςχεδιαςμόσ ερωτιματοσ μζςα από τθν οκόνθ δθμιουργίασ View

Με χριςθ τθσ εντολισ T-SQL CREATE VIEW

Slide: 24© Edgewood Solutions LLC 2006

Synonyms Synonym = reference

ςε αντικείμενο που μπορεί να βρίςκεται ςε άλλον server ι ςχιμα

Μζςα από το γραφικό περιβάλλον

Με χριςθ τθσ εντολισ T-SQL CREATE SYNONYM

Δημιουργύα SQL ερωτημϊτων

Κάνουμε κλικ ςτο κουμπί New Query (πάνω αριςτερά)

Γράφουμε τον κϊδικα που κζλουμε και πατάμε το κουμπί Execute

25

Ειςαγωγό/ Εξαγωγό δεδομϋνων

Κάνοντασ δεξί κλικ ςε μια βάςθ δεδομζνων και μζςω του μενοφ Tasks μασ δίνονται δυνατότθτεσ Ειςαγωγισ (Import) και Εξαγωγισ (Export) δεδομζνων

Στον Wizard που ξεκινάει πρζπει αρχικά να ορίςουμε πθγι προζλευςθ. Αυτά μπορεί να είναι:

Text αρχεία

Excel και Access αρχεία

SQL Server

Oracle

Άλλα RDBMS

26

Ειςαγωγό/ Εξαγωγό δεδομϋνων

Αν για παράδειγμα επιλζξουμε να ειςάγουμε δεδομζνα από ζνα text αρχείο ςτον SQL Server τότε πρζπει να ορίςουμε: που βρίςκεται το αρχείο

τθ βάςθ δεδομζνων ςτθν οποία κα αποκθκευτεί το αρχείο

τθ μορφι που ζχει το αρχείο (με ποιον τρόπο διαχωρίηονται οι γραμμζσ και οι ςτιλεσ)

το όνομα του πίνακα ςτο οποίο κα αποκθκευτοφν τα δεδομζνα

Αν δεν υπάρχει ο πίνακασ τότε κα δθμιουργθκεί

Αν υπάρχει ο πίνακασ, μποροφμε να κάνουμε αντιςτοίχθςθ μεταξφ των ςτθλϊν του αρχείου με τισ ςτιλεσ του πίνακα (προςοχή ςτουσ διαφορετικοφσ τφπουσ δεδομζνων)

27

Backup/ Restore

Κάνοντασ δεξί κλικ ςε μια βάςθ δεδομζνων και μζςω του μενοφ Tasks μασ δίνονται δυνατότθτεσ Backup και Restore

Τζτοιεσ διαδικαςίεσ μποροφν να προγραμματιςτοφν ϊςτε να εκτελοφνται αυτόματα

28

Backup

Για το backup, οι παράμετροι που πρζπει να κακορίςουμε:

Σε ποια βάςθ κα γίνει backup

Τφποσ backup

Full (όλθ τθ ΒΔ ι ςυγκεκριμζνα filegroups και μζροσ του log)

Differential (βάςθ ενόσ τελευταίου full backup)

Transaction log (μόνο το log)

Αν το backup λιγει μετά από ζνα διάςτθμα

Τον προοριςμό του backup αρχείου

Αν το backup αρχείο κα προςτεκεί ςε ζνα υπάρχον backup set ι κα διαγράψει τα προθγοφμενα

29

Restore

Για το restore, οι παράμετροι που πρζπει να κακορίςουμε:

Σε ποια βάςθ κα γίνει restore

Από ποφ κα γίνει restore (από ΒΔ, από Device)

Προςδιορίηουμε το ςυγκεκριμζνο backup set που κα γίνει restore (1 αρχείο πολλά sets)

Αν το backup αρχείο κα προςτεκεί ςε ζνα υπάρχον backup set ι κα διαγράψει τα προθγοφμενα

Ορίηουμε αν κα διαγραφοφν τα δεδομζνα που υπάρχουν εκείνθ τθ ςτιγμι ςτθ ΒΔ

30

Ευρετόρια

Επιλογζσ όταν δθμιουργοφμε ευρετιρια:

Clustered (το φυςικό αρχείο αναπροςαρμόηεται)

Nonclusterted (δθμιουργείται κατάλλθλο δζντρο)

Μποροφμε να ορίςουμε να είναι unique (δεν κα επιτρζπει τθν ίδια εγγραφι δυο φορζσ)

Όταν ορίηουμε πρωτεφον κλειδί τότε αυτόματα ορίηεται Clustered + Unique

Επιλζγουμε τισ ςτιλεσ πάνω ςτισ οποίεσ κα ςτθκεί το ευρετιριο

31

32

SQL Server 2005

T-SQL, CLR και XML

Η γλώςςα SQL SQL = Structured Query Language

Αναπτφχκθκε από τθν IBM το 1970

Είναι πλζον ANSI και ISO standard για RDBMS SQL ANSI = American National Standards Institute

ISO = International Organization for Standardization

SQL86 => SQL89 => SQL92

Συνδυάηει πολλζσ «γλϊςςεσ»:

DDL (Data Definition Language),

DML (Data Modification),

SAL (System Administration Language)

QL (Query Language)

Η εντολό SELECT

SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]

SELECT: Λογικό ροό

1. From: Σφνολο δεδομζνων (πίνακασ, όψθ, άλλο SQL ερϊτθμα)

2. Where: Επιλογι ςυγκεκριμζνων εγγραφϊν-γραμμϊν (ςτθ ςτιλθ να υπάρχει θ φράςθ “%First Aid%”).

3. Aggregations: Είναι δυνατό να οριςτοφν ςυνακροίςεισ (aggregations) ςτο ςφνολο δεδομζνων (average, sum, count, min, max κτλ)

4. Order By: Οι εγγραφζσ που ζχουν τελικά επιλεγεί μποροφν να ταξινομθκοφν με βάςθ όςα δθλϊνονται ςτο order by.

5. Predicate: H ςειρά εμφάνιςθσ των ςτθλϊν

SELECT Clause (SELECT)

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ] < select_list >

< select_list > ::=

{ * | { table_name | view_name | table_alias }.*| { column_name | expression | IDENTITYCOL |

ROWGUIDCOL } [ [ AS ] column_alias ]

| column_alias = expression } [ ,...n ]

FROM Clause (SELECT) [ FROM { < table_source > } [ ,...n ] ]

< table_source > ::= table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [

,...n ] ) ] | view_name [ [ AS ] table_alias ] | rowset_function [ [ AS ] table_alias ] | OPENXML | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ]

) ] | < joined_table >

< joined_table > ::= < table_source > < join_type > < table_source > ON <

search_condition > | < table_source > CROSS JOIN < table_source > | < joined_table >

< join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] [ < join_hint > ] JOIN

Joins Υποκζτουμε ότι ζχουμε τουσ πίνακεσ

loan και borrower

n Σθμείωςθ: Δεν γνωρίηουμε πλθροφορίεσ για το δάνειο του πελάτθ Hayes και δεν ζχουμε ο όνομα του πελάτθ με δάνειο L-260

Joins - Παραδεύγματα

loan inner join borrower onloan.loan_number =borrower.loan_number

n loan left outer join borrower onloan.loan_number = borrower.loan_number

Joins - Παραδεύγματα

loan full outer join borrower using (loan_number)

n Συνδυάςει left και right outer join

WHERE Clause (SELECT)

[ WHERE < search_condition > | < old_outer_join > ]

< old_outer_join > ::= column_name { * = | = * } column_name

Search Condition (WHERE Clause) < search_condition > ::=

{ [ NOT ] < predicate > | ( < search_condition > ) } [ { AND | OR } [ NOT ] { < predicate > | ( < search_condition

> ) } ] } [ ,...n ]

< predicate > ::= { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }

expression| string_expression [ NOT ] LIKE string_expression

[ ESCAPE 'escape_character' ] | expression [ NOT ] BETWEEN expression AND expression| expression IS [ NOT ] NULL | CONTAINS

( { column | * } , '< contains_search_condition >' ) | FREETEXT ( { column | * } , 'freetext_string' ) | expression [ NOT ] IN ( subquery | expression [ ,...n ] ) | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }

{ ALL | SOME | ANY} ( subquery ) | EXISTS ( subquery )

}

GROUP BY Clause (SELECT)

[ GROUP BY [ ALL ] group_by_expression [ ,...n ]

[ WITH { CUBE | ROLLUP } ] ]

Συνικωσ χρθςιμοποιείται μαηί με ςυναρτιςεισ ςυνάκροιςθσ (aggregate)

π.χ. SUM, COUNT, AVG, κτλ.

HAVING Clause (SELECT)

[ HAVING < search_condition > ]

UNION Clause (SELECT)

{ < query specification > | ( < query expression > ) } UNION [ ALL ] < query specification | ( < query expression > )

[ UNION [ ALL ] < query specification | ( < query expression > )

[ ...n ] ]

ORDER BY Clause (SELECT)

[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n] ]

INSERT

INSERT [ INTO] { table_name WITH ( < table_hint_limited > [ ...n ] )

| view_name | rowset_function_limited

}

{ [ ( column_list ) ] { VALUES

( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table | execute_statement

} } | DEFAULT VALUES

< table_hint_limited > ::= { FASTFIRSTROW

| HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX | UPDLOCK

}

UPDATE

UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited} SET { column_name = { expression | DEFAULT | NULL } | @variable = expression| @variable = column = expression } [ ,...n ]

{ { [ FROM { < table_source > } [ ,...n ] ]

[ WHERE < search_condition > ] }

| [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name }] } [ OPTION ( < query_hint > [ ,...n ] ) ]

DELETE

DELETE [ FROM ]

{ table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited}

[ FROM { < table_source > } [ ,...n ] ]

[ WHERE { < search_condition > | { [ CURRENT OF

{ { [ GLOBAL ] cursor_name } | cursor_variable_name

} ] }

} ] [ OPTION ( < query_hint > [ ,...n ] ) ]

Μετατροπϋσ

CAST και CONVERT

Μετατρζπει ζνα τφπο ςε ζνα άλλο. Οι εντολζσ είναι παρόμοιεσ απλά με διαφορετικι

ςφνταξθ

CAST ( expression AS data_type )

CONVERT ( data_type [ ( length ) ] ,

expression [ , style ] )

Aggregations

Εκτϋλεςη SQL ερωτημϊτων

Απόδοςη SQL ερωτημϊτων

Τθν εκτζλεςθ των SQL ερωτθμάτων τθ διαχειρίηεται ο Query Optimizer

Αποφαςίηει ποια Index κα χρθςιμοποιιςει

Επιλζγει ποιο πλάνο εκτζλεςθσ κα ακολουκιςει

Αποφεφγουμε SQL ερωτιματα τφπου SELECT * FROM

Προςζχουμε τθ χριςθ (!) καρτεςιανοφ γινομζνου

SELECT * FROM a, b

Προςοχι ςτθ χριςθ του LIKE

Χρθςιμοποιείται ευρετιριο(αν υπάρχει) όταν… WHERE lname LIKE ‘w%’

Δεν χρθςιμοποιείται ευρετιριο όταν… WHERE lname LIKE ‘%alton’

53

Απόδοςη SQL ερωτημϊτων

Βελτιϊνουμε τθν απόδοςθ JOIN ερωτθμάτων όταν:

Περιορίηουμε τον αρικμό των εγγραφϊν πάνω ςτισ οποίεσ γίνεται το JOIN

Δθμιουργοφμε ευρετιρια πάνω ςτισ ςτιλεσ ςτισ οποίεσ γίνεται το JOIN (ςτα ξζνα κλειδιά δε δθμιουργοφνται αυτόματα τα ευρετιρια)

Κάνουμε JOIN πάνω ςε πεδία με όςο το δυνατό μικρότερο μικοσ (προςζχουμε τουσ τφπουσ δεδομζνων και αν χρειαςτεί δθμιουργοφμε και τεχνθτά κλειδιά)

Κάνουμε JOIN πάνω ςε πεδία με ίδιο τφπο δεδομζνων (ζτςι αποφεφγεται θ μετατροπι από τον SQL Server)

Επανα-δθμιουργοφμε (rebuild) τα ευρετιρια ϊςτε να απελευκερωκεί ελεφκεροσ χϊροσ

Σε περίπτωςθ μεγάλων JOIN προτιμοφμε να τοποκετοφμε τουσ πίνακεσ ςε διαφορετικά φυςικά αρχεία ςτο ίδιο FILEGROUP

54

Απόδοςη SQL ερωτημϊτων

Βελτιϊνουμε τθν απόδοςθ JOIN ερωτθμάτων όταν:

Προτιμοφμε τθ χριςθ JOIN από το subquery (εκτόσ και αν πρόκειται για λίγεσ εγγραφζσ / δεν υπάρχει ευρετιριο ςτισ ςτιλεσ που κάνουμε JOIN)

Ελζγχουμε τι ακριβϊσ εκτελεί ο SQL Server εξετάηοντασ τα execution plans που μασ παρζχει

55

T-SQL

Transact-SQL: Ενιςχυμζνθ SQL που προςφζρει χαρακτθριςτικά που αφοροφν μόνο τον SQL Server (system functions κτλ)

Τι αλλάηει ςτον SQL Server 2005: Exception handling

TOP(expression)

PIVOT/UNPIVOT

RANK

SNAPSHOT Isolation

VARCHAR(MAX), VARBINARY(MAX)…

Κτλ κτλ κτλ…56

CLR

Το Common Language Runtime (CLR) είναι Virtual Machine του .NET Framework

Το CLR ζχει πλζον «ενςωματωκεί» ςτον SQL Server άρα μασ δίνεται θ δυνατότθτα να χρθςιμοποιιςουμε όλο το .NET Framework μζςα ςτον SQL Server

C#, Visual Basic .NET,..

ADO.NET

Τι κερδίηουμε:

Μποροφμε να χρθςιμοποιιςουμε μια πλοφςια γλϊςςα με διαδικαςτικι λογικι για να γράψουμε functions, stored procedures κτλ.

Μπορϊ εφκολα να ζχω πρόςβαςθ ςε εξωτερικζσ πθγζσ

T-SQL και CLR

Transact SQL (T-SQL)

(Microsoft® SQL 2000)

.NET Languages (Microsoft®

SQL Server™ 2005)

User Defined

FunctionsX X

Stored Procedures X X

Triggers X X

User-Defined

TypesX

Aggregates X

VS .NET

ProjectAssembly:

“TaxLib.dll”

VB,C#,C++ Build

SQL Server

SQL Data Definition: create assembly …

create function …

create procedure …

create trigger …

create type …

SQL Queries: select

sum(tax(sal,state))

from Emp where county

= ‘King’

Runtime

hosted by SQL

(in-proc)

Η διαδικαςύα…

XML τύποσ δεδομϋνων

Ο XML τφποσ δεδομζνων είναι ενςωματωμζνοσ ςτο SQL Server 2005, οπότε μπορεί να χρθςιμοποιθκεί :

ωσ τφποσ δεδομζνων ςε ςτιλθ κάποιου πίνακα

ωσ παράμετροσ ςε stored procedure

ωσ τφποσ δεδομζνων ςε τιμι που επιςτζφεται απόuser-defined function

ωσ τφποσ δεδομζνων μεταβλθτισ

XML ςτόλη

Μπορεί να αποκθκεφςει XML ζγγραφο

XML ςτόλη

Δεν είναι απλά TEXT!!

Υποςτθρίηει τισ κλαςικζσ XMLτεχνολογίεσ/τεχνικζσ:

Επικφρωςθ (validation) με κάποιο XML Schema

Ειδικά ευρετιρια για XML

Υποςτιριξθ XQuery και XPath 2.0

Συγκεκριμζνεσ λειτουργίεσ που αφοροφν μόνο XML:

FOR XML

OpenXML

Υλικό

Microsoft at University of Piraeus: http://msdnaa.cs.unipi.gr/

SQL Server home: http://www.microsoft.com/sql/default.mspx

SQL Server tech center: http://technet.microsoft.com/en-us/sqlserver/default.aspx

SQL Server development center: http://msdn2.microsoft.com/en-us/sqlserver/default.aspx

Άρκρα για βελτίωςθ τθσ απόδοςθσ του SQL Server: http://www.sql-server-performance.com/

SQL Server 2008: http://www.microsoft.com/sql/2008/default.mspx

SQL Server 2008 e-book: http://csna01.libredigital.com/?urss1q2we6

SQL Server 2008 εκπαιδευτικό υλικό: http://sqlserver2008jumpstart.microsofttraining.com/content/info.asp?CcpSubsiteID=69&infoid=27

63

64

Gerasimos Marketos

marketos@unipi.gr

http://infolab.cs.unipi.gr/people/marketos

Επικοινωνία

University of Piraeus,

Information Systems Laboratory

80-82 Zeas Str., 18534 Piraeus, Greece

3rd Floor

Phone: (+30) 210 4142437

http://infolab.cs.unipi.gr