You are on page 1of 211

SQL SERVER 2000

NI DUNG
o o o o o o o o o o o o o Tng quan SQL Server 2000 Thit k v thc thi c s d liu T-SQL Programing Giao dch v Kho Bo mt v Qun l ngi dng T-SQL v SQL nng cao Rng buc d liu v Ch s Khung nhn v Con tr Th tc Trigger Sao lu v Phc hi Chuyn i gia cc loi c s d liu Kin trc nhn bn

GV. Phm Th Hong Nhung B mn Cng ngh phn mm i hc Thy li

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

1 CHNG 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000 ............................................................................................10 1.1 Gii thiu SQL Server 2000 ........................................................................ 10 1.1.1 Cc c trng ca SQL Server 2000: ..................................................... 10 1.1.2 Cc phin bn-edition ca SQL Server .................................................. 11 1.1.3 Cc Version ca SQL Server.................................................................. 12 1.2 Cc thnh phn quan trng trong SQL Server 2000 ............................... 12 1.2.1 Relational Database Engine.................................................................... 12 1.2.2 Replication - C ch to bn sao ............................................................ 12 1.2.3 Data Transformation Service (DTS) - Dch v chuyn dch d liu...... 13 1.2.4 Analysis Service - Dch v phn tch d liu ......................................... 13 1.2.5 English Query Truy vn d liu s dng ting Anh ........................... 14 1.2.6 Meta Data Service .................................................................................. 14 1.2.7 SQL Server Books Online Sch dy SQL Server trc tuyn .............. 14 1.3 SQL Server Tools......................................................................................... 14 1.3.1 Enterprise Manager................................................................................. 15 1.3.2 Query Analyzer....................................................................................... 15 1.3.3 SQL Profiler ........................................................................................... 15 1.4 Kin trc ca SQL Server........................................................................... 16 1.4.1 Client/Server Database system ............................................................... 16 1.4.2 Destop Database system ......................................................................... 16 1.5 SQL Server Database .................................................................................. 16 1.6 Database Objects-Cc i tng trong c s d liu ............................... 17 1.7 Cu hi trc nghim..................................................................................... 18 2 CHNG 2. THIT K V THC THI C S D LIU ...................19 2.1 Cu trc ca SQL Server ............................................................................ 19 2.2 Cu trc vt l ca mt SQL Server Database ......................................... 19 2.3 Nguyn tc hot ng ca transaction log trong SQL Server ................. 20 2.4 Cu trc logic ca mt SQL Server Database .......................................... 22 2.5 Cc kiu d liu trong SQL Server (data types)....................................... 22 2.5.1 Integers ................................................................................................... 22 2.5.2 Decimal and Numeric............................................................................. 23 2.5.3 Money and Smallmoney......................................................................... 23 2.5.4 Approximate Numerics .......................................................................... 23 2.5.5 Datetime and Smalldatetime................................................................... 24 2.5.6 Character Strings .................................................................................... 24 2.5.7 Unicode Character Strings...................................................................... 24 2.5.8 Binary Strings ......................................................................................... 25 2.5.9 Cc kiu d liu khc ............................................................................. 25 2.6 Cu hi trc nghim..................................................................................... 26 3 CHNG 3. THIT K V THC THI C S D LIU- PHN THC HNH..........................................................................................................27
2

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

3.1 To c s d liu s dng Enterprise Manager........................................ 27 3.2 Sa c s d liu .......................................................................................... 30 3.3 Xo c s d liu .......................................................................................... 30 3.4 Nghin cu c s d liu Flight_Information ........................................... 30 3.4.1 Cu trc bng.......................................................................................... 30 3.4.2 D liu trn cc bng.............................................................................. 34 3.5 Bi tp ........................................................................................................... 39 4 CHNG 4. T-SQL PROGRAMING....................................................40 4.1 Gii thiu SQL Batch Processing ............................................................... 40 4.1.1 Cch thc Thi mt nhm lnh (Batches)................................................ 40 4.1.2 Lnh GO ................................................................................................. 40 4.1.3 V d v Batch: ....................................................................................... 41 4.1.4 Ch thch (comment) trong batch:.......................................................... 41 4.2 Cu lnh iu khin ..................................................................................... 41 4.2.1 Begin..End .............................................................................................. 41 4.2.2 If..Else..................................................................................................... 42 4.2.3 Vng lp While....................................................................................... 42 4.2.4 T kho GOTO....................................................................................... 43 4.2.5 T kho Return....................................................................................... 43 4.2.6 Cu lnh CASE....................................................................................... 43 4.3 Bin(Variables)............................................................................................. 44 4.3.1 Grobal variables...................................................................................... 44 4.3.2 Local variables........................................................................................ 45 4.4 Hm (Functions)........................................................................................... 46 4.4.1 Hm Conversion ..................................................................................... 46 4.4.2 Hm Data Parts....................................................................................... 46 4.4.3 Hm ngy thng v hm ton hc .......................................................... 47 4.4.4 Hm h thng (System Function)........................................................... 47 4.4.5 Hm nhm .............................................................................................. 48 4.5 Cu hi trc nghim..................................................................................... 49 5 CHNG 5. TRANSACTIONS V LOCKS ........................................51 5.1 Gii thiu Transactions-Giao dch ............................................................. 51 5.2 Cc tnh cht ca Transaction .................................................................... 51 5.2.1 Phn loi transaction............................................................................... 51 5.3 Cc mc c lp ca Transaction................................................................. 52 5.3.1 Gii thiu Dirty Read (c cc d liu bn).......................................... 52 5.3.2 Cc mc c lp ....................................................................................... 54 5.4 Locks ............................................................................................................. 55 5.4.1 Khi nim ............................................................................................... 55 5.4.2 Phn loi ................................................................................................. 55 5.5 Cu hi trc nghim..................................................................................... 57 6 CHNG 6. BO MT V QUN L NGI DNG (USER AND SERCURITY) ..............................................................................................59
3

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

6.1 Gii thiu v SQL Server Sercurity ........................................................... 59 6.2 Qun l ng nhp (Login) ......................................................................... 59 6.2.1 Xc thc ng nhp ................................................................................ 59 6.2.2 Kim tra quyn (Permission).................................................................. 60 6.2.3 To Login ............................................................................................... 60 6.3 Qun l ngi dng ..................................................................................... 61 6.3.1 SQL Server Users ................................................................................... 61 6.3.2 Qun l Usename v Login name .......................................................... 62 6.4 Qun l Role ................................................................................................. 62 6.4.1 Database Roles ....................................................................................... 62 6.4.2 Server Roles............................................................................................ 63 6.4.3 Thm thnh vin cho Role...................................................................... 64 6.5 i tng v quyn trn i tng (Database Objects and Object Permission) .............................................................................................................. 64 6.5.1 i tng................................................................................................ 64 6.5.2 Quyn...................................................................................................... 65 6.5.3 Cho php v hu b quyn trn i tng ............................................. 65 6.6 Cu hi trc nghim..................................................................................... 67 7 CHNG 7. T-SQL PROGRAMMING, TRANSACTIONS, MANAGING SERCURITY PHN THC HNH ...........................................................69 7.1 Hng dn trc tip .................................................................................... 69 7.1.1 Transactions............................................................................................ 69 7.1.2 Bin a phng (local) v bin ton cc(Global) ................................. 73 7.1.3 SQL Server Sercurity ............................................................................. 74 7.2 Bi tp ........................................................................................................... 74 8 CHNG 8. T-SQL V SQL NNG CAO...........................................76 8.1 Gii thiu s lc v T- SQL (Transact -SQL)......................................... 76 8.1.1 Data Definition Language (DDL) .......................................................... 76 8.1.2 Data Control Language (DCL):.............................................................. 77 8.2 Data Manipulation Language (DML):....................................................... 77 8.3 Cc cu lnh truy vn d liu ..................................................................... 78 8.3.1 Thc hin Join kt ni cc bng ........................................................ 78 8.3.2 Mnh Top n:....................................................................................... 81 8.3.3 Mnh INTO........................................................................................ 81 8.3.4 T kho UNION(Hp) ........................................................................... 82 8.3.5 T kho CUBE v ROLL UP................................................................. 82 8.3.6 Mnh COMPUTE v COMPUTE BY .............................................. 85 8.4 Cu hi trc nghim..................................................................................... 87 9 CHNG 9. T-SQL V SQL NNG CAO- PHN THC HNH ........88 10 CHNG 10. RNG BUC D LIU V CH S ..........................90 10.1 Rng buc d liu ........................................................................................ 90 10.1.1 Gii thiu ................................................................................................ 90 10.1.2 Rng buc thc th ................................................................................. 90
4

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

10.1.3 Rng buc min d liu.......................................................................... 91 10.1.4 Rng buc tham chiu ............................................................................ 91 10.1.5 Rng buc NSD t nh ngha................................................................ 91 10.2 Thc hin cc rng buc bng T-SQL....................................................... 91 10.2.1 PRIMARY KEY Constraint ................................................................... 91 10.2.2 UNIQUE Constraint ............................................................................... 92 10.2.3 IDENTITY Property............................................................................... 92 10.2.4 DEFAULT Definition ............................................................................ 92 10.2.5 FOREIGN Key Constraint ..................................................................... 93 10.2.6 CHECK Constraint ................................................................................. 93 10.2.7 NOT NULL Constraint........................................................................... 93 10.2.8 Rules ....................................................................................................... 94 10.3 Indexes........................................................................................................... 94 10.3.1 Gii thiu ................................................................................................ 94 10.3.2 Li khuyn khi s dng indexes............................................................. 95 10.3.3 To Indexes............................................................................................. 95 10.3.4 Cc kiu Indexes..................................................................................... 96 10.3.5 Tnh cht ca Indexes............................................................................. 96 10.3.6 Hin th Indexes...................................................................................... 97 10.3.7 Cch s dng Indexes............................................................................. 97 10.3.8 Xa Indexes ............................................................................................ 97 10.3.9 Full-text Searches ................................................................................... 98 10.3.10 Full-text Catalogs................................................................................ 98 10.3.11 S dng Full-text Indexes................................................................... 98 10.4 Cu hi trc nghim..................................................................................... 99 11 CHNG 11. DATA INTEGRITY AND INDEXES..........................101 PHN THC HNH ..................................................................................101 11.1 Hng dn trc tip .................................................................................. 101 11.1.1 To rng buc PRIMARY KEY........................................................... 101 11.1.2 To rng buc Unique .......................................................................... 102 11.1.3 S dng thuc tnh IDENTITY............................................................ 103 11.1.4 To rng buc Default .......................................................................... 103 11.1.5 To rng buc FOREIGN KEY ........................................................... 104 11.1.6 To rng buc Check Constraint .......................................................... 106 11.1.7 To rng buc Not Null ........................................................................ 107 11.1.8 To Rules.............................................................................................. 108 11.2 Indexes......................................................................................................... 109 11.2.1 To indexes........................................................................................... 109 11.2.2 Xem v sa Indexes.............................................................................. 111 11.2.3 S dng Indexes ................................................................................... 112 11.3 Bi tp ......................................................................................................... 114 12 CHNG 12. KHUNG NHN & CON TR .....................................115 (VIEWS & CURSORS)..............................................................................115
5

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

12.1 View ............................................................................................................. 115 12.1.1 Gii thiu .............................................................................................. 115 12.1.2 To View .............................................................................................. 116 12.1.3 Li ch ca View i vi ngi s dng.............................................. 117 12.1.4 Mt s hng dn khi to View ........................................................... 117 12.1.5 Sa d liu thng qua Views................................................................ 117 12.1.6 Indexed Views ...................................................................................... 118 12.1.7 Distributed Partitioned Views- Khung nhn phn tn .......................... 120 12.1.8 S dng View cp nht d liu........................................................ 123 12.1.9 Sa cu trc Views ............................................................................... 123 12.1.10 Xo Views......................................................................................... 124 12.2 Con tr_Cursors......................................................................................... 124 12.2.1 Gii thiu .............................................................................................. 124 12.2.2 To con tr............................................................................................ 124 12.2.3 Cc bc trong s dng Cursor............................................................ 125 12.2.4 Truy cp d liu bng cursor................................................................ 125 12.2.5 V d ..................................................................................................... 126 12.3 Cu hi trc nghim................................................................................... 127 13 CHNG 13. KHUNG NHN V CON TR - PHN THC HNH 129 13.1 To View ..................................................................................................... 129 13.1.1 S dng Create View Wizard............................................................... 129 13.1.2 To View bng T-SQL ......................................................................... 130 13.2 Sa View ..................................................................................................... 130 13.3 Con tr ........................................................................................................ 131 13.3.1 Khai bo con tr (Cursor)..................................................................... 131 13.3.2 M con tr ............................................................................................ 132 13.3.3 Truy vn d liu ................................................................................... 132 13.3.4 Truy vn dng u tin......................................................................... 132 13.3.5 Truy vn dng tip theo........................................................................ 133 13.3.6 Truy vn dng cui cng...................................................................... 133 13.3.7 Truy vn n mt dng c v tr xc nh ............................................ 133 13.3.8 Truy vn n dng lin quan ................................................................ 133 13.3.9 ng v xo vng nh (Deallocating) ca con tr............................... 134 13.4 Bi tp ......................................................................................................... 135 14 CHNG 14. TH TC- STORED PROCEDURES(SPS).............136 14.1 nh ngha................................................................................................... 136 14.2 Li ch khi qun l d liu bng SPs ....................................................... 137 14.3 Cc kiu SPs ............................................................................................... 137 14.3.1 System stored procedures ..................................................................... 138 14.3.2 User-defined Stored Procedures ........................................................... 139 14.4 Thng bo li .............................................................................................. 142 14.4.1 Return Codes ........................................................................................ 142
6

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

14.4.2 Cu lnh RAISERROR ........................................................................ 143 14.5 Cu hi trc nghim................................................................................... 145 15 CHNG 15. STORED PROCEDURE- PHN THC HNH........146 15.1 To SP bng EM. ....................................................................................... 146 15.2 Thc thi SP ................................................................................................. 147 15.3 Bi tp ......................................................................................................... 147 16 CHNG 16. TRIGGER.................................................................149 16.1 nh ngha................................................................................................... 149 16.2 c im ca Trigger ................................................................................ 150 16.3 To Trigger................................................................................................. 151 16.3.1 To Trigger ........................................................................................... 151 16.3.2 Hng dn khi to Trigger ................................................................... 151 16.4 Cc kiu Trigger ........................................................................................ 152 16.4.1 INSERT trigger..................................................................................... 152 16.4.2 UPDATE trigger................................................................................... 153 16.4.3 DELETE trigger .................................................................................. 155 16.5 Cc cu lnh khng th s dng trong Triggers..................................... 156 16.6 Triggers dy chuyn - Cascading Triggers.............................................. 156 16.7 Triggers lng nhau - Nested Triggers ...................................................... 157 16.8 INSTEAD OF Triggers.............................................................................. 157 16.9 Cu hi trc nghim................................................................................... 159 17 CHNG 17. TRIGGER PHN THC HNH ............................160 17.1 To INSERT trigger. ................................................................................. 160 17.2 To DELETE Trigger................................................................................ 160 17.3 To UPDATE Trigger. .............................................................................. 161 17.3.1 To Table Level UPDATE Trigger...................................................... 161 17.3.2 To Column Level Update Trigger ...................................................... 162 17.4 To Trigger c la chn Encryption........................................................ 163 17.5 Hin th danh sch cc trigger trong Database....................................... 163 17.6 S dng Triggers to rng buc tham chiu (Enforce Referential Intergrity) .............................................................................................................. 164 17.7 Cascade Delete s dng Nested trigger.................................................... 164 17.8 To INSTEAD OF Trigger ....................................................................... 166 17.9 Bi tp ......................................................................................................... 167 18 CHNG 18. SAO LU & PHC HI...........................................169 (BACKUP & RESTORE)...........................................................................169 18.1 Gii thiu .................................................................................................... 169 18.2 Sao lu c s d liu .................................................................................. 169 18.3 Phc hi c s d liu ................................................................................ 170 18.4 Cc loi Backup v Restore ...................................................................... 173 18.4.1 Cc loi sao lu-Backups ..................................................................... 173 18.4.2 Cc m hnh khi phc- Recovery Models .......................................... 173 18.5 Full Database backup ................................................................................ 174
7

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

18.5.1 Cch to Full database backup bng EM ............................................. 175 18.5.2 Khi phc Full database backup bng EM........................................... 177 18.6 Transaction log backup ............................................................................. 178 18.6.1 Gii thiu .............................................................................................. 178 18.6.2 Ct (truncate) transaction log ............................................................... 179 18.6.3 iu kin transaction log backups........................................................ 180 18.6.4 Cch to transaction log backup bng EM ........................................... 180 18.6.5 Khi phc transaction log backup bng EM ........................................ 180 18.7 Differential backup .................................................................................... 182 18.8 File hoc Filegroup backup....................................................................... 183 19 CHNG 19. CHUYN I GIA CC LOI C S D LIU (DTS- DATA TRANSFORMATION SERVICE) .........................................185 19.1 Import c s d liu................................................................................... 185 19.1.1 Import c s d liu t SQL Server 2000 ............................................ 185 19.1.2 Import t c s d liu Access............................................................. 191 19.1.3 Import t tp tin Excel.......................................................................... 192 19.1.4 Import t tp tin dng Text................................................................... 192 19.2 Export c s d liu ................................................................................... 194 19.3 Xy dng lch trnh Import v Export c s d liu.............................. 194 19.4 Nhng iu cn gii quyt sau khi Import hay Export.......................... 195 20 CHNG 20. KIN TRC NHN BN (REPLICATION) ..............196 20.1 Mc tiu chnh ca nhn bn.................................................................... 196 20.1.1 Nht qun d liu (Data consistency) .................................................. 196 20.1.2 c lp site (site autonomy)................................................................. 197 20.2 Kin trc nhn bn .................................................................................... 197 20.2.1 Cc thnh phn chnh ca nhn bn: .................................................... 197 20.2.2 Chiu di chuyn d liu........................................................................ 198 20.3 Tc nhn (Agent)........................................................................................ 199 20.4 Cc loi nhn bn....................................................................................... 200 20.5 Nhn bn snapshot(Snapshot replication)............................................... 200 20.5.1 Gii thiu .............................................................................................. 200 20.5.2 Tc nhn (agent) ................................................................................... 201 20.6 Nhn bn giao dch (transactional replication)...................................... 202 20.6.1 Gii thiu .............................................................................................. 202 20.6.2 Tc nhn (agent) ................................................................................... 202 20.6.3 Thu dn trong nhn bn transaction ..................................................... 204 20.7 Cc dng nhn bn giao dch.................................................................... 204 20.7.1 Cp nht Subscriber lp tc(Immediate_Updating Subscriber)........... 204 20.7.2 Nhn bn nhng thc thi ca Stored procedure ................................... 207 20.8 Nhn bn kt hp (Merge replication) .................................................... 207 20.8.1 Gii thiu .............................................................................................. 207 20.8.2 Tc nhn (agent) ................................................................................... 208 20.8.3 Gii quyt tranh chp trong nhn bn kt hp ..................................... 209
8

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

20.9

Gii quyt tranh chp................................................................................ 209

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

1 Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000


1.1 Gii thiu SQL Server 2000
SQL Server 2000 bao gm mt s c trng to nn mt H qun tr c s d liu p ng c yu cu rt cao trong thc thi c s d liu. 1.1.1 Cc c trng ca SQL Server 2000:

Easy Installation

Integration with Internet

Supports Client/Server model

Operating System Compatibility

Hnh 1.1. Cc c trng ca SQL Server D ci t (Easy Installation): SQL Server cung cp cc cng c qun tr v pht trin cho ngi s dng d dng ci t, s dng v qun l h thng. Tch hp vi Internet(Integration with Internet): SQL Server 2000 database engine h tr XML. N c ti u c th chy trn mi trng c s d liu rt ln (Very Large Database Environment) ln n Tera-Byte v c th phc v cng lc cho hng ngn user. M hnh lp trnh (programming model) SQL Server 2000 c tch hp vi kin trc Windows DNA tr gip cho pht trin ng dng Web. N cng h tr mt s c tnh khc nh English Query ngi pht trin h thng c th truy vn d liu thn thin hn. V Microsoft Search Services cung cp kh nng tm kim rt mnh, c bit thch hp cho pht trin ng dng Web. H tr kin trc Client/Server(Supports Client/Server model): ng dng c th chy trn Client, truy cp d liu c lu tr trn Server. Server c nhim v x l cc yu cu v tr li kt qu cho Client. Tng thch vi nhiu h iu hnh(Operating System Compatibility): C th ci t trn hu ht cc h iu hnh ca Microsoft (danh sch chi tit km theo). Ch khi ci t trn Windows NT Server 4, bn phi chy thm Service Pack 5(SP5).

10

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

Operating System

Enterprise Standard Personal Developer Desktop Edition Edition Edition Edition Engine

SQL Server CE

Enterprise Evaluation Edition Supported

Microsoft Windows 2000 DataCenter

Supported Supported Supported Supported Supported N/A

Windows 2000 Supported Supported Supported Supported Supported N/A Advanced Server Windows 2000 Supported Supported Supported Supported Supported N/A Server Windows 2000 N/A Professional N/A Supported Supported Supported N/A

Supported

Supported Supported Supported

Microsoft Supported Supported Supported Supported Supported N/A Windows NT 4.0 Server, Enterprise Edition Windows NT 4.0 Server Supported Supported Supported Supported Supported N/A N/A N/A N/A Supported Supported Supported N/A Supported N/A N/A N/A Supported N/A N/A

Supported Supported N/A

Windows NT N/A 4.0 Workstation Microsoft Windows 98 Microsoft Windows CE N/A N/A

Supported N/A

1.1.2 Cc phin bn-edition ca SQL Server Enterprise: Cha y cc c trng ca SQL Server v c th chy tt trn h thng ln n 32 CPUs v 64 GB RAM. Thm vo n c cc dch v gip cho vic phn tch d liu rt hiu qu (Analysis Services). Standard: Rt thch hp cho cc cng ty va v nh v gi thnh r hn nhiu so vi Enterprise Edition, nhng li b gii hn mt s chc nng cao cp khc, edition ny c th chy tt trn h thng ln n 4 CPU v 2 GB RAM. Personal: c ti u ha chy trn PC nn c th ci t trn hu ht cc phin bn ca windows, k c Windows 98.

11

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

Developer: C y cc tnh nng ca Enterprise Edition nhng c ch to c bit nh gii hn s lng ngi kt ni vo Server cng mt lc.... y l edition m cc bn mun hc SQL Server cn c. Edition ny c th ci trn Windows 2000 Professional hay Win NT Workstation. Desktop Engine (MSDE): y ch l mt engine chy trn desktop v khng c user interface (giao din). Thch hp cho vic trin khai ng dng my client. Kch thc c s d liu b gii hn khong 2 GB. Win CE : Dng cho cc ng dng chy trn Windows CE Trial: C cc tnh nng ca Enterprise Edition, download free, nhng gii hn thi gian s dng. 1.1.3 Cc Version ca SQL Server SQL Server ca Microsoft c th trng chp nhn rng ri k t version 6.5. Sau Microsoft ci tin v hu nh vit li mt engine mi cho SQL Server 7.0. Cho nn c th ni t version 6.5 ln version 7.0 l mt bc nhy vt. C mt s c tnh ca SQL Server 7.0 khng tng thch vi version 6.5. Trong khi t Version 7.0 ln SQL Server 2000 th nhng ci tin ch yu l m rng cc tnh nng v Web v lm cho SQL Server 2000 ng tin cy hn.

1.2

Cc thnh phn quan trng trong SQL Server 2000

SQL Server 2000 c cu to bi nhiu thnh phn nh Relational Database Engine, Analysis Service v English Query.... Cc thnh phn ny khi phi hp vi nhau to thnh mt gii php hon chnh gip cho vic lu tr v phn tch d liu mt cch d dng. 1.2.1 Relational Database Engine y l mt engine c kh nng cha d liu cc quy m khc nhau di dng table v h tr tt c cc kiu kt ni (data connection) thng dng ca Microsoft nh ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC). Ngoi ra n cn c kh nng t iu chnh (tune up), v d nh s dng thm cc ti nguyn (resource) ca my khi cn v tr li ti nguyn cho h iu hnh khi mt user log off. 1.2.2 Replication - C ch to bn sao Gi s bn c mt c s d liu dng cha d liu c cc ng dng thng xuyn cp nht. Bn mun c mt ci c s d liu ging y ht nh th trn mt server khc chy bo co (report Database) (cch lm ny thng dng trnh nh hng n hiu nng ca server chnh). Vn l report server ca bn cng cn phi c cp nht thng xuyn m bo tnh chnh xc ca cc bo co. Bn khng th dng c ch back up and restore trong trng hp ny. Lc
12

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

c ch replication ca SQL Server s c s dng bo m cho d liu 2 c s d liu c ng b.

Hnh 1.2. Tng quan Microsoft SQL Server 1.2.3 Data Transformation Service (DTS) - Dch v chuyn dch d liu Nu bn c d liu cc dng khc nhau c th nh cha trong Oracle, DB2 (ca IBM), SQL Server, Microsoft Access...., bn mun chuyn ton b d liu ny sang SQL Server. Cng vic ny c thc hin d dng bng cch s dng dch v DTS. 1.2.4 Analysis Service - Dch v phn tch d liu Ta nhn thy thc t rng, d liu c lu tr rt nhiu, ht nm ny n nm khc, nhng khi cn bit mt tri thc no t th khng c. Do

13

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

Microsoft cung cp cho bn mt cng c rt mnh gip cho vic phn tch d liu tr nn d dng v hiu qu bng cch dng khi nim hnh khi nhiu chiu (multidimension cubes) v k thut "khai ph d liu" -data mining. 1.2.5 English Query Truy vn d liu s dng ting Anh y l mt dch v gip cho vic truy vn d liu bng ting Anh "trn" (plain English). 1.2.6 Meta Data Service Dch v ny gip cho vic cha ng v thao tc vi Meta Data d dng hn. Meta data l nhng thng tin m t v cu trc ca d liu trong c s d liu nh d liu. Bi v nhng thng tin ny cng c cha trong c s d liu nn cng l mt dng d liu nhng phn bit vi d liu "chnh thng" ngi ta gi n l Meta Data. 1.2.7 SQL Server Books Online Sch dy SQL Server trc tuyn y l cun sch trc tuyn c nh km khi ci t SQL Server. N l ti liu khng th thiu i vi nhng ngi mun lm vic thc s vi h qun tr c s d liu ny.

Hnh 1.3. Ca s hng dn SQL Server (Book Online)

14

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

1.3

SQL Server Tools

Cng c qun tr SQL Server. 1.3.1 Enterprise Manager y l mt cng c cho ta thy ton cnh h thng c s d liu mt cch rt trc quan. N rt hu ch c bit cho ngi mi hc v khng thng tho lm v SQL.

Hnh 1.4. Ca s Enterprise Manager 1.3.2 Query Analyzer Tip theo l Query Analyzer. i vi mt DBA gii th hu nh ch cn cng c ny l c th qun l c mt h thng c s d liu m khng cn n nhng th khc. y l mt mi trng lm vic kh tt v ta c th nh bt k cu lnh SQL no v chy ngay lp tc.

Hnh 1.5. Ca s Query Analyzer 1.3.3 SQL Profiler Cng c th ba cn phi k n l SQL Profiler. N c kh nng "chp" (capture) tt c cc s kin hay hot ng din ra trn mt SQL server v lu li di dng text file rt hu dng trong vic kim sot hot ng ca SQL Server.

15

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

Ngoi mt s cng c trc quan nh trn chng ta cng thng hay dng osql v bcp (bulk copy) trong command prompt.

1.4
-

Kin trc ca SQL Server

SQL Server c thit k lm vic hiu qu trn 2 mi trng: H thng c s d liu Client/Server (Client/Server Database system) H thng c s d liu Destop (Destop Database system)

1.4.1 H thng c s d liu Client/Server

Server
Client Software SQL Server Database Software

Network Connection Software

Hnh 1.6. H thng c s d liu Client/Server 1.4.2 H thng c s d liu Desktop

Hnh 1.7. H thng c s d liu Desktop

16

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

1.5

SQL Server Database

Ta bit, Database l tp hp nhng d liu c lu tr trong file nm trn a. Mt Database s cha nhng file d liu trong c nhng d liu thc. SQL Server c 2 kiu Database:

System databases Sample User databases

Hnh 1.7. Mt s c s d liu h thng v c s d liu v d System Databases User Databases

System Databases cha nhng thng tin v SQL SERVER. SQL Server s dng System Databases thc hin v qun l cc Database ngi dng (User Databases). System Databases v cc sample user Databases c to ra mc nh ngay khi ci t h thng.

1.6

Database Objects-Cc i tng trong c s d liu

Tables: Cc bng cha d liu Columns: Cc ct trong bng Rows: Cc hng trong bng Data types: Cc kiu d liu Constraints: Cc rng buc d liu Defaults: Gi tr mc nh ca ct no Rules: Cc lut c thit t trn d liu Indexs: Ch s Views:Cc khung nhn Stored Proceduces: Cc th tc Triggers Cc i tng s c cp chi tit trong nhng chng sau.

17

Chng 1. TNG QUAN H QUN TR C S D LIU SQL SERVER 2000

1.7
1. A B C D

Cu hi trc nghim

Thnh phn no sau y cho php ngi dng qun l cc i tng trong SQL Server bng ha. Service Manager Query Analyzer Enterprise Manager Book Online

2. Thnh phn no sau y cung cp giao din ha (GUI) cho php ngi pht trin ng dng v ngi qun tr h thng c th thc hin nhng cng vic hng ngy nh truy vn tables, thao tc d liu trong bng mt cch d dng A B C D Service Manager Query Analyzer Enterprise Manager Book Online

3. C th chuyn mt c s d liu c xy dng trn Microsoft Access sang SQL Server c khng? A B 4. A B 5. A B 6. C Khng Bn c th ci t phin bn Enterprise trn h iu hnh Windows 2000 Professional khng? C Khng SQL Server 2000 c cho php to bn sao ca mt c s d liu khng? C Khng Khi ci t SQL Server 2000 trn WinNT Server 4, bn cn ci t thm h tr?

18

Chng 2. THIT K V THC THI C S D LIU

2 Chng 2. THIT K V THC THI C S D LIU


2.1 Cu trc ca SQL Server
Nh trnh by cc bi trc mt trong nhng c im ca SQL Server 2000 l Multiple-Instance nn khi ni n mt (SQL) Server no l ta ni n mt Instance ca SQL Server 2000, thng thng l Default Instance. Mt Instance ca SQL Server 2000 c 4 System Databases v mt hay nhiu user Database. Cc System Databases bao gm: Master: Cha tt c nhng thng tin cp h thng (system-level information) bao gm thng tin v cc c s d liu khc trong h thng nh v tr ca cc data files, cc login account v cc thit t cu hnh h thng ca SQL Server (system configuration settings). Tempdb: Cha tt c nhng table hay stored procedure c tm thi to ra trong qu trnh lm vic bi user hay do bn thn SQL Server engine. Cc table hay stored procedure ny s bin mt khi khi ng li SQL Server hay khi ta disconnect. Model: C s d liu ny ng vai tr nh mt bng tm (template) cho cc c s d liu khc. Ngha l khi mt user Database c to ra th SQL Server s copy ton b cc system objects (tables, stored procedures...) t Model Database sang Database mi va to. Msdb: C s d liu ny c SQL Server Agent s dng hoch nh cc bo ng v cc cng vic cn lm (schedule alerts and jobs).

2.2

Cu trc vt l ca mt c s d liu SQL Server

Mi mt c s d liu trong SQL Server u cha t nht mt data file chnh (primary), c th c thm mt hay nhiu data file ph (Secondary) v mt transaction log file. Primary data file (thng c phn m rng .mdf): y l file chnh cha data v nhng system tables. Secondary data file (thng c phn m rng .ndf): y l file ph thng ch s dng khi c s d liu c phn chia cha trn nhiu da. Transaction log file (thng c phn m rng .ldf): y l file ghi li tt c nhng thay i din ra trong mt c s d liu v cha y thng tin c th roll back hay roll forward khi cn. Data trong SQL Server c cha thnh tng Page 8KB v 8 page lin tc to thnh mt Extent nh hnh v di y:

19

Chng 2. THIT K V THC THI C S D LIU

Hnh 2.1. Cu trc vt l ca mt c s d liu SQL Server Trc khi SQL Server mun lu d liu vo mt table n cn phi dnh ring mt khong trng trong data file cho table . Nhng khong trng chnh l cc extents. C 2 loi Extents: Mixed Extents (loi hn hp) dng cha d liu ca nhiu tables trong cng mt Extent. Uniform Extent (loi thun nht) dng cha d liu ca mt table. u tin SQL Server dnh cc Page trong Mixed Extent cha d liu cho mt table sau khi d liu tng trng th SQL dnh hn mt Uniform Extent cho table .

2.3

Nguyn tc hot ng ca transaction log trong SQL Server

Transaction log file trong SQL Server dng ghi li cc thay i xy ra trong c s d liu. Qu trnh ny din ra nh sau: u tin khi c mt s thay i d liu nh Insert, Update, Delete c yu cu t cc ng dng, SQL Server s ti (load) data page tng ng ln memory

20

Chng 2. THIT K V THC THI C S D LIU

(vng b nh ny gi l data cache), sau d liu trong data cache c thay i(nhng trang b thay i cn gi l dirty-page). Tip theo mi s thay i u c ghi vo transaction log file cho nn ngi ta gi l write-ahead log. Cui cng th mt qu trnh gi l Check Point Process s kim tra v vit tt c nhng transaction c commited (hon tt) vo a cng (flushing the page).

Hnh 2.2. Qu trnh hot ng ca Transaction Ngoi Check Point Process nhng dirty-page cn c a vo a bi mt Lazy writer. y l mt thnh phn lm nhim v qut qua phn data cache theo mt chu k nht nh sau li dng ch ln qut ti. Check Point Process hot ng nh th no c th m bo mt transaction c thc thi m khng gy ra d liu bn-dirty data. Trong hnh v bn di (Transaction Recovery), mt transaction c biu din bng mt mi tn. Trc nm ngang l trc thi gian. Gi s mt Check Point c nh du vo thi im gia transaction 2 v 3 nh hnh v v sau s c xy ra trc khi gp mt Check point k tip. Nh vy khi SQL Server c restart n s da trn nhng g ghi trong transaction log file phc hi d liu (xem hnh v). iu c ngha l SQL Server s khng cn lm g c i vi transaction 1 v ti thi im Check point data c lu vo a ri. Trong khi transaction 2 v 4 s c Roll Forward v tuy c commited nhng do s c xy ra trc

21

Chng 2. THIT K V THC THI C S D LIU

thi im check point k tip nn d liu cha kp lu vo a. Tc l da trn nhng thng tin c ghi trn log file SQL Server hon ton c y c s vit vo a cng. Cn transaction 3 v 5 th cha c commited (do b down bt ng) cho nn SQL Server s Roll Back hai transaction ny da trn nhng g c ghi trn log file.

Hnh 2.3. Khi phc Transaction

2.4

Cu trc logic ca mt SQL Server Database

Hu nh mi th trong SQL Server c t chc thnh nhng objects v d nh tables, views, stored procedures, indexes, constraints.... Nhng system objects trong SQL Server thng c bt u bng ch sys hay sp. Cc objects trn s c nghin cu ln lt trong cc bi sau.

2.5

Cc kiu d liu trong SQL Server (data types)

2.5.1 Integers

2.5.1.1 Bigint
L kiu d liu Integer c min gi tr t -2^63 (-9223372036854775808) n 2^63-1 (9223372036854775807).

22

Chng 2. THIT K V THC THI C S D LIU

2.5.1.2 Int
L kiu d liu Integer c min gi tr t -2^31 (-2,147,483,648) n 2^31 - 1 (2,147,483,647).

2.5.1.3 Smallint
L kiu d liu Integer c min gi tr t 2^15 (-32,768) n 2^15 - 1 (32,767).

2.5.1.4 Tinyint
L kiu d liu Integer c min gi tr t 0 n 255.

2.5.1.5 Bit
Ch c mt trong hai gi tr l 0 hoc 1 2.5.2 Decimal and Numeric

2.5.2.1 Decimal
chnh xc c xc nh v min gi tr t -10^38 +1 n 10^38 1.

2.5.2.2 Numeric
Chc nng tng t nh decimal. 2.5.3 Money and Smallmoney

2.5.3.1 Money
L kiu d liu tin t c min gi tr t -2^63 (-922,337,203,685,477.5808) n 2^63 - 1 (+922,337,203,685,477.5807

2.5.3.2 Smallmoney
L kiu d liu tin t c min gi tr t -214,748.3648 n +214,748.3647 2.5.4 Approximate Numerics

2.5.4.1 Float
chnh xc (phn thp phn) thay i v min gi tr t -1.79E + 308 n 1.79E + 308.

2.5.4.2 Real
chnh xc (phn thp phn) thay i v min gi tr t -3.40E + 38 n 3.40E + 38.
23

Chng 2. THIT K V THC THI C S D LIU

2.5.5 Datetime and Smalldatetime

2.5.5.1 Datetime
Kiu d liu ngy/thng t January 1, 1753, ti December 31, 9999, vi chnh xc l 3/100 ca second, hoc 3.33 milliseconds.

2.5.5.2 Smalldatetime
Kiu d liu ngy/thng t January 1, 1900, ti June 6, 2079, vi chnh xc l 1 pht. 2.5.6 Character Strings

2.5.6.1 Char
Kiu d liu character c di xc nh v khng theo m Unicode, c kh nng lu tr ti a 8,000 characters.

2.5.6.2 Varchar
Kiu d liu character c di thay i v khng theo m Unicode, c kh nng lu tr ti a 8,000 characters.

2.5.6.3 Text
Kiu d liu character c di thay i v khng theo m Unicode, c kh nng lu tr ti a 2^31 - 1 (2,147,483,647) characters. 2.5.7 Unicode Character Strings

2.5.7.1 Nchar
Kiu d liu character c di xc nh v theo m Unicode, c kh nng lu tr ti a 4,000 characters.

2.5.7.2 Nvarchar
Kiu d liu character c di thay i v theo m Unicode, c kh nng lu tr ti a 4,000 characters.

2.5.7.3 Ntext
Kiu d liu character c di thay i v theo m Unicode, c kh nng lu tr ti a 2^30 - 1 (1,073,741,823) characters.

24

Chng 2. THIT K V THC THI C S D LIU

2.5.8 Binary Strings

2.5.8.1 Binary
Kiu d liu Binary c di xc nh v kh nng lu tr ti a 8,000 bytes.

2.5.8.2 Varbinary
Kiu d liu Binary c di thay i v kh nng lu tr ti a 8,000 bytes.

2.5.8.3 Image
Kiu d liu Binary c di thay i v kh nng lu tr ti a 2^31 - 1 (2,147,483,647) bytes. 2.5.9 Cc kiu d liu khc

2.5.9.1 Cursor
L mt tham chiu ti mt con tr

2.5.9.2 Sql_variant
L kiu d liu c kh nng lu tr rt nhiu kiu d liu khc nhau ca SQL SERVER, ngoi tr text, ntext, timestamp, and sql_variant.

2.5.9.3 Table
L kiu d liu c bit c s dng lu tr tp kt qu ca mt qu trnh x l.

2.5.9.4 Uniqueidentifier
L kiu d liu c kh nng t ng cp nht gi tr khi c 1 bn ghi c thm mi (tng t nh kiu d liu Autonumber ca Microsoft Access)

25

Chng 2. THIT K V THC THI C S D LIU

2.6

Cu hi trc nghim

1. C s d liu h thng c s dng nh l template khi to tt c cc c s d liu mi. 2. Mt c s d liu trong SQL Server cha t nht file? 3. Cc file cha c s d liu thng c t ng dn ? 4. Mt c s d liu mun chuyn sang thc hin trn my tnh khc c ci SQL Server, thng thng bn phi copy i nhng file ? 5. Nhng thay i trong mt c s d liu c ghi li file ? 6. D liu ct 1 c s dng lu tr d liu v sn phm ca 1 ca hng, bn hy chn kiu d liu tng ng vi n ct 2. Ct 1 1. 2. 3. 4. 5. Tn sn phm Hnh nh m t Gi sn phm Hn s dng S lng tn trong kho p n a. b. c. d. e. Int Smallmoney Varchar Datetime Image Ct 2

26

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

3 Chng 3. THIT K V THC THI C S D LIU- Phn thc hnh


Mc ch: S dng Enterprise Manager to, sa v xo c s d liu (database) To, sa v xo bng (table) Thm, sa, xo d liu trong cc bng Xem thng tin ca bng

3.1

To c s d liu s dng Enterprise Manager

Trong Enterprise Manager, chng ta c th to c s d liu trc tip hoc s dng h tr Wizard. Sau y l cch to trc tip: 1. 2. 3. 4. 5. Khi ng Service Manager (thao tc ny khi ng SQL SERVER). Kch chn Enterprise Manager trong thanh menu ca Microsoft SQL Server. Chn Server cha c s d liu Kch chn Action/New/Database t menu Action Nhp tn c s d liu (V d: Flights)

) Hnh 3.1 6. Kch OK

27

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

7.

Kch p vo i tng Database trong ca s bn phi, chng ta s nhn thy c s d liu Flights va c to

Hnh 3.2 SQL Server h tr thc hin Wizard cho mt vi cng vic chung. Sau y l cch to c s d liu thc hin Wizard: 1. Kch chn Tools/Wizard t menu Tool trn menu bar ca Enterprise Manager. 2. Chn Create Database Wizard (Hnh 3.3) 3. Kch OK 4. Kch Next 5. Nhp tn c s d liu (v d: Flight Information) 6. Kch Next

Hnh 3.3
28

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

Hnh 3.4 7. Xut hin ca s cho php nhp tn file cha c s d liu v kch thc ti a ca file.

Hnh 3.5
29

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

8. Kch Next. Xut hin ca s cho php tng kch thc c s d liu khi n qu ln v gii hn kch thc 9. Kch Next. Xut hin ca s cho php thay i tn v kch thc ca file log (ghi li lch s) ca c s d liu 10. Kch Next. Xut hin ca s cho php tng kch thc log file khi n qu ln v gii hn kch thc. 11. Kch Next

Hnh 3.6 12. Kch Finish hon thnh.

3.2

Sa c s d liu

Sau khi to c s d liu, chng ta c th thay i nh ngha ban u. Cc loi thay i: M rng, co hp kch thc data file hoc log file. To filegroups Thay i tn c s d liu

3.3
-

Xo c s d liu

Chn c s d liu cn xo Sau Delete.

3.4

Nghin cu c s d liu Flight_Information

3.4.1 Cu trc bng 1. Bng Airlines_Master: Chi tit ca cc Airlines

30

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

2. Bng Category_master: Danh mc cc Airlines

3. Bng Class_Master: Cc mc(hng v) airline cung cp

4. Bng City_Master: Cc thnh ph i v n

5. Bng Day_Master: Cc ngy c th phc v

31

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

6. Bng Meal: Cc thc n c th la chn

7. Bng Service: Cc dch v c cung cp

8. Bng Status_Master: Tnh trng ca v my bay

9. Airline_Service: Dch v c cung cp trn mi hng

32

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

10. Airline_Meal: Cc thc n c phc v trn mi hng

11. Flight: Cc chuyn bay ca cc hng

12. Flight_days: Ngy mi chuyn bay c th phc v

33

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

13. Flight_details: Chi tit ca mi chuyn bay

14. Passenger: Chi tit v cc khch hng

15. Reservation: Chi tit v vic t v my bay

3.4.2 D liu trn cc bng 1. Bng Airlines_Master


34

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

2. Bng Category_Master

3. Bng Class_Master

4. Bng City_Master

5. Bng Day_Master

6. Bng Meal

7. Bng Service

35

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

8. Bng Status_Master

9. Bng Airline_Service

10. Bng Airline_Meal

11. Bng Flight

36

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

12. Bng Flight_days

37

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

13. Bng Flight_details

14. Bng Passenger

15. Bng Reservation

38

Chng 3. THIT K V THC THI C S D LIU Phn thc hnh

3.5

Bi tp

1. To c s d liu Flight Informtion 2. Thm d liu vo cc bng (nh trn) 3. Chn Query Analyzer thc hin mt s yu cu sau: a. Tng gi tt c cc chuyn bay ca hng IC01 ln 10% b. Hng AI (Air India) quyt nh khng phc v thc n c meal_code= CONV. Hy xo thng tin lin quan. c. Xo ct Type ca bng Flight d. Xa bng Status_Master trong c s d liu e. Cp nht li ct Sex trong bng Passanger: Nu l F th sa li Females, nu l M th sa li l Males.

39

Chng 4. T-SQL PROGRAMING

4 Chng 4. T-SQL PROGRAMING


4.1 Gii thiu SQL Batch Processing

Individual SQL commands Grouped to form a batch Batch

Compiled as single execution plan

Hnh 4.1. Cch thc hin ca nhm lnh (Batches) 4.1.1 Cch thc Thi mt nhm lnh (Batches) Khi thc thi mt nhm lnh SQL Server s phn tch v tm bin php ti u cho cc cu lnh nh mt cu lnh n v cha execution plan c bin dch (compiled) trong b nh sau nu nhm lnh trn c gi li ln na th SQL Server khng cn bin dch m c th thc thi ngay iu ny gip cho mt batch chy nhanh hn. Nhng cu lnh nm trong 1 batch s c x l cng lc. Nu mt trong nhng cu lnh ca Batch khng thc hin c th Batch cng khng c thc hin 4.1.2 Lnh GO Lnh ny ch dng gi mt tn hiu cho SQL Server bit kt thc mt batch job v yu cu thc thi. N vn khng phi l mt lnh trong T-SQL.

40

Chng 4. T-SQL PROGRAMING

4.1.3 V d v Batch:
Use Pubs Select * from authors Update authors set phone= '890 451-7366 where au_lname= 'White' GO

4.1.4 Ch thch (comment) trong batch: V d:


USE Northwind GO -- First line of a multiple-line comment. SELECT * FROM Employees /*This is a comment*/

L chui k t trong chng trnh c compiler b qua. S dng ch thch hoc tm thi b qua nhng phn trong chng trnh ang c cn nhc Thc hin bo tr chng trnh ngun d dng Ch thch thng c dng ghi li tn chng trnh, tn tc gi, ngy ca nhng thay i chnh trong chng trnh Ch thch c th s dng biu din nhng tnh ton phc tp v nhng gii thch trong phng php lp trnh Cc kiu ca Comment: SQL dng du -- nh du phn ch thch cho cu lnh n v dng /*...*/ ch thch cho mt nhm.

4.2
SQL.

Cu lnh iu khin

Chng ta c th s dng cc cu lnh iu khin khi lp trnh cng vi T4.2.1 Begin..End C php:
BEGIN { END }

statement | statement_block

41

Chng 4. T-SQL PROGRAMING

4.2.2 If..Else IF...ELSE: R nhnh theo kt qu ca biu thc Logic. C php:


IF Boolean_expression { sql_statement | statement_block } [ ELSE { SQL SERVER_statement | statement_block } ]

V d:

Hnh 4.1 4.2.3 Vng lp While WHILE: Chng ta c th thc hin cu lnh SQL hoc khi cc lnh da trn mt s iu kin. Cc cu lnh trong While c thc hin lp i li li trong khi biu thc Logic cn ng. C php:
WHILE { [ { [ Boolean_expression statement | statement_block } BREAK ] statement | statement_block } CONTINUE ]

S dng BREAK v CONTINUE: Chng ta c th s dng t kha CONTINUE hoc BREAK trong vng lp WHILE iu khin vic thc hin cc cu lnh. V d:
42

Chng 4. T-SQL PROGRAMING USE pubs GO WHILE (SELECT AVG(price) FROM titles) < $30 BEGIN UPDATE titles SET price = price * 2 SELECT MAX(price) FROM titles IF (SELECT MAX(price) FROM titles) > $50 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear'

4.2.4 T kho GOTO Chng ta c th thay i c th t thc hin bng vic xc nh v tr (Label). C php:
GOTO label

4.2.5 T kho Return Chng ta c th s dng RETURN bt k v tr no thot ra khi khi, th tc. Nhng cu lnh sau lnh Return khng c thc hin C php:
RETURN [ integer_expression ]

4.2.6 Cu lnh CASE T kha Case tr li gi tr da trn kt qu ca biu thc logic. N c th c s dng bt k v tr no php ton c php. C php:
CASE expression WHEN expression1 THEN expression1 [[WHEN expression2 THEN expression2] []] [ELSE expression] END

V d 1:
SELECT au_fname,au_lname,CASE state WHEN 'OR' THEN 'Oregon' END AS StateName FROM authors

V d 2:

43

Chng 4. T-SQL PROGRAMING

UPDATE publishers SET state = CASE WHEN country <> "USA" THEN "--" ELSE state END, city =CASE WHEN pub_id = "9999" THEN "LYON" ELSE city END WHERE country <> "USA" OR pub_id = "9999"

4.3

Bin(Variables)
Grobal variables-Bin a phng Local variables- Bin ton cc

SQL Server h tr 2 loi bin:

Hnh 4.2. S dng bin ton cc 4.3.1 Grobal variables Bin ton cc trong SQL Server c bt u bng 2 k hiu @. Chng ta c th truy cp gi tr ca bt k bin no cng vi cu lnh SELECT n gin. Danh sch cc bin ton cc: Tn bin @@CONNECTIONS ngha S lng nhng kt ni vi Server t khi Server
44

Chng 4. T-SQL PROGRAMING

khi ng li @@CPU_BUSY @@CURSOR_ROWS @@DATEFIRST @@ERROR @@FETCH_STATUS @@IDENTITY @@LANGUAGE Thi gian (tnh theo milliseconds) ca h thng tnh t khi SQL Server khi ng S lng cc dng d liu ca con tr mi c m gn y nht Gi tr hin ti ca bin SET DATEFIRST ch ra ngy u tin ca M s li ca cu lnh T-SQL cui cng b li Trng thi truy nhp con tr: 0 nu trng thi truy nht cui cng thnh cng; -1 nu c li Gi tr xc nh (identity) cui cng c thm vo Tn ngn ng hin ti ang s dng

@@MAX_CONNECTIONS S lng ti a cc kt ni c th thc hin ng thi @@ROWCOUNT @@SERVERNAME @@SERVICENAME @@TRANSCOUNT @@VERSION 4.3.2 Local variables Cch khai bo v thc hin: S lng cc dng kt qu ca cu lnh SQL gn y nht Tn ca Server a phng Tn ca SQL Service trn my tnh hin ti S lng nhng giao dch ang c m Thng tin v phin bn SQL Server ang s dng

Hnh 4.3. S dng bin a phng (Local variables)


45

Chng 4. T-SQL PROGRAMING

4.4

Hm (Functions)

Hm c th c chia lm 3 loi nh sau: Rowset Functions : Loi ny thng tr v mt object v c i x nh mt table. V d nh hm OPENQUERY s tr v mt recordset v c th ng v tr ca mt table trong cu lnh Select. Aggregate Functions : Loi ny lm vic trn mt s gi tr v tr v mt gi tr n hay l cc gi tr tng. V d nh hm AVG s tr v gi tr trung bnh ca mt ct. Scalar Functions : Loi ny lm vic trn mt gi tr n v tr v mt gi tr n. Trong loi ny li chia lm nhiu loi nh nh cc hm v ton hc, v thi gian, x l kiu d liu String....V d nh hm MONTH('2002-09-30') s tr v thng 9. 4.4.1 Hm Conversion Hm conversion dng chuyn i gi tr ca mt kiu d liu ny sang kiu d liu khc. Thm na, chng ta c th s dng n t c mt lot nh dng ngy thng c bit. SQL Server cung cp hm chuyn i n gin CONVERT(). C php:
CONVERT(datatype[(length)] expression [ style]) EMPLOYEEID FROM

V d:
SELECT EMP EMPLOYEES ID: + CONVERT (CHAR(4),

4.4.2 Hm Data Parts


DatePart Hour Minute Second Millisecond Day of year Day Week Weekday Month Quarter Year Abbreviation hh Mi Ss Ms Dy Dd wk dw mm qq yy Values 0-23 0-59 0-59 0-999 1-366 1-31 1-53 1-7 1-12 1-4 1753-9999

46

Chng 4. T-SQL PROGRAMING

4.4.3 Hm ngy thng v hm ton hc Hm ngy thng (Date Functions)


Date Functions GETDATE() DATEADD(datepart,number,date) DATEDIFF(datepart,date1,date2) DATENAME(datepart,date) DATEPART(datepart,date)

Hm ton hc (Mathematical)
Mathematical Functions ABS(num_expr) CEILING(num_expr) FLOOR(num_expr) POWER(num_expr,y) ROUND(num_expr,length) Sign(num_expr) Sqrt(float_expr)

4.4.4 Hm h thng (System Function)


Function DB_ID([database_name]) DB_NAME([database_id]) HOST_ID() HOST_NAME() ISNULL(expr,value) OBJECT_ID(obj_name) OBJECT_NAME(object_id) SUSER_SID([login_name]) SUSER_ID([login_name]) SUSER_SNAME([server_user_id]) SUSER_NAME([server_user_id]) USER_ID([user_name]) USER_NAME([user_id])

47

Chng 4. T-SQL PROGRAMING

4.4.5 Hm nhm Sum(col_name) Avg(col_name) Count (col_name) Min(col_name) Max(col_name)

48

Chng 4. T-SQL PROGRAMING

4.5

Cu hi trc nghim

1. Batch l mt tp hp ca mt hoc nhiu cu lnh SQL c Client gi ti Server nh mt khi thng nht. A B ng Sai

2. Cu lnh no theo sau c dng thot khi vng lp While. A B C D Close Exit Break Khng c lnh no trong 3 lnh trn

3. Tp hp mt s cu lnh mun c thc hin 10 ln, s dng cu trc no sau y? A B C D IF...ELSE While Case Select

4. Cu lnh no theo sau c s dng yu cu SQL Server i 15 giy trc khi n tip tc? A B C D WAITFOR 00:00:15 DELAY WAITFOR DELAY BY 00:00:15 WAITFOR DELAY 00:00:15 WAIT FOR 00:00:15

5. Kim tra on m sau y: DECLARE @v_empcount INT SELECT @v_empcount = COUNT(*) FROM employee IF (@v_empcount>20) GOTO great ELSE GOTO less SELECT * FROM employee great: PRINT The number is greater GOTO end1 GO less: PRINT The number is less end1: GO

49

Chng 4. T-SQL PROGRAMING

Cu no l kt qu ca on m trn nu c 20 bn ghi trong bng Employee? A B C D Kt qu in ra l: The number is great Kt qu in ra l: The number is less Khng in ra g c C thng bo li

6. functions c s dng khi cn tr li cc thng tin v thit t (settings) ca SQL Server? A B C D Server Aggregate System Text

7. Pht biu no sau y l ng cho vic chuyn i (conversion) kiu d liu? A B C D Khi chuyn i bt k mt gi tr no khng phi l 0 (nonzero) sang kiu d liu bit th d liu s tr thnh 1. Khi chuyn i t kiu d liu Char thnh kiu d liu Money bn khng th c c k hiu $ i km. Kiu d liu Image khng th c chuyn thnh kiu d liu Binary. Nu bn khng ch ra di cho kiu d liu trong biu thc chuyn i, SQL Server s t ng gn cho n c di l 20.

8. Truy vn no sau y s tr li gi tr ca thng hin ti? A B C D Select DATEPART(mm,getdate()) As Month Select DATEPART(mon,getdate()) As Month Select GETDATE(DATEPART(MM)) As Month Select GETDATE(DATEPART(MON)) As Month

50

Chng 5. TRANSACTIONS V LOCKS

5 Chng 5. TRANSACTIONS V LOCKS


5.1 Gii thiu Transactions-Giao dch
Trong c s d liu a ngi dng, d liu c lu tr h thng my ch v cc chng trnh ca ngi s dng c th ng thi thao tc trn nhng d liu . Vic thc hin mt chng trnh truy cp v thay i ni dung ca c s d liu c gi l Transaction. Mt Transaction l mt hoc mt tp cc lnh c thc hin nh mt khi (unit of works), tc l n c th thnh cng hoc tht bi hon ton. C ngha l, mt transaction thnh cng nu tt c cc lnh trong transaction c thc hin v tht bi nu mt trong s cc lnh ca khi tht bi.

5.2

Cc tnh cht ca Transaction


-

m bo tnh ton vn d liu, mt giao dch phi c cc tnh cht sau: Atomicity _Nguyn t. Consistency_ Nht qun Isolation _ C lp Durability _Bn vng

4 tnh cht trn gi l tnh ACID ca giao dch

Atomicity _Nguyn t: m bo hoc ton b cc hot ng trong giao


dch thnh cng hoc tht bi

Consistency_ Nht qun: Khi transaction hon thnh, d liu phi trng
thi nht qun. V d: Trong 1 transaction, ti khon A thc hin chuyn tin cho 1 ti khon B l 5 triu, th sau khi hon thnh ti khon B c s tin l B+5triu v A l A-5triu.

Isolation _ C lp: Cho d c nhiu giao dch c th thc hin ng thi, h thng phi m bo rng s thc hin ng thi dn n mt trng thi h thng tng ng khi cc giao dch thc hin tun t theo mt th t no . Durability _Bn vng: Sau khi giao dch thnh cng, gi s xy ra s c
th tt c cc d liu c thay i trong giao dch vn c hi phc li theo yu cu giao dch. 5.2.1 Phn loi transaction C 3 loi: Explicit transactions (r rng) Implicit transactions (ngm nh)
51

Chng 5. TRANSACTIONS V LOCKS

Auto-Commit transactions (Transaction ch t ng thc hin)

Explicit transactions:
Explicit Transaction l transaction do ngi s dng t nh ngha. Chng ta phi nh ngha bt u v kt thc transaction, c dng nh sau: BEGIN TRAN INSERT RECORD DELETE RECORD COMMIT TRAN Begin transaction, commit transaction, rollbback transaction c s dng nh ngha Explicit Transaction. Trong BEGIN TRANSACTION l cu lnh nh du bt u transaction. COMMIT TRANSACTION l cu lnh kt thc mt transaction thnh cng. ROLLBACK TRANSACTION quay tr thi im bt u ca transaction (tc l tt c nhng thao tc c thc hin t lc Begin transaction s b hu b) hoc l mt v tr no c nh du.

Implicit transactions: L chuyn tc ngm nh.


N khng yu cu pht biu chuyn tc Begin transaction. Bn thn n t ng khi to.Trong SQLServer chuyn tc ngm nh mc nh ch ngh. Mun s dng v tt ch lm vic ca Implicit transaction ta thc hin nh sau: - Bt ch lm vic: SET implicit_transactions ON - Tt ch lm vic: SET implicit_transactions OFF

Auto-Commit transactions:
Tt c cc cu lnh T-SQL hoc thc hin thnh cng, hoc tht bi hon ton. Nu cu lnh thnh cng th n c commited, nu tht bi n s c rollback li. y l ch mc nh ca SQL SERVER

5.3

Cc mc c lp ca Transaction

5.3.1 Gii thiu Dirty Read (c cc d liu bn) Cc d liu bn (dirty data) l mt thut ng chung ch cc d liu c ghi bng mt giao tc nhng cn cha c lu gi li (committed). Mt dirty read dng
52

Chng 5. TRANSACTIONS V LOCKS

c cc d liu bn. iu nguy him ca vic c cc d liu bn l ch mt giao tc ghi n c th b b d. Nu vy th cc d liu bn s b y ra khi c s d liu v mi ngi c php x s nh l cc d liu cha bao gi tn ti. Nu mt giao tc khc no c cc d liu bn th giao tc c th lu gi hoc thc hin mt hnh ng no phn nh s hiu bit ca n v d liu bn. i lc dirty read c ngha, i lc n khng c ngha. Lc khc n c ngha rt nh to ngha v nguy c ca mt dirty read ph ng v nh vy lm ngn cn: 1. Cng vic tn thi gian ca h qun tr c s d liu cn ngn nga dirty read v 2. Mt tnh song song gy ra t s ch i cho n khi khng c th c mt dirty read. Sau y l mt s v d v nhng ci c th xy ra khi cho php c cc dirty read. V d 1: Chng ta hy xem xt vic chuyn ti khon.Gi s rng cc v chuyn c thc hin bng mt chng trnh P thc hin dy cc bc sau y: 1. Thm tin vo ti khon 2 2. Kim tra nu ti khon 1 c tin a) Nu khng c tin, ly tin ra khi ti khon 2 v kt thc b) Nu c tin, tr s tin t ti khon 1 v kt thc. Nu chng trnh P c thc hin mt cch c th t th vic chng ta thm tin tm thi vo ti khon 2 s khng c ngha g. Khng ai s nhn thy s tin v v n s b loi b nu vic chuyn tin l khng thc hin c. Tuy nhin, gi s rng c cc dirty read. Hy tng tng c 3 ti khon A1, A2, A3 vi 100$, 200$ v 300$ tng ng. Gi s rng giao tc T1 thc hin chng trnh P chuyn 150$ t A1 n A2. Cng mt thi gian, giao tc T2 chy chng trnh P chuyn 250$ t A2 n A3. C kh nng c cc dy s kin sau: 1. T2 thc hin bc 1 v thm 250$ vo A3 v by gi A3 c 550$ 2. T1 thc hin bc 1 v thm 150$ v A2 v by gi A2 c 350$ 3. T2 thc hin kim tra ca bc 2 v tm ra rng A2 c tin (350$) cho php chuyn 250$ t A2 sang A3.

53

Chng 5. TRANSACTIONS V LOCKS

4. T1 thc hin kim tra ca bc 2 v tm ra rng T1 khng c tin (100$) cho php chuyn 150$ t A1 sang A2. 5. T2 thc hin bc 2b. N tr i 250$ khi A2 v by gi A2 c 100$ v kt thc. 6. T1 thc hin bc 2a. N tr 150$ khi A2, by gi A2 c 50$ v kt thc. Tng s tin khng thay i; trong ba ti khon vn cn 600$. Nhng bi v T2 c d liu bn bc 3 trong 6 bc trn, chng ta khng bo v c vic mt ti khon tr nn m, l mc ch ca vic kim tra ti khon th nht xem ti khon ny c s tin thch hp hay khng. 5.3.2 Cc mc c lp Da vo mc dung th i vi nhng d liu khng chnh xc. Isolations c phn loi nh sau: -

Read Uncommitted Read Committed Repeatable read Serializable

Read Uncommitted: Cho php c c nhng d liu bn.


SQL cho php chng ta ch ra rng cc dirty read l chp nhn c vi mt giao tc cho trc. Chng ta s dng lnh SET TRANSACTION. 1) SET TRANSACTION READ WRITE 2) SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED Lnh trn lm hai vic: 1. Dng (1) khai bo rng giao tc c th ghi d liu 2. Dng (2) khai bo rng giao tc c th chy vi isolation level read-uncomitted. iu c ngha l giao tc c cho php c cc d liu bn. Ch rng, nu giao tc khng phi l read-only (tc l c th sa i c s d liu) v chng ta ch ra mc c lp (isolation level) READ UNCOMMITED th chng ta cng phi ch ra READ WRITE. Mc d, ch ngm nh cc giao tc l read-write. Tuy nhin SQL c mt ngoi l i vi trng hp c cho php cc dirty-read. Trong trng hp , gi thit ngm nh l giao tc l read-only, bi v cc giao tc read-write vi dirty read gy ra cc nguy him ng k nh chng ta
54

Chng 5. TRANSACTIONS V LOCKS

thy. Nu chng ta mun mt giao tc read-write chy vi read-uncommited nh l mc c lp th chng ta cn ch ra READ WRITE mt cch r rng nh trn.

Read Committed
SQLSV s dng chia s kho trong khi c d liu (ng dng ny khng c php c nhng d liu m ng dng khc thay i nhng cha c commited)_y l ch mc nh ca SQLSV. C php: SET TRANSACTION ISOLATION LEVEL READ COMMITED ;

Repeatable read:
Locks s c t trn tt c cc truy vn ang s dng, v cc transaction khc khng th cp nht -> khng dirty read.

Serializable: Xp hng th t (giao tc phi chy trc hoc sau mt giao


tc khc hon thnh). y mc Isolation hn ch nht, d liu phantom khng th xy ra. N ngn cn ngi dng thm, sa d liu cho n khi transaction hon thnh.

5.4

Locks

5.4.1 Khi nim Lock l c s dng hn ch vic truy cp n d liu trong mi trng a ngi dng. Microsoft SQL Server 2000 s dng kho m bo tnh ton vn v ng n ca c s d liu Nu kho khng c s dng, d liu trong CSDL c th tr thnh thiu logic, v nhng truy vn c thc hin trn d liu c th tr v kt qu khng nh mong mun Khi nim c bn ng sau vic kho l v user cn c nhng truy cp ring bit ti bng, v th server kho bng li cho tng user. 5.4.2 Phn loi Cc loi Lock trong SQL SERVER Pessimistic Lock (Kho bi quan) Optimistic Lock (Kho lc quan) Shared Locks (Kho chia s) Exclusive Locks (Kho c quyn) Update Locks (Kho cp nht)
55

Chng 5. TRANSACTIONS V LOCKS

Pessimistic Lock: Kha c p dng ngay khi d liu c yu cu sa


cha v kho ny ch gii phng khi vic sa cha hon thnh. iu ny chc chn rng khng c ngi dng khc ng thi sa d liu.

Optimistic Lock: Kho ny ch p dng khi vic sa cha c hon thnh v d liu thc s (actual data) chun b ghi ln bng thc s (actual table) Shared Locks: y l loi kho cn bn nht, cho php c d liu, khng cho php thay i bt k thuc tnh no ca d liu. Exclusive Locks: Lock ny ngn nga 2 ngi s dng cng cp nht, xo, c, thm mu tin ng thi. Update Locks: Kt hp gia Shared Locks v Exclusive Locks. Vi pht biu UPDATE ch ra mu tin cn cp nht bng lnh Where, trong khi cha cn cp nht bn ch Shared Locks, khi cn thc s thc thi, bn ch Exclusive Locks.

56

Chng 5. TRANSACTIONS V LOCKS

5.5
A B C D

Cu hi trc nghim

1. Cu lnh no cho php quay tr thi im bt u ca transaction hoc l mt v tr no c nh du. COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION BEGIN TRANSACTION

2. S thc hin ca mt chng trnh cho php truy cp v thay i ni dung ca c s d liu gi l g? A B C D UPDATE INSERT Transaction Khng c ci no trn

3. Khi sa cha c s d liu phi tun theo nguyn tc tt c hoc khng g c, th mi transaction c ni ti nh l: A B C D Consistent Durable Isolated Atomic

4. Explicit transaction khng yu cu bn nh ngha tng minh bt u v kt thc transaction. A B ng Sai

5. Cu lnh no l cu lnh kt thc mt transaction. A B C D COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION BEGIN TRANSACTION

6. Loi kha no sau y ngn nga 2 ngi s dng cng cp nht, xo, c, thm mu tin ng thi. A B C D Optimistic Lock Pessimistic Lock Shared Lock Physical Lock

57

Chng 5. TRANSACTIONS V LOCKS

58

Chng 6. BO MT V QUN L NGI DNG

6 Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)


C s d liu trong mt t chc c th cha nhng d liu quan trng v cn gi b mt. V th thc hin bo mt c s d liu rt cn thit i vi mt H qun tr c s d liu. Trong phn ny chng ta s bn v cc nguyn tc bo mt trn SQL Server 2000 v cch thc hin n.

6.1

Gii thiu v SQL Server Sercurity

SQL Server Sercurity s dng m hnh 3 mc nh sau:

1. Authentication 2. Ability to be user of one or more databases 3. Specific permissions to use against protected database objects

Hnh 6.1. Bo mt 3 mc ca SQL SERVER Mc ngoi cng l mc xc thc ngi dng ca NT v SQL Server Mc th 2 kim tra ngi dng c quyn s dng mt hay nhiu Database. Mc trong cng xc nh quyn ca ngi dng thc hin nhng cu lnh SQL trn nhng i tng Database c bo v.

6.2
-

Qun l ng nhp (Login)

SQL Server xc thc ngi dng hai mc: Login authentication: Xc thc ng nhp Permissions validation on user database: Kim tra quyn ca i tng ngi dng

6.2.1 Xc thc ng nhp Ng dng phi c Login account kt ni vi SQL SERVER. SQL Server xc nhn ngi dng bng 3 c ch:
59

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

SQL Server Authentication: Khi s dng SQL Server Authentication, ngi s dng phi nhp Account v Password c cp. Windows NT Authentication: Khi s dng Windows NT Authentication, SQL Server s xc minh li cng vi WinNT kim tra xem c trng khp khng, nu ng th cho php ng nhp. Mixed Mode Authentication: Ngi s dng c th ng nhp s dng SQL Server Authentication hoc Windows NT Authentication.

6.2.2 Kim tra quyn (Permission) Vi mi c s d liu, ngi dng c cp mt s quyn trn , v h ch c thc hin cc thao tc trong gii hn quyn ca h. SQL Server thc hin nhng bc sau trong khi kim tra quyn: Khi ngi dng thc hin mt thao tc, v d nh thc thi cu lnh TSQL hoc la chn cng vic trn thanh cng c ca EM, cu lnh TSQL s c gi ti SQL SERVER. Khi SQL Server nhn cu lnh T-SQL, n kim tra quyn ca ngi dng trn nhng i tng lin quan trong cu lnh T-SQL. o Nu ngi dng khng c php, SQL Server s bo li o Ngc li, n thc hin v tr v kt qu. 6.2.3 To Login Chng ta c nhiu cch to Login, s dng EM hoc cu lnh T-SQL SERVER. To Login bng EM: S dng Create Login Wizard v thc hin cc bc theo ch dn. To Login bng T-SQL: to mt login ta c lnh sau:
EXEC sp_addlogin 'phnhung', '123456'

xo mt login ta c lnh sau:


EXEC sp_droplogin 'Arwen'

60

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

Hnh 6.2. To Login

6.3
-

Qun l ngi dng

SQL Server cho php hai kiu User Accounts: System User Database User

6.3.1 SQL Server Users Mt user identifier (ID) xc nh mt User trong Database. Tt c quyn v s hu cc i tng trong Database c xc nh bng user accounts. User accounts c xc nh cho tng Database. V d: User account: abc trong Database Book khc user account: abc trong Database Customer. Quan h gia Database User v Login name: User trong Database c xc nh bng user ID, ch khng phi login ID. Bn thn login ID khng cp bt c quyn no cho ngi dng truy cp vo cc i tng trong Database. V d: sa l login account nh x ti ngi dng ti user account c bit c tn l dbo(database owner) trong bt k Database no.

61

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

6.3.2 Qun l Usename v Login name V d ch ra qu trnh cp cho mt ngi dng Windows 2000 truy cp Database v kt hp vi vic ng nhp bng user trong Database.
USE master GO sp_grantlogin 'OnlineDOMAIN\Arwen' GO sp_defaultdb @loginame = 'OnlineDOMAIN\Arwen', defdb = 'books' GO USE books GO sp_grantdbaccess 'OnlineDOMAIN\Arwen', 'Arwen' GO sp_revokedbaccess 'OnlineDOMAIN\Arwen', 'Arwen' GO

Trong : sp_grantlogin: cho php ngi dng hoc nhm account ca Windows NT/2000 truy cp vo Database bng Windows authentication. sp_defaultdb: thay i Database mc nh cho vic ng nhp. sp_grantdbaccess: thm account v cp quyn truy nhp cho n. sp_revokedbaccess: xo account t Database.

6.4

Qun l Role

Roles rt quan trng v n l cch chnh cung cp quyn cho ngi dng. Quyn c th c cp cho ngi dng bng cch cp quyn trc tip, cch ny lm cho ngi qun tr h thng lm vic rt mt thi gian v nhm chn v phi cp chi tit tng quyn cho tng ngi dng. Hoc quyn c th c cp thng qua Role n tng t nh khi nim group trong NT. Chng ta gn quyn cho tng Role v sau ngi dng c xp vo Role . Nh vy, cng vic ca ngi qun tr h thng tr nn d dng hn nhiu ln. SQL Server c Database Roles v Server Roles. Database Roles c s dng cung cp cc mc khc nhau truy cp vo c s d liu. Server Roles c s dng cho php hoc hn ch ngi s dng thc hin cc thao tc (operations) trn c s d liu. 6.4.1 Database Roles C mt kiu Database Role rt c bit, l public role. N c trong tt c cc Database.
62

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

N khng th xo. Tt c cc ngi dng u thuc v Public role, bao gm c sa account. db_owner: y l Role cao nht ngi dng c th c. Role ny cho php ngi dng mi quyn trn CSDL. Ngi dng sa nm trong Role ny. db_securityadmin: Cho php ngi dng qun l mi Roles v nhm ngi dng trong role. db_accessadmin: Cung cp cho ngi dng quyn thm hoc xo nhng ngi dng khc trong CSDL. db_ddladmin: Cho php ngi dng thc thi mi nhim v trn mi i tng trong CSDL: ngi dng c th to, sa, xo cc i tng. db_backupoperator: Cho php ngi dng thc hin vic backup d liu. db_datareader: Cho php ngi dng xem d liu trn cc bng ca CSDL. db_denydatawriter: Ngn cn ngi dng sa bt k d liu no trn bng. db_denydatareader: Ngn cn ngi dng xem bt k d liu no trn bng.

Sau y l mt s Database role v nhng quyn tng ng:

6.4.2 Server Roles Server roles c SQL Server 2000 cho php: Sysadmin: C y mi quyn trn SQL Server. Securityadmin: Cho php to v qun l vic ng nhp cho Server. Serveradmin: Cho php thit lp cu hnh ca cc instance trn SQL Server. Setupadmin: C kh nng qun l cc th tc khi ng v cc server c lin kt. Processadmin: C kh nng qun l cc tin trnh ang chy trn SQL Server. Diskadmin: C th qun l cc file trn a Dbcreator: Cho php to, sa, v xo CSDL

63

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

6.4.3 Thm thnh vin cho Role thm Role mi, chng ta c th thc hin bng EM hoc s dng th tc sp_addrole, v thm thnh vin cho Role, chungs ta s dng th tc sp_addrolemember. V d sau ch ra cch to Role v thm cc thnh vin cho role.
sp_addrole 'Teacher' GO sp_addrole 'Student' GO sp_addrole 'StudentTeacher' GO sp_addrolemember 'Teacher', 'NETDOMAIN\Peter' GO sp_addrolemember 'Teacher', 'NETDOMAIN\Cathy' GO sp_addrolemember 'StudentProfessor', 'NETDOMAIN\Diane' GO sp_addrolemember 'Student', 'NETDOMAIN\Mel' GO sp_addrolemember 'Student', 'NETDOMAIN\Jim' GO sp_addrolemember 'Student', 'NETDOMAIN\Lara' GO GRANT SELECT ON StudentGradeView TO Student GO GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor GO

6.5

i tng v quyn trn i tng (Database Objects and Object Permission)

6.5.1 i tng Cc i tng trong c s d liu: Database Object 1. Table 2.Column 3. Row 4. Data type

64

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

5. Constraint 6. Default 7. Rule 8. Index 9. Views 10. Stored Procedure 11. Trigger 6.5.2 Quyn Object permissions: iu khin ai c th truy cp v thao tc vi d liu trn bng (tables) v khung nhn (views) v ai c th c chy cc stored procedures. Statement permissions iu khin users no c th xo v to i tng trong Database.

Object Type
Table Column View Stored procedure

Possible Actions
SELECT, UPDATE, DELETE, INSERT, REFERENCE SELECT, UPDATE SELECT, UPDATE, INSERT, DELETE EXECUTE

6.5.3 Cho php v hu b quyn trn i tng User ngi m to ra cc i tng trong Database c gi l object owner. V th nhng user ny phi c quyn to ra nhng i tng trong Database. SQL Server s dng lnh GRANT, REVOKE, v DENY qun l quyn: GRANT: Cho php ngi dng thc hin thao tc nh SELECT, UPDATE, INSERT, DELETE hoc EXCUTED trn cc i tng. V d:

65

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

GRANT INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom

V d trn thc hin vic cp quyn INSERT, UPDATE, DELETE trn bng Authors cho ngi dng Mary, John, Tom. REVOKE: c s dng xo quyn ca ngi s dng. DENY: c s dng ngn cn ngi s dng thc hin cc thao tc trn cc i tng.

66

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)

6.6
A B C D

Cu hi trc nghim

1. Th tc no theo sau cho php thm mt account v cp quyn cho n? sp_grantdbacess sp_grantlogin sp_grantuser sp_grantall

2. Th tc no theo sau cho php thm mt nhm ti Server Role ? A B C sp_addsrvrolemember sp_addrolemember sp_addserverolemember

3. Role cho php chng ta gii hn hoc cho php ngi dng thc hin hng lot cc thao tc c gi l ..... roles A B C D Server Database User System

4. Nhng ngi dng to ra cc i tng trong c s d liu gi l A B C D Database Owner Table Owner Account user Administrator

5. Role no sau y khng th b xa A B C D Public Database Server System

6. Permissions no sau y quyt nh ngi dng c th to hoc xa cc i tng trong c s d liu? A B C D Statement Permissions User Permissions Object Permissions Database Permissions

7. Role no sau y c trong tt c cc c s d liu?

67

Chng 6. BO MT V QUN L NGI DNG (USER AND SERCURITY)


A B C Public Database Server

8. V khi nim, ci g theo sau tng ng vi group trong NT? A B C D Login Account Role User Account Permission

9. SQL Server s dng nhng lnh ..., ..., .... qun l Permissions? A B C GRANT, DENY, REVOKE ALLOW, DENY, REVOKE ALLOW, DISALLOW, PERMIT

68

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, MANAGING SERCURITY - Phn thc hnh


Mc ch: Vit cc cu lnh T-SQL thc hin cc kiu transactions nh ngha v s dng bin local v grobal To cc logins v users

7.1

Hng dn trc tip

7.1.1 Transactions L nhm cc yu cu c thc hin nh mt khi (unit). C 3 loi transactions: Implicit Explicit Auto-commit

7.1.1.1 Implicit Transactions


L chuyn tc ngm nh, bn thn n t ng khi to. Mc nh, Implicit Transactions ch OFF. Thc hin cc bc sau: 1. M QA 2. Thc hin cu lnh sau: To Implicit transaction thay i gi tr ca ct Category_code t D thnh Do trong bng Category_master(bng cha). ng thi thay i lun gi tr tng ng ca n trong bng Flight(bng con cha kho ngoi). Vic thay i ny bt buc phi thc hin ng thi trn hai bng hoc nu khng c th khng thay i g c .
SET implicit_transactions ON Select Category_code FROM Category_master Select Category FROM Flight Update Category_master Set Category_code='Do' Where Category_code='D' Update Flight Set Category='Do' where Category='D' 69

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

Select Category_code FROM Category_master Select Category FROM Flight COMMIT TRANSACTION SET implicit_transactions OFF

Kt qu:

Hnh 7.1. To Implicit Transactions Ch khi s dng implicit transaction ta phi s dng SET ON v SET OFF.

7.1.1.2 Explicit Transactions


L transaction tng minh, chng ta phi nh ngha bt u v kt thc transaction. Explicit Transactions cn c gi l User-defined transactions. Thc hin transaction tng gi v my bay (ct fare trong bng Flight_details) ln 200 cho hng v Ex v hng bay IC04, xem thng tin trc v sau khi cp nht. Cu lnh v kt qu thc hin nh sau:
BEGIN TRAN Fare_Increase Select Aircraft_code, Fare FROM Flight_details

70

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

Where Aircraft_code='IC04' AND Class_code='Ex' Update Flight_details Set Fare=Fare+200 Where Aircraft_code='IC04' AND Class_code='Ex' Select Aircraft_code, Fare FROM Flight_details Where Aircraft_code='IC04' AND Class_code='Ex' COMMIT TRAN

Hnh 7.2. To Implicit Transactions S dng Rollback Transaction Thc hin Transaction sau:
BEGIN TRAN Use_Rollback Select Aircraft_code, Fare FROM Flight_details Where Aircraft_code='IC04' AND Class_code='Ex' Update Flight_details Set Fare=Fare+200 Where Aircraft_code='IC04' AND Class_code='Ex'

71

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

Select Aircraft_code, Fare FROM Flight_details Where Aircraft_code='IC04' AND Class_code='Ex' if (Select Fare FROM Flight_details Where Aircraft_code='IC04' AND Class_code='Ex')>7000 ROLLBACK TRAN Select Aircraft_code, Fare FROM Flight_details Where Aircraft_code='IC04' AND Class_code='Ex' COMMIT TRAN

Kt qu thc hin:

Hnh 7.3. S dng Rollback Transaction

7.1.1.3 Autocommit Transaction


Thc hin nhng cu lnh sau:
create table Test(col1 int primary key, col2 char(3)) insert into Test values(1,'aaa') insert into Test values(2,'bbb')

Transaction trn l Autocommit transaction, v khng c BEGIN TRANSACTION. Autocommit transaction s t ng Commit nu khng xy ra li,

72

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

ngc li n s Rollback. V th, mc d li xy ra dng 1 nhng kt qu ca nhng cu lnh trc cng khng c thc hin. 7.1.2 Bin a phng (local) v bin ton cc(Global) Bin l i tng c th nm gi tr d liu. Chng ta c th s dng bin a phng biu din d liu trong cu lnh SQL SERVER. V d: declare @name_pas char(50) set @name_pas='Pam Smith' Select * from Passenger where [Name]=@name_pas Kt qu:

Hnh 7.4. S dng bin SQL Server cng h tr mt s bin ton cc h thng (system grobal), nm gi nhng thng tin hu ch i vi nhng ngi s dng c s d liu. Trc nhng bin ny phi c k hiu @@. V d:

73

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

Hnh 7.5 7.1.3 SQL Server Sercurity

7.1.3.1 To logins s dng Enterprise Manager.


Thc hin cc bc sau: 1. Kch Wizard trn Tool menu 2. Trong hp thoi Select Wizard, m rng Database 3. Kch p vo Create Login Wizard 4. Hon thnh cc bc tip theo. Ngoi ra, chng ta cng c th s dng sp_addlogin to mt login mi. V d: EXEC sp_addlogin phnhung, 123, Flight Information

7.2

Bi tp

1. S dng mt bin lu tnh trng t v my bay. Thc hin truy vn a ra thng tin v m s khch hng (PNR_No), S v (Ticket_No), Tn khch hng (Name) c tnh trng v my bay (Status) trong bng Reservation bng gi tr ca bin nhp vo. 2. Hin th tt c cc tn khch hng trong kiu ch in hoa. 3. Thc hin cc cu lnh sau bit kt qu:
SELECT DATENAME(DW, GETDATE()) SELECT DATENAME(DY, GETDATE()) SELECT DATENAME(YYYY, GETDATE()) SELECT DATENAME(QUARTER, GETDATE()) SELECT DATENAME(HH, GETDATE()) SELECT DATEADD(DAY,25,GETDATE())

74

Chng 7. T-SQL PROGRAMMING, TRANSACTIONS, SERCURITY Phn thc hnh

4. Thc hin mt s cu lnh sau v cho bit kt qu:


SELECT @@Language SELECT @@Servicename SELECT @@Servername SELECT @@Rowcount SELECT @@Connections

5. Thm mt tn login mi s dng th tc h thng sp_addlogin.

75

Chng 8. T-SQL V SQL NNG CAO

8 Chng 8. T-SQL V SQL NNG CAO


8.1 Gii thiu s lc v T- SQL (Transact -SQL)
Phn ny chng ta c tm hiu trong phn trc khi hc v ngn ng SQL, nn y ti ch gii thiu mt s v d n gin. Transact-SQL l ngn ng SQL m rng da trn SQL chun ca ISO (International Organization for Standardization) v ANSI (American National Standards Institute) c s dng trong SQL Server khc vi P-SQL (ProceduralSQL) dng trong Oracle. Trong bi ny chng ta s tm hiu s qua v 3 nhm lnh T-SQL c thc hin trong SQL Server. 8.1.1 Data Definition Language (DDL) y l nhng lnh dng qun l cc thuc tnh ca mt c s d liu nh nh ngha cc hng hoc ct ca mt bng, hay v tr data file ca mt c s d liu...thng c dng: CREATE object_Name ALTER object_Name DROP object_Name Trong object_Name c th l mt table, view, stored procedure, indexes... Chng ta xem xt mt s v d sau: Lnh Create sau s to ra mt bng tn STUDENT vi 3 ct StID, StName, StAddress.
USE Student_Management CREATE TABLE Student( StID int NOT NULL PRIMARY KEY, StName varchar(40) NOT NULL, StAddress varchar(40) )

Lnh Alter sau y cho php ta thay i nh ngha ca mt bng nh thm(hay bt) mt ct hay mt Constraint...Trong v d ny ta s thm ct StClass vo table Student.
USE Student_Management ALTER TABLE Student ADD StClass varchar(20)

Lnh Drop sau y s hon ton xa bng khi c s d liu


USE Northwind 76

Chng 8. T-SQL V SQL NNG CAO

DROP TABLE Student

8.1.2 Data Control Language (DCL): y l nhng lnh qun l cc quyn truy cp ln tng object (table, view, stored procedure...). Thng c dng sau:

GRANT REVOKE DENY

V d: Lnh sau s cho php user trong Public Role c quyn Select i vi table Student trong c s d liu Student_Management (Role l mt khi nim ging nh Windows Group s c bn k trong phn Security).
USE Student_Management GRANT SELECT ON Customers TO PUBLIC

Lnh sau s t chi quyn Select i vi table Student trong c s d liu Student_Management ca cc User trong Public Role.
USE Student_Management DENY SELECT ON Student TO PUBLIC

Lnh sau s xa b tc dng ca cc quyn c cho php hay t chi trc .


USE Student_Management REVOKE SELECT ON Student TO PUBLIC

8.2

Data Manipulation Language (DML):

y l nhng lnh ph bin dng x l data: Update, Insert, Delete. Sau y l mt s v d: Insert
USE Student_Management INSERT INTO Student VALUES ( TL01, 'Phm nh Thun', H ni, 43th)

Update
USE Student_Management UPDATE Student SET StClass = '45th' WHERE STId = TL01

77

Chng 8. T-SQL V SQL NNG CAO

Delete
USE USE Student_Management DELETE FROM Student WHERE STId = TL01

chy cc cu lnh th d trn bn cn s dng Query Analyser Son tho cu lnh v thc thi.

Hnh 8.1. Ca s son tho v thc hin cu lnh SQL

8.3

Cc cu lnh truy vn d liu

Cc cu lnh SQL n gin c c php v cch thc hin tng t nh gii thiu. Sau y l mt s cu lnh b sung v nng cao. 8.3.1 Thc hin Join kt ni cc bng Ta c th thc hin ly d liu t hai bng thng qua t kha JOIN.

8.3.1.1 INNER JOIN:


C php:

78

Chng 8. T-SQL V SQL NNG CAO

SELECT field1, field2, field3 FROM table1 INNER JOIN table2 ON table1.keyfield=table2.foreign_keyfield

V d: Gi s c hai bng: KHACHHANG: MaKH 01 02 03 04 DONHANG: MaSP H102 H106 H301 TenSP My in Bn Gh MaKH 01 03 03 TenKH Hong Thanh Vn L Th Nhn Phan Thanh Ha Phm Hng Thanh

Yu cu: a ra tn khch hng v tn sn phm khch hng mua.


SELECT KHACHHANG.TenKH, DONHANG.TenSP FROM KHACHHANG INNER JOIN DONHANG ON KHACHHANG.MaKH=DONHANG.MaKH

Kt qu: TenKH Hong Thanh Vn Phan Thanh Ha Phan Thanh Ha TenSP My in Bn Gh

INNER JOIN tr v tt c cc dng t hai bng tha mn iu kin. Nu nhng dng d liu c bn table1 m khng c trong table2 th s khng c hin th.

8.3.1.2 LEFT OUTER JOIN


C php:
SELECT field1, field2, field3 FROM table1 LEFT OUTER JOIN table2 ON table1.keyfield = table2.foreign_keyfield

79

Chng 8. T-SQL V SQL NNG CAO

V d:
SELECT KHACHHANG.TenKH, DONHANG.TenSP FROM KHACHHANG LEFT OUTER JOIN DONHANG ON KHACHHANG.MaKH=DONHANG.MaKH

Kt qu: TenKH Hong Thanh Vn L Th Nhn Phan Thanh Ha Phan Thanh Ha Phm Hng Thanh TenSP My in Bn Gh

LEFT OUTER JOIN tr v tt c cc dng c bng th nht, mc d bng th hai khng tha mn php ton. Nu d liu c bng th nht m khng c bng th hai th d liu vn hin th.

8.3.1.3 RIGHT OUTER JOIN


C php
SELECT field1, field2, field3 FROM table1 RIGHT OUTER JOIN table2 ON table1.keyfield = table2.foreign_keyfield

V d
SELECT KHACHHANG.TenKH, DONHANG.TenSP FROM KHACHHANG RIGHT OUTER JOIN DONHANG ON KHACHHANG.MaKH=DONHANG.MaKH

Kt qu: TenKH Hong Thanh Vn Phan Thanh Ha Phan Thanh Ha TenSP My in Bn Gh

RIGHT OUTER JOIN tr v tt c cc dng c bng 2, mc d bng 1 khng tha mn php ton. Nu d liu c bng 2 m khng c bng 1 th vn c hin th.

80

Chng 8. T-SQL V SQL NNG CAO

8.3.1.4 FULL OUTER JOIN


Dng Full Outer Join a d liu t 2 hay nhiu bng trong tt c ct bn bng th nht v th hai u c chn. Cc gi tr bn hai bng trng nhau th ch ly mt ln. V d:
USE Pubs SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a FULL OUTER JOIN Publishers p ON a.City = p.City ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

8.3.1.5 CROSS JOIN


Dng Cross Join ghp d liu t hai bng trong s hng thu c bng vi s hng ca bng th nht nhn vi s hng ca bng th hai. V d:
USE pubs SELECT au_fname, au_lname, pub_name FROM authors CROSS JOIN publishers WHERE authors.city = publishers.city ORDER BY au_lname DESC

8.3.2 Mnh Top n: Nu ta mun select n hng u tin m thi ta c th dng t kho Top. Nu c thm ORDER BY th kt qu s c order trc sau mi select. Chng ta cng c th select s hng da trn phn trm bng cch thm t kho Percent. V d sau s select 10 hng u tin theo th t:
SELECT DISTINCT TOP 10 ShipCity, ShipRegion FROM Orders ORDER BY ShipCity

8.3.3 Mnh INTO INTO Clause cho php ta ly d liu t mt hay nhiu bng, sau kt qu s c insert vo mt bng mi. Bng mi ny c to ra do kt qu ca cu lnh SELECT INTO. V d:
SELECT FirstName, LastName INTO EmployeeNames FROM Employers

81

Chng 8. T-SQL V SQL NNG CAO

Cu lnh trn s to ra mt bng mi c tn l EmployeeNames vi 2 ct l FirstName v LastName. Sau kt qu select c t table Employers s c insert vo bng mi ny. Nu table EmployeeNames tn ti SQL Server s bo li. Cu lnh ny thng hay c s dng ly mt lng d liu ln t nhiu bng khc nhau vo mt bng mi (thng dng cho mc ch tm thi (temporary table)) m khi phi thc thi cu lnh Insert nhiu ln. Mt cch khc cng select data t mt hay nhiu bng v insert vo mt bng khc l dng "Insert Into...Select...". Nhng cu lnh ny khng to ra mt bng mi. Ngha l table phi tn ti trc. V d:
INSERT INTO EmployeeNames SELECT FirstName, LastName FROM Employers

Ch l khng c ch "Value" trong cu Insert ny. 8.3.4 T kho UNION(Hp) Uninon c nhim v ghp ni kt qu ca 2 hay nhiu truy vn li thnh mt kt qu. V d: Gi s c table1(ColumnA varchar(10), ColumnB int) v table2(ColumnC varchar(10), ColumnD int). Ta mun select data t table1 v ghp vi d liu t table2 to thnh mt kt qu duy nht ta lm nh sau:
SELECT * FROM Table1 UNION ALL SELECT * FROM Table2

Nu khng c keyword ALL th nhng hng ging nhau t 2 table s ch xut hin mt ln trong kt qu. Cn khi dng ALL th cc hng trong 2 table u c trong kt qu bt chp vic lp li. Khi Dng Union phi ch hai chuyn: s ct select 2 queries phi bng nhau v data type ca cc ct tng ng phi compatible (tng thch). 8.3.5 T kho CUBE v ROLL UP c s dng tng kt d liu mc cao hn ca GROUP BY.

82

Chng 8. T-SQL V SQL NNG CAO

8.3.5.1 CUBE
Select + Group By + WITHCUBE Super Aggregate Row Row information

V d:
use Pubs SELECT Stor_Id, Payterms, SUM(Qty) AS Total_Quantity FROM Sales GROUP BY Stor_id, Payterms WITH CUBE

Kt qu:

83

Chng 8. T-SQL V SQL NNG CAO

8.3.5.2 ROLLUP Select + Group By + WITH ROLLUP

Row information

Tng t nh Cube, tuy nhin Rollup c th tng kt d liu n mc cui cng.

V d:
SELECT Stor_Id, Payterms, SUM(Qty) AS Total_Quantity FROM Sales GROUP BY Stor_id, Payterms WITH ROLLUP

Kt qu:

Khi dng With Rollup thay Cube, dng ny c thm vo 84

Chng 8. T-SQL V SQL NNG CAO

8.3.6 Mnh COMPUTE v COMPUTE BY Mnh COMPUTE a ra gi tr tng hp (thng qua cc hm nhm) trong mt hng mi. Kt qu chi tit v dng d liu tng hp c nhn thy trn cng 1 mn hnh kt qu. C php: COMPUTE <Expression1>,<Expression2> V d:

Hnh 8.2. Thc hin c php COMPUTER Nu thay mnh COMPUTE bng COMPUTE BY ta s nhn c kt qu sau:

85

Chng 8. T-SQL V SQL NNG CAO

Hnh 8.3. Thc hin c php COMPUTER BY

86

Chng 8. T-SQL V SQL NNG CAO

8.4

Cu hi trc nghim

1. Kt qu ca truy vn con c th l bao nhiu dng m cu lnh khng tr v li? A B C D Ch mt Ch mt, tr khi ng trc n c ton t ANY, ALL, EXISTS hoc IN. Khng gii hn Khng gii hn, tr khi ng trc n c ton t ANY, ALL, EXISTS hoc IN.

2. Truy vn con lin kt (correlated subqueries) khng th ng c lp. A B ng Sai

3. Nhng hm no sau y khng s dng c vi kiu d liu Character? A B C D AVG() SUM() MIN() MAX()

4. Trong cu lnh SELECT, nu cha cc t kho WHERE, GROUP BY, HAVING th chng phi ng theo th t no? A B C D HAVING, GROUP BY, WHERE WHERE, GROUP BY, HAVING WHERE, HAVING, GROUP BY GROUP BY, WHERE, HAVING

5. Kim tra truy vn sau: SELECT batch_id, subject_id, AVG(Marks) FROM batchperformance GROUP BY batch_id, subject_id WITH ROLLUP Kt qu cu lnh trn l g? A B C D im trung bnh ca tng kho hc (Batch) trong tng mn hc(Subject). im trung bnh ca tt c cc kho hc trong tng mn hc. im trung bnh ca tt c cc sinh vin ca mt kho hc trong tt c mn hc. im trung bnh ca tng kho hc tnh theo tt c cc mn hc.

6. Mc nh, php ton UNION gip ta nhn i s lng ca tp kt qu? A B ng Sai

87

Chng 9. T-SQL v SQL nng cao -Phn thc hnh

9 Chng 9. T-SQL V SQL NNG CAO Phn thc hnh


Thc hin nhng cng vic sau y bng Query Analyzer: 1. Hin tt c cc gi tr khc nhau ca PNR_no t bng Passenger 2. Ly ra 4 hng u tin t bng Meal 3. Lit k cc bn ghi trong bng Flight c m Aircraft_code l BA01 4. Lit k Name, PP No, Meal Pref cho cc hnh khch c PNR_no l 1 hoc 2 t bng Passenger 5. Hin th tt c cc tn hnh khch bt u bng ch ci A 6. Hin th chi tit tt c chuyn bay t thnh ph c m NY, sp xp theo trng source 7. Hin th tn ca cc hnh khch nam thm vo trc tn Mr 8. Hin th cc thng tin chi tit v chuyn bay nh aircraft code, regular fare, discounted fare cho hng nht (FC). Discount (gim gi) bng 25% gi thng thng. Tiu cc ct l Aircraft, Regular First Class fare, Discounted First Class fare. 9. Hin th v sp xp chi tit v cc chuyn bay ti thnh ph c m l Lon. Cc chuyn bay c c thi gian bay t nht c hin th u tin. 10. Hin th cc mn n khng phi l n chay (non-vegetarian) trn cc chuyn bay 11. Hin th status_code v description trong bng Status_master vi iu kin ch ci cui cng trong trng description khc d 12. Hin th aircraft_code ca ng bay vo Ch nht (Sunday) v th T (Wednesday). 13. Hin th tn nc m chuyn bay Fly Safe Airways n, lu l ch hin th nhng gi tr khc nhau. 14. Hin th s lng bn ghi c hin th bi truy vn trc. 15. Hin th tn ca dch v SQL Server ang chy trn my tnh. 16. Hin th tn ca nhng mn n (meal) c phc v trn British Airways (S dng truy vn con). 17. Hin th tn nhng hng bay (airlines) c nhng chuyn bay (flights) ni a xut pht t Mumbai (S dng truy vn con). 18. Hin th tui trung bnh ca nhng hnh khch l n.

88

Chng 9. T-SQL v SQL nng cao -Phn thc hnh

19. Tm tng s hnh khch c Fly Safe Airways phc v. 20. Tnh thi gian bay nh nht, ln nht, v trung bnh ca nhng chuyn bay n thnh ph c m s l NY. 21. Hin th s v (tickets) c t ca tng PNR_no. 22. Hin th s lng cc chuyn bay mi tun ca tng Aircraft. 23. Hin th nhng aircraft c tng s gh phc v >500 gh. 24. Hin th nhng PNR number v tui ca ngi gi nht. Lu , ch hin th nhng bn ghi c tui ngi gi nht >35. 25. Hin th s lng nhng la chn ba n c Non-vegetarian trn mi hng bay (airline). 26. Hin th s lng ca nhng hnh khch c tui ln hn 40 ca tng PNR number. Phi m bo rng tt c cc PNR number u c hin th. 27. Hin th Airline code(m hng bay), destition city code (m s ca thnh ph ch) v s nhng chuyn bay ca hng bay ti. Kt qu bao gm c tng s nhng chuyn bay ca tng hng v tng s ca tt c cc chuyn bay trong c s d liu.

89

Chng 10. RNG BUC D LIU V CH S

10 Chng 10. RNG BUC D LIU V CH S


10.1 Rng buc d liu
10.1.1 Gii thiu Nh chng ta bit, thc hin nhng rng buc d liu gip tt c cc gi tr ca d liu c lu tr ng n. Tt c d liu c thm vo c s d liu u phi tho mn cc rng buc. Sau y l mt s loi rng buc d liu:

Rng buc thc th Entity integrity

Rng buc tham chiu Referential integrity

Rng buc d liu

Rng buc min Domain integrity

NSD t nh ngha User-defined integrity

Hnh 10.1. Cc loi rng buc d liu 10.1.2 Rng buc thc th

Xc nh mt dng d liu l duy nht trong mt bng. Cn c bit n nh rng buc dng d liu (Row Integrity). SQL Server c mt s cng c thc hin rng buc thc th nh sau: -

PRIMARY KEY constraint UNIQUE constraint IDENTITY property

90

Chng 10. RNG BUC D LIU V CH S

10.1.3

Rng buc min d liu

L tp hp nhng d liu c php nhp vo mt ct trong bng. Cng c thc hin: -

DEFAULT definition FOREIGN KEY constraint CHECK constraint NOT NULL property Rules Rng buc tham chiu

10.1.4

L rng buc d liu gia kho chnh ca mt bng vi kho ngoi ca mt bng khc. Cng c thc hin: 10.1.5 FOREIGN KEY constraint CHECK constraint Rng buc NSD t nh ngha

Cho php ngi qun tr thm vo nhng rng buc m bo s ng n ca d liu. Cng c thc hin: Tt c SQL Server constraints Stored Procedures Triggers

10.2 Thc hin cc rng buc bng T-SQL


-

c thit t trn mt hoc mt tp hp cc ct ca bng. Nhm thit t nhng gii hn cho vic nhp gi tr cho ct d liu. C th c nh ngha ngay khi to bng hoc sa cu trc bng. PRIMARY KEY Constraint

10.2.1 C php:

Thit t mt hoc tp hp cc ct lm kho chnh ca bng.


CREATE TABLE Table_name (<Column_definition> PRIMARY KEY)

V d:
91

Chng 10. RNG BUC D LIU V CH S

CREATE TABLE Reservation_copy ( PNR_no int PRIMARY KEY )

10.2.2 C php:

UNIQUE Constraint

Quy nh ct ny phi c gi tr khc nhau trn mi dng


CREATE TABLE Table_name (<Column_definition> UNIQUE )

V d:
CREATE TABLE passenger_copy ( [PP no] VARCHAR(20) UNIQUE)

10.2.3 C php:

IDENTITY Property seed_value: gi tr ban u increment_value: gi tr tng

Quy nh gi tr ca mt ct no trong bng l t ng

CREATE TABLE Table_name (Column_name Data_Type IDENTITY [(<seed_value>, increment_value>)])

V d:
CREATE TABLE Reservation_Copy (ticket_no INT IDENTITY(1,1))

10.2.4

DEFAULT Definition

Thit t gi tr mc nh cho mt ct no . Nu ngi s dng khng nhp gi tr cho ct ny th n s nhn gi tr mc nh. C php:
CREATE TABLE Table_name (Column_name Data_Type DEFAULT default_value)

V d:
CREATE TABLE employee (employee_cd char(4), employee_nm varchar(50), grade char(2), hra varchar(10) default N.A.)

92

Chng 10. RNG BUC D LIU V CH S

10.2.5 bng) C php:

FOREIGN Key Constraint

Ch ra mt ct lm kho ngoi ca bng (nhm lin kt d liu trong hai

CREATE TABLE Table_name Column_name Data_Type, FOREIGN KEY (Column_name) REFERENCES Primarykey_Tablename)

V d:
CREATE TABLE Passenger (PNR_no int, ticket_no int, name varchar(15), FOREIGN KEY (PNR_no) REFERENCES Reservation)

10.2.6 C php:

CHECK Constraint

Gii hn d liu c lu tr trong ct.


CREATE TABLE Table_name (Column_name Data_Type CHECK (value1, value2, ..), ..)

V d:
CREATE TABLE Reservation (.., class_code char(3) CHECK(EX, FC, E), ..)

10.2.7

NOT NULL Constraint

Nu mt trng no c quy nh l NOT NULL, tc l khng rng th ngi s dng bt buc phi nhp d liu cho trng ny. C php:
CREATE TABLE Table_name (Column_name Data_Type NOT NULL, )

V d:
CREATE TABLE Passenger (, name varchar(15) NOT NULL, )

93

Chng 10. RNG BUC D LIU V CH S

10.2.8

Rules

Tng t nh CHECK constraints, nhng Rules c to nh mt i tng c lp, sau mi thit t cho ct d liu. C php:
CREATE RULE rule_name AS condition_expression : SP_BINDRULE rule_name, table_name.column_name

V d:
CREATE RULE check_PNR AS @pnr BETWEEN 1 AND 500 : SP_BINDRULE check_PNR, Reservation.PNR_no

10.3 Indexes
10.3.1 Gii thiu Khi nim v index trong c s d liu tng t nh phn index ca mt cun sch. Khi cn tm kim thng tin trn cun sch, ta khng cn phi lt tt c cc trang trong , m ch cn vo phn Index cui quyn v d xem thng tin m ta cn nm nhng trang no.V l do , tm kim thng tin thng qua index s nhanh hn nhiu ln. Trong c s d liu cng vy, h tr index cho php ngi dng tm d liu m khng cn qut ton b bng. Index c dng tm ra gi tr duy nht. Mc ch ca index xc nh dng no ang cha d liu cn tm. Index c s dng ng cch c th tng hiu qu thc hin trn CSDL bng cch gim thi gian truy cp. Index c th c to bi 1 hoc nhiu trng. SQL Server t ng to ch s cho nhng trng c xc nh l trng kho hoc rng buc duy nht (UNIQUE) Tuy nhin, nhng Tables c indexes yu cu nhiu vng trng trn a trong CSDL. Nhng lnh cn thc hin d liu yu cu nhiu thi gian hn bi v cn phi cp nht index. V th, Indexes thc s l con dao 2 lui, nu khng s dng ng cch, n s lm gim tc ca h thng.

94

Chng 10. RNG BUC D LIU V CH S

10.3.2 10.3.3

Li khuyn khi s dng indexes c s dng thng xuyn cho vic tm kim. Khi ct c dng sp xp d liu Khi ct ch cha ng vi gi tr khc nhau. Khi bng ch c vi dng . To Indexes

Chng ta ch nn thit t index trn nhng ct:

v khng nn p dng trong nhng trng hp:

Lnh to ch s trn bng: CREATE INDEX Ch c nhng ngi dng lm ch bng mi c quyn to ch s cho bng. C php:
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX index_name ON table_name (column_name[, column_name]) [WITH [PAD_INDEX] [[,]FILLFACTOR=x] [[,]DROP_EXISTING] ]

Trong : Fill factor c to ngay khi to index. Khi index c to, bng d liu (table data) c lu tr trong trang d liu (data page) theo th t ca gi tr trong ct c ch s.Khi bn ghi mi c thm vo bng hoc mt gi tr trong bng c thay i, SQL Server phi t chc vng trng cho bn ghi mi v cp nht li th t sp xp ca d liu. Trong khi thm bn ghi mi vo trang ch s y (full index page), SQL Server s di chuyn gn ng na s bn ghi ca bng sang trang mi to ra vng trng cho vic thm bn ghi, qu trnh ny gi l phn trang (page splits). Khi s khng c s thay i d liu, xc nh gi tr l 100 th trang s y v s chim mt phn rt nh b nh. Khi c s thay i d liu thng xuyn d liu trong bng, xc nh gi tr ca Fill Factor thp c nhiu hn vng trng cho trang d liu.

95

Chng 10. RNG BUC D LIU V CH S

10.3.4 -

Cc kiu Indexes Clustered index: xc nh th t lu tr vt l ca d liu trong bng Non-clustered index: xc nh sp xp logic ca d liu.

C 2 kiu Indexes:

10.3.4.1 Clustered index


Mt Table ch c th c 1 clustered index. Index c th kt hp nhiu ct (multiple columns). V d:
CREATE CLUSTERED (title_id) INDEX CLINDX_titleid ON roysched

10.3.4.2 Non-clustered index


Non clustered xc nh th t logic ca d liu. D liu c lu mt vng, index c lu vng khc, c con tr tr n vng lu tr d liu. Mt Table c th c nhiu non-clustered indexes, ln nht 249. Hng dn to Non-clustered Indexes: Ch nn thm ch s khi n thc s cn thit. Ch nn ch s nhng ct c truy cp thng xuyn. Mc nh, cu lnh CREATE INDEX to ra non-clustered index. S dng non-clustered index cho nhng ct c nhiu gi tr khc nhau, v d nh kt hp last name v first name (nu nh clustered index c s dng cho nhng ct khc).

V d:
CREATE NONCLUSTERED (ord_num) INDEX NCLINDX_ordnum ON sales

10.3.5

Tnh cht ca Indexes

Clustered and non-clustered indexes c th c to nh Unique hoc Composite. Unique indexes: khng cho php gi tr trng nhau trong ct index. Composite indexes: cho php hai hoc nhiu ct kt hp to ra index.

96

Chng 10. RNG BUC D LIU V CH S

Hng dn to Unique Indexes: 10.3.6 Ton vn thc th c m bo bng unique indexes v gi tr duy nht tn ti trong mi dng. A NULL value trong key column c coi nh l unique value. Unique index khng th c to trn ct cha gi tr trng nhau. Gi tr trng nhau phi c xa trc khi unique index c to. Hin th Indexes

Sau khi to ra indexes, chng ta c l cn bit thng tin v v indexes. Chng ta c th mun nhn thy nhng indexes c to trn bng v nhng ct to nn indexes trong bng. sp_helpindex l system stored procedure a ra nhng thng tin v indexes trn bng. C php:
sp_helpindex <Table_name>

10.3.7

Cch s dng Indexes

SQL Server s dng Query Optimizer la chn cch no l tt nht thc hin truy vn, bao gm indexes no c s dng. Tuy nhin, chng ta c th yu cu truy vn thc hin trn index no thng qua: C php:
(INDEX=index_name)

V d:
SELECT * FROM sales(INDEX =nclindx_ordnum)

WHERE ord_num = P3087a

10.3.8

Xa Indexes

Indexes khng cn thit na c th c xa khi CSDL gii phng vng nh bng cch s dng lnh DROP INDEX. C php:
DROP INDEX table_name.index_name

V d:
DROP INDEX sales.NCLINDX_ordnum

97

Chng 10. RNG BUC D LIU V CH S

Ch :Cu lnh DROP INDEX khng c p dng cho nhng indexes c to bng PRIMARY KEY hoc UNIQUE constraints v index trn system table. 10.3.9 Full-text Searches

Full-text indexes c s dng trn SQL Server thc hin full-text searches. Indexes c th xy dng trn unstructured text cho php tm kim text trn nhng mc xc nh. Chc nng ny c cung cp bng Microsoft Search Service cho php thc hin nhng tm kim phc tp s dng iu kin tm kim bng ngn ng (linguistic search criteria). Linguistic searches cho php tm kim t hoc cm t, nhng t mc tiu c ch ra lin quan n mt t khc, v nhng dng khc nhau ca t. 10.3.10 Full-text Catalogs

Tt c cc full-text indexes c lu tr trong full-text catalogs. Full-text catalog l th mc ch c th c xem bng Windows v Search Service. Mc nh, tt c cc full-text indexes trong c s d liu c t trong mt full-text catalog. Ngi qun tr h thng c th chia mt catalog thnh nhiu catalogs nu indexes qu ln. 10.3.11 S dng Full-text Indexes Full-text indexes c th c to thng qua Enterprise Manager, s dng Full-Text Indexing Wizard. Sau khi to, full-text queries c th c thc hin trn nhng bng c to indexes. Ngi qun tr c th thc hin Full-text queries s dng hai t kha CONTAINS v FREETEXT.

98

Chng 10. RNG BUC D LIU V CH S

10.4 Cu hi trc nghim


1. Trong khi thit k bng, bn xc nh rng buc PRIMARY KEY cho ct Emp_No. Kiu rng buc no sau y h tr thc hin v d trn? A B C D User-Defined Integrity Referential Integrity Entity Integrity Domain Integrity

2. Trong khi thit k bng PROJECT, bn xc nh ct Emp_No l kho ngoi ca bng, c tham chiu t bng EMPLOYEE. Loi rng buc no sau y c s dng? A B C D User-Defined Integrity Referential Integrity Entity Integrity Domain Integrity

3. Trong bng EMPLOYEE, bn cn c rng buc kim tra ct Sex trong bng ch c php c 1 trong 2 gi tr l True hoc False. Loi rng buc no sau y c s dng? A B C D User-Defined Integrity Referential Integrity Entity Integrity Domain Integrity

4. Hng dn no sau y l ng khi to mt ct c thuc tnh IDENTITY? A B C C nhiu hn 1 ct trong 1 bng c th c thuc tnh IDENTITY. Thuc tnh IDENTITY c th thit t trn ct kiu d liu l Char. Ct c

5. Khi ni v Indexes, cu no sai trong s cc cu sau y? A B C D Index cho php ngi dng tm d liu m khng cn qut ton b bng Index c dng tm ra gi tr duy nht. Mc ch ca index xc nh dng no ang cha d liu cn tm Index nn c to trn tt c cc trng ca bng Ch s c th c to bi 1 hoc nhiu trng

6. Indexing nn c p dng trong nhng trng hp no sau y? A B Khi ct ch cha ng vi gi tr khc nhau Khi ct c s dng cho vic tm kim thng xuyn

99

Chng 10. RNG BUC D LIU V CH S


C D Khi bng ch c vi dng Khi ct c dng sp xp d liu

7. Trong nhng bng c index, nhng cu lnh thc hin d liu (DML) cn t thi gian hn trong nhng bng khng c index. A B ng Sai

8. S lng ln nht cc ct c th bao gm trong index kt hp? A B C D 2 16 4 Khng gii hn

100

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

11 Chng 11. DATA INTEGRITY AND INDEXES Phn thc hnh


Mc ch: S dng Enterprise Manager thc hin cc Constraints v Rules S dng Enterprise Manager Wizard to cc ch s S dng QA thm cc constraints S dng QA to cc rules v gn cc rules cho cc i tng S dng QA to v xem ch s

11.1 Hng dn trc tip


11.1.1 To rng buc PRIMARY KEY Cc bc thc hin: Vo Enterprise Manager Vo phn thit k ca bng mun to kho chnh Bi en mt trng hoc nhiu trng lm kho chnh Kch vo biu tng Kho trn thanh cng c

Hnh 11.1
101

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

11.1.2

To rng buc Unique

V d to rng buc Unique cho ct PNR_No ca bng Passenger. Cc bc thc hin: 1. Chn phn thit k ca bng Passenger 2. Chn ct PNR_No, kch phi chut, chn Properties. 3. Chn th Indexes/Keys 4. Kch nt New 5. La chn nh hnh sau

Hnh 11.2 6. Kch Close 7. Kch Save ghi li thit k bng

102

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

11.1.3

S dng thuc tnh IDENTITY

V d quy nh ct PNR_No ca bng Passenger l IDENTITY. Cc bc thc hin: 1. Chn phn thit k bng Passenger 2. Chn ct PNR_No 3. Trong th Columns bn di, chn thuc tnh Identity = Yes 4. Chn gi tr khi u trong mc Identity Seed, gi s=5 5. Chn gi tr tng trong mc Identity Increment, gi s=1 (tng vi ch s tng bng 1) 6. Kch Save ghi li thit k bng 11.1.4 To rng buc Default

Gi s t gi tr mc nh cho ct Status trong bng Reservation = R Cc bc thc hin: 1. Chn c s d liu Flight Information 2. Kch phi chut vo i tng Default, chn New Default 3. Nhp tn ca rng buc Default vo mc Name 4. Chn gi tr Default vo mc Value

Hnh 11.3 5. Kch phi chut vo i tng Default_Status_Reservation va c to, chn Properties

103

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

6. Kch vo Bind Columns 7. Chn tn bng, tn ct chp nhn rng buc ny nh hnh sau: 8. Kch Add 9. Kch Apply 10. Kch OK

Hnh 11.4 11.1.5 To rng buc FOREIGN KEY

Gi s cn thit t rng buc cho thuc tnh Aircode trong bng Airline_Service l kho ngoi, c tham chiu t thuc tnh Aircode l kho chnh trong bng Airline_Master. Thc hin cc bc sau: 1. Chn c s d liu Flight Information 2. Chn i tng Diagrams 3. Chn New Database Diagram 4. Kch Next 5. Chn 2 bng Airline_Master v Airline_Service. Kch Add
104

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

6. Kch Next 7. Kch Finish

Hnh 11.5

Hnh 11.6 8. Chn thuc tnh Aircode t bng Airline_Master th sang thuc tnh Aircode trong bng Airline_Service 9. Hp thoi Create Relationship xut hin, cho php ta xc nh cc rng buc lin quan khi thit lp kho ngoi

105

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Hnh 11.7 10. Kch OK

Hnh 11.8 11. Ghi li Diagram. 11.1.6 To rng buc Check Constraint

Gi s ta mun gii hn d liu nhp vo cho ct class_code trong bng Reservation ch nhn 3 gi tr: E, Ex, FC. Thc hin cc bc sau: 1. Chn phn Design ca bng Reservation

106

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

2. Kch phi vo bt c thuc tnh no, chn Check Constraints 3. Kch New 4. Nhp tn ca rng buc v gi tr nh hnh sau:

Hnh 11.9 5. Kch Close 6. ng v ghi li thit k bng. 11.1.7 To rng buc Not Null

1. Chn phn thit k bng. 2. Un-check vo Allow Nulls cho ct tng ng.

107

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Hnh 11.10 11.1.8 To Rules

To Rule m bo d liu trong ct PNR_no ca bng Reservation phi nhp trong khong 1 v 500. Cc bc thc hin: 1. Kch phi vo i tng Rules, chn New Rule t menu pop-up. 2. Nhp tn ca Rule, v d Rule_PNRno. 3. Son ni dung ca Rule. 4. Kch OK. Sau khi to ra Rule_PNRno, p dng Rule ny cho ct PNR_no ca bng Reservation.

108

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Hnh 11.11 5. Kch phi chut vo Rule_PNRno, v chn Properties. 6. Kch Bind Column 7. Chn bng Reservation t Tables list. 8. Chn ct PNR_no t Unbound columns list. 9. Chn Add>> 10. Kch Apply 11. Kch OK

11.2 Indexes
11.2.1 To indexes

Chng ta c th to Indexes bng cch s dng Create Index Wizard trong EM, hoc cu lnh CREATE INDEX. By gi, chng ta cng xem xt cch to indexes bng Wizard. Cc bc thc hin: 1. Kch p vo c s d liu, v d FI. Danh sch cc i tng trong c s d liu FI c hin th. 2. Kch Run a Wizard icon trn tool bar hoc kch vo Tool/ Wizard. 3. M rng la chn Database. 4. Chn Create Index Wizard, kch OK.

109

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Hnh 11.12 5. Kch Next 6. Chn c s d liu FI t Database name list. 7. Chn Flight t Object name list box. 8. Kch Next. 9. Kch Next. 10. Check vo ct Aircraft_code trong Include in Index nh hnh di.

Hnh 11.13

110

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

11. Kch Next 12. Kch vo Make this a clustered index pha di Properties. 13. Nhp tn ca index l PK_flight. 14. Kch Finish. 15. Kch OK. 11.2.2 EM: 1. Kch phi chut vo bng Flight. 2. Chn Manage Indexes t All Task. Xem v sa Indexes.

By gi chng ta sa li PK_flight index vi Fill factor=60, thc hin bng

Hnh 11.14 3. Chn PK_Fligh v kch Edit. 4. Trong mc Fill Factor, nhp vo gi tr 60. 5. Kch OK. 6. Kch Close

111

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Hnh 11.15 11.2.3 1. M QA. 2. Thc hin cu lnh:


use Northwind Create nonclustered index ProductID_index ON [Order Details](ProductID)

S dng Indexes

3. By gi, thc hin cu lnh truy vn sau:


select * from [Order Details]

3. Chn Display Estimated Execution Plan t Query menu.

Hnh 11.17
112

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

Di chut vo tn ca Index trong hnh trn, ta c nhng thng s sau y:

Khi thc hin cu lnh Select, nu khng bt buc n phi chy theo index no th b ti u ho truy vn (Optimizer) ca SQL Server s t ng tm cch thc hin. By gi, ta s xem xt cch thc hin cu lnh truy vn trong bt buc phi chy theo index no : 4. Thc hin cu lnh sau:
Select * from [Order Details] (INDEX=ProductID_index)

Ta c cc thng s nh sau:

113

Chng 11. RNG BUC D LIU V CH S-Phn thc hnh

11.3 Bi tp
Thc hin cc cng vic sau bng QA: 1. 2. 3. To rng buc mc nh (default constraint) cho ct Service_name trong bng Service. Thit t gi tr mc nh l First Aid. To Rule v p n cho ct Service_code ca bng Airline_Service. Cho php Service_code ch nhn 3 gi tr sau: CC, N v WC. To rng buc kho chnh (primary constraint) trn ct Aircode ca bng Airlines_Master. chc chn to c, hy th thm mt gi tr Null vo ct. Thm rng buc kim tra (check constraint) vo ct day_code ca bng Flight_days. m bo rng d liu c nhp vo nm trong khong 1 n 7. To kho chnh cho bng Airline_master. Thit t rng buc kho ngoi trn ct Aircode ca bng Airline_meal. To Clustered index trn ct City_code ca bng City_master. To Non-clustered index trn 2 ct PNR_no v Ticket_no ca bng Passenger, trong thit t Fill factor l 25%. Xem tt c cc indexes ca bng Airlines_master.

4.

5. 6. 7. 8.

114

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

12 Chng 12. KHUNG NHN & CON TR (Views & Cursors)


12.1 View
12.1.1 Gii thiu Truy vn thng c s dng xut d liu ra t bng. N c thc hin trn d liu (actual data) ca bng. Thay v vic truy vn v thc hin trc tip trn d liu thc (v d nh Queries trong Microsoft Access), SQL Server h tr mt khi nim mi, l View. View l mt bng tng t nh bng cha d liu thc, nhng n ch l bng logic (khng phi l bng vt l), c ngha l n khng c v tr lu tr vt l ca d liu. V th, View thng c gi nh mt bng o (Vitual table). View l mt cch khc nhn vo d liu, v n c th nhn thy d liu t mt hay nhiu bng. Tuy nhin, View khng tn ti nh mt tp d liu c lu tr trn a, m n ch l mt tham chiu ti nhng bng d liu vt l. View hot ng nh mt b lc d liu t c s d liu v thc cht View l kt qu ca cu lnh truy vn. Cu lnh ny c th ly d liu t nhiu bng v nhiu c s d liu ng thi.

Hnh 12.1. Kt qu ca khung nhn to t 2 bng Titles v Publishers.

115

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

12.1.2 To View C php:


CREATE VIEW <Viewname> [WITH SCHEMABINDING] AS <Select_Statement> [WITH CHECK OPTION]

Trong : WITH SCHEMABINDING: m bo rng tt c cc i tng c trong cu lnh to View khng th c xo khi View ang tn ti. WITH CHECK OPTION: m bo rng nu bn mun sa hoc thm d liu thng qua View th nhng d liu phi tho mn tt c cc iu kin trong cu lnh Select V d:
CREATE VIEW Try AS SELECT flight.aircraft_code, airlines_master.airline_name, flight.source, flight.destination, flight.dep_time FROM airlines_master INNER JOIN Flight ON airlines_master.aircode = flight.aircode

Nu ta thm mnh WITH SCHEMABINDING vo cu lnh trn th h thng s khng cho php xo 2 bng airlines_master v Flight nu nh View c tn l Try cn tn ti. Kt qu ca View trn s l kt qu ca cu lnh SELECT cha bn trong n.

Hnh 12.2
116

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

Nh vy, Views thng c s dng : 12.1.3 12.1.4 Lc nhng bn ghi t bng theo yu cu. Bo v d liu t nhng ngi dng khng c quyn. Gim phc tp ca d liu Tm lc nhiu c s d liu vt l vo mt c s d liu logic. Li ch ca View i vi ngi s dng D dng hiu kt qu. D hn thc hin d liu D dng truy cp d liu D dng bo tr ng dng Mt s hng dn khi to View Views ch c th to trong c s d liu hin ti. Tn View nn tng t nh tn bng d nh View c th c xy dng t nhng View khc. SQL Server cho php View lng nhau 32 cp. N c th cha 1024 ct t mt hoc nhiu bng hoc Views. Mc nh, rules v triggers khng c h tr bng View. Views c th c ch s. Tuy nhin khng phi tt c cc View u c th ch s c. Temporary tables khng c tham gia trong views. nh ngha View tn ti ngay c khi bng tham gia b xo nh ngha View khng th bao gm cc mnh : ORDER BY, COMPUTE hoc COMPUTE BY hoc t kho INTO. Sa d liu thng qua Views View c th sa cha d liu c xy dng trn bng: View cha ng t nht mt bng c nh ngha sau mnh FROM. Khng cha nhng hm nhm hoc mnh GROUP BY, UNION, DISTINCT, hoc TOP

i vi ngi s dng cui - End Users

i vi ngi pht trin h thng- Developers

12.1.5 -

117

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

12.1.6

View khng cha nhng ct c suy ra t nhng ct khc Indexed Views

Khi nim Indexed Views c gii thiu trong SQL Server 2000. Chng ta c th to Indexed Views trn bt k phin bn no ca SQL Server 2000. Trc khi Indexed Views c gii thiu, ngi ta khng h c tng v vic to ra ch s trn View v View khng thc cht c lu tr vt l ca d liu (n ch l bng o). Tuy nhin, sau khi c c thit t ch s, View s c xc nh v tr lu tr vt l trn bng (chng ta s bn n sau). Vic to indexes trn View s gip chng ta ci thin c tc thc hin ca h thng (tng t nh i vi bng). Chng ta c th to c Clustered v Non-Clustered Indexes trn Views. Tuy nhin, nhng Indexes ny phi l Unique clustered index. Sau y l mt s quy tc cho vic thit t Clustered indexes: Ch nn to indexes trn nhng d liu khng thng xuyn c cp nht. Nu to indexes trn nhng d liu ny th mi khi cp nht d liu, h thng s phi cp nht c nhng thay i cho cc file cha indexes. N thc s hu ch cho nhng truy vn bn trong c cha hm nhm (aggregations) v kt ni nhiu bng (Joins).

Mt s gii hn ca Indexed View: Vic thc hin nhng kiu truy vn sau s khng ci thin c h thng: Lu : -

C s d liu phi thc hin nhiu thao tc Updates. H thng OLTP (Online Transaction Processing) cha nhiu thao tc write. Nhng truy vn khng cha nhng hm nhm v kt ni bng. Hm nhm ca d liu trong cu lnh truy vn chia thnh nhiu nhm d liu khc nhau. La chn SCHEMABINDING phi c trong nh ngha View. View ch c tham chiu n cc bng, khng c tham chiu n cc View khc. Nhng i tng m View tham chiu ti phi trn cng c s d liu vi View. La chn ARITHABORT nn c trong khi to View.

Xem xt v d sau, s dng c s d liu Northwind:

118

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

Hnh 12.3 V d trn to mt View c tn l CustOrdPro_view v cu lnh cui cng ch ra kt qu hnh 12.3. Ghi nh: sp_spaceused l mt th tc h thng hin th kch thc lu tr vt l trn a ca mt i tng no v cc index ca n. By gi, chng ta s to Index u tin trn CustOrdPro_view. Lu , index u tin c to trn View phi p ng c hai tnh cht: Clustered v Unique.
SET ARITHABORT ON CREATE UNIQUE CLUSTERED INDEX Index_CustOrdPro ON CustOrdPro_view(CompanyName, OrderID, ProductID)

Ghi nh: Cu lnh SET ARITHABORT ON s gip kt thc ngay truy vn nu nh n gp phi trng hp trn b nh (Overflow) hoc li chia cho 0. Bi v n nh hng n gi tr ca biu thc nn ta cn thit t ON trong khi to indexed views hoc trn nhng ct cn tnh ton. Sau khi to Clustered index, View tr nn thnh i tng lu tr d liu thc, tc l n c vng lu tr d liu vt l. By gi ta thc hin li th tc sp_spaceused cng vi CustOrdProd_view, ta s nhn c kt qu sau:

119

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

Hnh 12.4 12.1.7 Distributed Partitioned Views- Khung nhn phn tn

Trong Partitioned Views, d liu c phn b theo chiu ngang trn tp hp nhng bng c kt ni vi nhau ging nh l n c lu tr trn mt bng duy nht. SQL Server 2000 phn bit gia Local partitioned Views v Distributed partitioned views. Trong Local partitioned Views, tt c cc bng m View tham chiu ti v bn thn View phi tn ti trn cng mt instance ca SQL SERVER. Cn trong Distributed partitioned views(DPVs), c t nht mt bng m View tham chiu ti s nm trn Server khc(Romote server). DPVs cho php chng ta truy vn d liu trn cc Server v cc c s d liu khc nhau. V th chng ta c th b tr d liu trn nhiu bng khc nhau v trn nhiu Server khc nhau. Tuy nhin, mi Server li cn phi kt ni truy nhp ti tt c cc Server khc, v th chng ta cn cu hnh tt c cc Server nh l Linked Server. Khi nim DPVs c ch ra nh hnh sau:

Hnh 12.5. Distributed Partitioned Views


120

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

Gi s rng, bn mun phn b bng Customers v Orders trn 3 server, gi l Server1, Server2, Server3. c c Linked Servers, mi Server phi lin kt c vi 2 server cn li. Trong SQL Server 2000, bn c th thc hin thm v cp nht li d liu trn cc DPVs. Trc khi s dng DPVs, bn nn lm nhng vic sau: Ln k hoch phn b d liu trn cc Server khc nhau. To Partitioned View cng vi kho chia d liu. V d: bn nn chia d liu theo gi tr ca mt ct, v d EmpID, lu tr cc bn ghi c EmpId t 1 ..1000 trn Server A, t 1001..3000 trn Server B... S dng Linked Server lin kt gia cc Server. To DPV trn mi Server mi Server c th bit c nhng i tng ca n.

Xem xt qu trnh to v d sau: Chia d liu ca bng Reservation vo 3 bng Reservation1, Reservation2, Reservation3 trn 3 Server nh hnh 12.6.

CREATE TABLE Reservation_1 (PNR_no INTEGER PRIMARY KEY CHECK (PNR_no BETWEEN 1 AND 500),...)

CREATE TABLE Reservation_3 (PNR_no INTEGER PRIMARY KEY CHECK (PNR_no BETWEEN 1001 AND 2000), ...)

CREATE TABLE Reservation_2 (PNR_no INTEGER PRIMARY KEY CHECK (PNR_no BETWEEN 501 AND 1000), ...)

Hnh 12.6

121

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

Sau , bn cn thc hin nhng cng vic sau xy dng DPVs: Thm cc nh ngha lin kt (linked server definitions) cho mi nhm server tham gia vo thc hin View. iu ny s gip cho cc DPVs c th truy cp c cc d liu trn cc server khc nhau. S dng th tc h thng sp_serveroption thit t la chn lazy schema validation cho mi server c tham chiu trong View. To DPV trn tng server. Bn c th to mt DPV trn Server1 nh sau:
CREATE VIEW Reservation_View AS SELECT * FROM Server1.FlySafeAirways.dbo.Reservation_1 UNION ALL SELECT * FROM Server2.FlySafeAirways.dbo.Reservation_2 UNION ALL SELECT * FROM Server3.FlySafeAirways.dbo.Reservation_3

Sau , thc hin vic to View ny trn tt c cc server.

CREATE VIEW Reservation_View AS SELECT * FROM Server1.FlySafeAirways.dbo.Reservation_1 UNION ALL SELECT * FROM Server2.FlySafeAirways.dbo.Reservation_2 UNION ALL SELECT * FROM Server3.FlySafeAirways.dbo.Reservation_3

Hnh 12.7. To View ly d liu t 3 Server

122

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

12.1.8

S dng View cp nht d liu

Cc chc nng c th thc hin trn View tng t nh i vi bng. Chng ta c th thc hin cc cu lnh INSERT, UPDATE, v DELETE trn View. Khi chng ta thay i d liu thng qua View, ng ngha vi vic chng ta thay i d liu trn cc bng m View ang tham chiu. Tuy nhin, nn thc hin mt s cc quy lut sau khi thc hin sa cha d liu thng qua View. Cu lnh SELECT trong nh ngha View khng nn cha: Cc hm nhm d liu (Aggregate functions) Cc mnh TOP, GROUP BY. UNION, hoc DISTINCT. Ct c gi tr c suy ra t cc ct khc(derived columns) Sau mnh FROM trong cu lnh SELECT nn c t nht mt bng. V d, View sau y khng th cp nht d liu:
CREATE VIEW NoTable AS SELECT Getdate() AS CurrentDate @@LANGUAGE AS CurrentLanguage

Chng ta ch c th cp nht v thm d liu vo 1 bng ng sau mnh FROM ca View. Nu mun cp nht d liu trn nhiu bng, chng ta phi s dng INSTEAD OF trigger. Chng ta s bn n trigger chi tit trong chng sau. Nu nh bng c tham chiu trong View cha ct c rng buc NOT NULL khng phi l mt phn ca View th chng ta phi gn gi tr mc nh cho ct ny c th thm d liu cho bn ghi. Nu nh ngha View c cha la chn WITH CHECK, tt c cc ct c sa cha phi tho mn iu kin trong cu lnh SELECT. V d, ny cu lnh SELECT c cha mnh WHERE emp_id<=500, th chng ta khng th sa li d liu trong ct emp_id c gi tr ln hn 500. Chng ta c th xo d liu nu nh View ch tham chiu n 1 bng. xo d liu trn View c tham chiu sang nhiu bng, chng ta phi s dng INSTEAD OF trigger. Chng ta cng c th s dng DPVs cp nht d liu cho cc bng tham chiu. 12.1.9 Sa cu trc Views

Chng ta c th s dng cu lnh ALTER VIEW thc hin sa cu trc ca View. C php ca n tng t nh c php ca lnh CREATE VIEW, ch cn thay th t kha CREATE bng t kho ALTER.

123

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

C php:
ALTER VIEW <Viewname> [WITH SCHEMABINDING] AS <Select_Statement> [WITH CHECK OPTION]

V d:
ALTER VIEW Try AS SELECT flight.aircraft_code, airlines_master.airline_name, flight.source, flight.destination, flight.dep_time, flight.journey_hrs FROM airlines_master INNER JOIN Flight ON airlines_master.aircode = flight.aircode

12.1.10 C php:

Xo Views

Khi mt View no khng cn cn thit na, chng ta c th xo n.


DROP VIEW <Viewname>

V d:
DROP VIEW Try

12.2 Con tr_Cursors


12.2.1 Gii thiu

Con tr l mt i tng c s dng trong ng dng thc hin truy cp d liu trn tng dng. S dng con tr, c th: S dng con tr c th n v tr mt dng nht nh trong tp kt qu. Truy cp n 1 dng hoc 1 tp hp nhng dng t v tr hin ti ca con tr trong tp kt qu. H tr sa cha d liu 1 dng no . H tr nhiu cp khc nhau cho php bit r rng nhng thay i m nhng ngi s dng khc nhau lm vi d liu. 12.2.2 To con tr

Cu lnh DECLARE khai bo con tr. N cha ng cu lnh Select a ra tp nhng bn ghi t bng. C php:
124

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

DECLARE <Cursor_Name> CURSOR [LOCAL | GLOBAL] [FORWARD ONLY | SCROLL] [STATIC | KEYSET | DYNAMIC |FAST_FORWARD] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] [TYPE_WARNING] FOR <Select Statements> [FOR UPDATE [OF Column_name[,.N]]]

12.2.3 M Cursor:

Cc bc trong s dng Cursor

OPEN <Cursor_name>

Truy cp n cc bn ghi:
FETCH <Cursor_name>

ng Cursor:
CLOSE <Cursor_name>

Xo tham chiu ca Cursor:


DEALLOCATE <Cursor_name>

12.2.4

Truy cp d liu bng cursor

FETCH FIRST: Truy cp n dng u tin. FETCH NEXT: Truy cp n dng tip theo. FETCH PRIOR: Truy cp n dng trc dng hin ti ca con tr. FETCH LAST: Truy cp n dng cui cng. FETCH ABSOLUTE n: Nu n l s nguyn dng, n truy cp n dng th n. Nu n l s nguyn m, n truy cp n dng th n trc dng cui cng ca con tr. Nu n=0 n truy cp ti chnh dng hin ti. FETCH RELATIVE n: Nu n l s dng, truy cp n dng th n sau dng hin ti ca con tr. Nu n l s m, truy cp n dng th n, truy cp n dng th n trc v tr hin ti ca con tr. Nu bng 0, truy nhp n dng hin ti mt ln na. @@FETCH _STATUS: Quay tr li trng thi thc hin ca con tr cui cng. @@CURSOR_ROWS: Quay tr li s dng ca con tr hin ti ang m.

125

Chng 12. KHUNG NHN V CON TR (Views and Cursors)

12.2.5

V d

Sau y l mt v d v khai bo v thc hin ca con tr:

Hnh 12.8. Khai bo v thc hin con tr

126

Chng 13. KHUNG NHN V CON TR (Views and Cursors)

12.3 Cu hi trc nghim


1. View trong SQL Server c th cha ti a bao nhiu ct A B C D 256 32 1024 Khng gii hn

2. Nu s khc nhau gia 2 cu lnh sau: a. SELECT A,B INTO Practice FROM Table1 INNER JOIN Table2 ON Table1.B=Table2.B CREATE VIEW Practise AS SELECT A,B FROM Table1 INNER JOIN Table2 ON Table1.B=Table2.B

b.

3. View b xo khi cc bng lin quan n n b xo. A B ng Sai

4. Bn to ra View c tn l vw_Hanoi_St xc nh trn bng Student lu nhng sinh vin c ni sinh l H ni. Trong cu lnh CREATE VIEW c bao gm la chn WITH CHECK OPTION. Nu bn c gng thm mt sinh vin c ni sinh l TP.HCM vo bng Student thng qua View th iu g s xy ra? A B C SQL Server vn cho php thc hin bnh thng, bn ghi mi c thm vo bng. SQL Server khng cho php thc hin v bn khng c quyn sa View. SQL Server khng cho php thc hin v bn ghi thm vo c ni sinh khng phi l H ni.

5. Gi s bn s s dng cu lnh SELECT sau to View: SELECT animal_catcd, animal_category, AVG(animal_age), COUNT(*) FROM Animal GROUP BY animal_catcd, animal_category Nhng ct no sau y bt buc phi gn tn cho ct? A B C D animal_catcd animal_category AVG(animal_age), COUNT(*)

6. Trong nhng trng hp no sau y nn s dng indexed view?

127

Chng 13. KHUNG NHN V CON TR (Views and Cursors)


A B C D OLTP system C s lng ln cc php ton cp nht trong thc hin c s d liu. Truy vn c cha hm nhm d liu (Aggregation) Truy vn c cha nhiu lin kt d liu (Joins)

7. Sau khi to Clustered index trn View, View tr nn thnh i tng lu tr d liu thc? A B ng Sai

8. Trong Distributed Partitioned Views, tt c cc server phi c cu hnh nh l ? 9. Lnh no sau y cho php ng con tr li khi khng cn thit na? A B C D CLOSE EXIT DELLLOCATE BREAKE

10. Con tr sau khi c ng (Closed) vn tn ti trong b nh? A B ng Sai

11. Loi con tr no sau y cho php tt c cc truy vn (FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE) c thc hin? A B C D E LOCAL SCROLL FORWARD_ONLY GROBAL SCROLL_LOCKS

128

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

13 Chng 13. KHUNG NHN V CON TR Phn thc hnh


Mc ch: To View s dng EM v T-SQL. Sa View s dng EM i tn View To cc loi khc nhau ca con tr Thc hin cc php ton trn con tr Sa d liu thng qua con tr ng v xo con tr khi b nh.

13.1 To View
13.1.1 S dng Create View Wizard

Cc bc thc hin: 1. Chn c s d liu FI. 2. Kch Tool/Wizard 3. Kch p vo la chn Database 4. Kch chn Create View Wizard, kch OK. 5. Kch Next. 6. Chn Database name l FI. 7. Kch Next. 8. Kch vo cc bng m View s tham chiu ti trong mc Include in View. Gi s bng Flight_details. 9. Kch Next. 10. Kch vo nhng ct mun a ra, trong mc Select Culumn.(Hnh 13.1) 11. Kch Next. 12. Son where aircraft_code like 'IC%'. 13. Kch Next. 14. Kch Finish. 15. Kch OK.

129

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

Hnh 13.1 13.1.2 To View bng T-SQL

Thay v to View bng cch trn, ta c th thc hin cu lnh sau trong QA:
CREATE VIEW IA_Flightdetails AS SELECT Aircraft_code, Class_code, Fare FROM Flight_details WHERE aircraft_code like 'IC%'

13.2 Sa View
Thc hin cc bc sau: 1. Chn c s d liu FI. 2. Kch vo i tng View. 3. Kch phi chut vo IA_Flightdetails. 4. Chn Design View trn thnh menu. (Hnh 13.2) 5. Kch phi chut vo vng trng, kch vo Add Table. 6. Chn bng Flight trong danh sch. 7. Kch Add. Kch Close. 8. Kch chn Type trong bng Flight.
130

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

Hnh 13.2 9. Kch Save.

Hnh 13.3

13.3 Con tr
13.3.1 Khai bo con tr (Cursor)

Trong QA thc hin cu lnh sau to Cursor:


131

Chng 13. KHUNG NHN V CON TR- Phn thc hnh Use Pubs DECLARE TitleCursor CURSOR SCROLL FOR Select Title_id, Title, Price, ytd_sales FROM Titles Where type='psychology'

13.3.2

M con tr

OPEN TitleCursor

13.3.3 tr.

Truy vn d liu

S dng cu lnh Fetch truy vn dng d liu trong tp kt qu ca con


FETCH TitleCursor

Kt qu:

Hnh 13.4 13.3.4 Kt qu: Truy vn dng u tin

FETCH FIRST FROM TitleCursor

Hnh 13.5
132

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

13.3.5

Truy vn dng tip theo

FETCH NEXT FROM TitleCursor

Hnh 13.6 13.3.6 Truy vn dng cui cng

FETCH LAST FROM TitleCursor

13.3.7 Kt qu:

Hnh 13.7 Truy vn n mt dng c v tr xc nh

FETCH ABSOLUTE 2 FROM TitleCursor

Hnh 13.8
133

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

13.3.8

Truy vn n dng lin quan

Truy vn n dng lin quan n v tr hin ti ca con tr.


FETCH RELATIVE 1 FROM TitleCursor

Kt qu:

Hnh 13.9 13.3.9 ng v xo vng nh (Deallocating) ca con tr

CLOSE TitleCursor DEALLOCATE TitleCursor

13.4

134

Chng 13. KHUNG NHN V CON TR- Phn thc hnh

13.5 Bi tp
Thc hin cc yu cu sau bng QA: 1. To View c tn pass_view cha PNR number, Aircraft code, ticket number, passenger name, v reservation status ca PNR number c gi tr nh hn 4. m bo rng view c th trnh c thm d liu c PNR number ln hn 3. Hin th d liu ca pass_view. S dng pass_view, sa tn khch hng = Pam Houston ca ticket number=3. Xem li bng Passenger kim tra li. To View c tn l Weekend_flights cha aircraft code, v day code ca tt cc chuyn bay c day code bng 1 hoc 7. Aircode c code AI03 khng bay trong ngy c day code bng 7. S dng Weekend_flights xo tt c cc thng tin lin quan. Xem li bng Flight_days kim tra vic xo thc hin hay cha. To 3 bng CC_table, WC_table, v N_table ly thng tin t bng Airline_service. CC_table, WC_table, v N_table lu nhng bn ghi c service code tng ng l CC, WC v N. To local partitioned view c tn l all_services cha tt c cc dng trong 3 bng trn. Thm d liu vo 2 ct aircode v service code ca bng CC_table thng qua View all_services. Xem li bng CC_table kim tra xem bn ghi mi c thm vo hay cha. Hin th tt c cc bn ghi trong bng Reservation s dng con tr v sau xo n khi b nh.

2. 3. 4. 5.

6.

7. 8.

9.

135

Chng 14. STORED PROCEDURE

14 Chng 14. TH TC- STORED PROCEDURES(SPS)


SPs l cng c cn thit cho bt k h qun tr c s d liu no. Ngi pht trin hoc ngi qun tr vit SPs thc hin nhng cng vic qun tr hoc cc quy tc d liu phc tp. SPs c th cha nhng cu lnh thc hin d liu (DML) hoc nhng cu lnh truy vn d liu(SELECT).

14.1 nh ngha
SPs l tp hp ca cc cu lnh T-SQL c bin dch trc (pre_compiled). SPs c t tn v c x l nh mt khi lnh thng nht (ch khng phi thc hin ri rc cc cu lnh). SQL Server cung cp mt s cc th tc c lu tr sn trong h thng gip thc hin mt s cng vic thng xuyn. N c gi l th tc h thng System stored procedures. Cn nhng th tc do ngi s dng t vit gi l User stored procedures. SPs trong SQL Server cng tng t nh khi nim v th tc trong cc ngn ng lp trnh khc, bi v: Chp nhn bin u vo v tr li kt qu khi thc hin. Cha nhng cu lnh dng trong lp trnh c th thao tc vi c s d liu v c th gi n cc th tc khc. Tr li gi tr trng thi khi th tc c gi xc nh vic thc hin th tc thnh cng hay tht bi.

Hnh 14.1. Cc thnh phn ca SPs

136

Chng 14. STORED PROCEDURE

14.2 Li ch khi qun l d liu bng SPs


Tng tc thc hin: Mt trong nhng li ch ln nht khi s dng SPs l tc . SPs c ti u ho trong ngay ln bin dch u tin, iu ny cho php chng c th thc hin nhanh hn nhiu ln so vi cc cu lnh T-SQL thng thng. Tc truy cp d liu nhanh hn: Khi thc thi mt cu lnh SQL th SQL Server phi kim tra permission xem user gi cu lnh c c php thc hin cu lnh hay khng ng thi kim tra c php ri mi to ra mt execute plan v thc thi. Nu c nhiu cu lnh nh vy gi qua network c th lm gim i tc lm vic ca server. SQL Server s lm vic hiu qu hn nu dng stored procedure v ngi gi ch gi mt cu lnh n v SQL Server ch kim tra mt ln sau to ra mt execute plan v thc thi. Nu stored procedure c gi nhiu ln th execute plan c th c s dng li nn s lm vic nhanh hn. Ngoi ra c php ca cc cu lnh SQL c SQL Sever kim tra trc khi lu nn n khng cn kim li khi thc thi. Chng trnh c modul ho: Mt khi stored procedure c to ra n c th c s dng li. iu ny s lm cho vic bo tr (maintainability) d dng hn do vic tch ri gia business rules (tc l nhng logic th hin bn trong stored procedure) v c s d liu. V d nu c mt s thay i no v mt logic th ta ch vic thay i code bn trong stored procedure m thi. Nhng ng dng dng stored procedure ny c th s khng cn phi thay i m vn tng thch vi business rule mi. Nht qun: Li ch na ca SPs l thit t c rng buc d liu m bo tnh nht qun. Ngi s dng khng th thc hin tu tin d liu lm mt tnh ng n ca d liu. Nng cao kh nng bo mt d liu: Gi s chng ta mun gii hn vic truy xut d liu trc tip ca mt user no vo mt s bng, ta c th vit mt stored procedure truy xut d liu v ch cho php user c s dng stored procedure vit sn m thi ch khng th thao tc trc tip trn cc bng . V d, ta c th to ra SPs ta lm ch v ch cung cp quyn EXCUTE cho nhng SPs ny, v th nhng ngi s dng khc khng c php trc tip lm vic vi d liu. Ngoi ra stored procedure c th c encrypt (m ha) tng cng tnh bo mt.

14.3 Cc kiu SPs


SPs chia lm 2 loi: System stored procedures: Th tc m nhng ngi s dng ch c quyn thc hin, khng c php thay i.

137

Chng 14. STORED PROCEDURE

User stored procedures: Th tc do ngi s dng to v thc hin. 14.3.1 System stored procedures

L nhng stored procedure cha trong Master Database v thng bt u bng tip u ng sp_ . Cc stored procedure ny thuc loi built-in v ch yu dng trong vic qun l c s d liu (administration) v bo mt (security). V d bn c th kim tra tt c cc processes ang c s dng bi user DomainName\Administrators bn c th dng :

sp_who @loginame='DomainName\Administrators'
Ngi ta c th chia cc System stored procedures thnh cc loi sau:
SQL Mail
Catalo g

SQL Server Query Agent

Extended

Distributed Query

System stored procedures

Replication

System Cursor Security

Hnh 14.2. Cc loi ca System stored procedures C hng trm system stored procedure trong SQL Server. Bn c th xem chi tit phn loi v ni dung ca tng th tc trong SQL Server Books Online. Sau y l mt s th tc h thng thng s dng: System stored procedure sp_Databases sp_server_info Chc nng Danh sch nhng Database c th (avaiable) trn Server (Danh sch ny s l khc nhau tu thuc vo quyn ca ngi s dng) Chi tit nhng thng tin v Server, v d nh tp cc c
138

Chng 14. STORED PROCEDURE

tnh, phin bn sp_stored_procedures Danh sch tt c cc th tc c th trn mi trng hin ti sp_tables Danh sch tt cc bng c th trn mi trng hin ti sp_start_job Khi ng tt c cc automated task ngay lp tc sp_stop_job Ngng li tt c cc automated task ang chy sp_password Thay i password cho login account sp_configure Thay i la chn cu hnh chung ca SQL SERVER. Khi ngi s dng khng la chn th h thng s hin th cu hnh mc nh. sp_help Hin th thng tin v bt k i tng no trong Database sp_helptext Hin th ni dung (text) ca cc i tng 14.3.2 User-defined Stored Procedures

14.3.2.1

C php

Ngi s dng c th s dng cu lnh CREATE PROCEDURE to th tc trong CSDL hin ti. Database owner mc nh c quyn s dng cu lnh CREATE PROCEDURE. C php:
CREATE PROC[EDURE] procedure_name

V d:
CREATE PROCEDURE London_Flights AS PRINT 'This code displays the details of flights to London' SELECT * FROM flight WHERE destination='Lon'

14.3.2.2

Cc ch dn

Tn th tc phi tun theo quy tc t tn Tt c cc i tng ca c s d liu c th c to trong SPs, tr nhng i tng: defaults, rules, triggers, procedures, v views. Nhng i tng c to c th c tham chiu n ngay khi n c to. Stored procedures c th tham chiu ti nhng bng ph (temporary tables). C th c 2100 bin trong stored procedure. Chng ta c th to nhiu bin a phng trong stored procedure nu b nh cho php. Kch thc ti a cho stored procedure l 128 MB.

139

Chng 14. STORED PROCEDURE

14.3.2.3 Thc hin User-defined Stored Procedures

C php:
EXEC[UTE] procedure_name

V d:

Hnh 14.3.Thc hin User-defined Stored Procedures

14.3.2.4

S dng bin trong Stored Procedures

Bin c th c s dng nhp d liu vo (INPUT) hoc xut d liu ra ngoi (OUTPUT) C php:
CREATE PROCEDURE procedure_name @Parameter_name data_type AS :

V d:
CREATE PROCEDURE city_flights @v_city varchar(15) AS SELECT * FROM flight WHERE destination=@v_city

140

Chng 14. STORED PROCEDURE

Thc hin th tc c bin:

Hnh 14.4. Thc hin User-defined Stored Procedures c bin Nu c nhiu bin trong th tc th khi thc hin ta lit k theo th t cc bin v phi cch nhau bng du phy.
14.3.2.5

Bin dch li - Re-compiling Stored Procedures

Khi ngi s dng lm thay i ti nhng index ca bng. Stored procedures phi c bin dch li (recompiled) chp nhn nhng thay i . C 3 cch bin dch li procedures: S dng sp_recompile system stored procedure: Bn c th s dng cch ny bin dch li th tc ln chy k tip ca n. C php:
sp_recompile [@objectname=] object

Ch ra WITH RECOMPILE trong cu lnh CREATE PROCEDURE: SQL Server s bin dch li th tc mi ln n thc hin. C php:
CREATE PROCEDURE procedure_name @Parameter_name data_type WITH RECOMPILE AS :

Ch ra WITH RECOMPILE trong cu lnh EXECUTE: Bin dch li ngay ln thc hin ny.

141

Chng 14. STORED PROCEDURE

C php:
EXEC[UTE] procedure_name WITH RECOMPILE

14.3.2.6

Sa cu trc ca Stored Procedures

Cu lnh ALTER PROCEDURE c s dng sa SP. C php tng t CREATE PROCEDURE ch thay t CREATE bng ALTER. Vic sa cha vn lu li quyn ca ngi s dng (user permissions)

14.4 Thng bo li
Tr v m li (Code) hoc cu lnh RAISERROR c th c s dng nhc ngi s dng v li. M li tr v l s nguyn. Cu lnh RAISERROR gii thch li v ch ra mc li. 14.4.1 Return Codes

Return codes l s nguyn, gi tr mc nh l 0. Gi tr ca Return codes phi c tr v vo mt bin C php:


DECLARE @return_variable_name data_type EXECUTE @return_variable_name = procedure_name

V d:
ALTER PROCEDURE Titles_Pub @v_pubid char(4) AS DECLARE @v_return int SELECT @v_return=COUNT(*) FROM titles WHERE pub_id = @v_pubid IF @v_return>0 SELECT * FROM titles WHERE pub_id = @v_pubid ELSE RETURN @v_return+1

142

Chng 14. STORED PROCEDURE

Kt qu thc hin:

14.4.2

Cu lnh RAISERROR

Trong SPs, chng ta c th s dng cu lnh PRINT hin th thng bo li cho ngi s dng. Tuy nhin, nhng li nhc ny ch l tm thi v ch hin th cho ngi s dng chng ta cn s dng cu lnh RAISERROR ghi li nhng li ny v gn cho n mc severity. C php:
RAISERROR ({msg_id | msg_str}{,severity, state} [WITH option[...n]]

V d:
WHILE @v_ctr > 0 BEGIN SELECT @v_ctr * @v_ctr SELECT @v_ctr = @v_ctr 1 IF @v_ctr = 2 BEGIN RAISERROR('Counter has fallen below 3', 1, 2) BREAK END END

Kt qu:
25 16 9

Ni dung thng bo:


(1 row(s) affected)

143

Chng 14. STORED PROCEDURE

(1 row(s) affected) (1 row(s) affected) Msg 50000, Level 1, State 50000 Counter has fallen below 3

144

Chng 14. STORED PROCEDURE

14.5 Cu hi trc nghim


1. K hiu no theo sau ng trc tn bin trong cu lnh EXECUTE? A B C D & # ? @

2. Cu lnh no sau y s kt thc thc hin th tc (Nhng cu lnh ng sau cu lnh ny s khng c thc hin)? A B C D RETURN EXIT HALT FINISH

3. Ngi dng no sau y c quyn mc nh chy Stored Procedure? A B C D Data Owner Row Owner Table Owner Database Owner

4. Hiu qu ca vic ch ra WITH RECOMPILE trong khi nh ngha Stored Procedure (SP) l g? A B C D SP c bin dch li ngay ln tip theo n thc hin SP c bin dch li tt c cc ln n thc hin SP c bin dch li khi SQL Server khi ng SP c bin dch li khi c ch s c to trn cc bng m n tham chiu ti

5. Chng ta c th sa cha c nhng th tc h thng (System stored procedures) A B ng Sai

6. Thng bo c nh ngha cng RAISERROR c th cha ng ti a bao nhiu k t? A B C D 64 510 255 128

145

Chng 15. STORED PROCEDUREn- Phn thc hnh

15 Chng 15. STORED PROCEDURE Phn thc hnh


Mc ch: To SP bng Wizard (hng dn bng hnh nh) S dng QA to SP S dng bin v cc cu lnh iu khin trong khi to SP Thc hin SP Bin dch li (Recompile) SP. Sa SP Thc hin cc SP h thng (System Stored Procedures)

15.1 To SP bng EM.


Thc hin cc bc sau: 1. Chn c s d liu FI. 2. Kch phi chut vo i tng Stored Procedure, kch New Stored Procedure... 3. Nhp ni dung ca SP.

4. Kch Check Syntax kim tra c php.


146

Chng 15. STORED PROCEDUREn- Phn thc hnh

5. Kch OK Chng ta cng c th s dng Wizard to SP. Thc hin ln lt theo cc bc h thng hng dn.

15.2 Thc thi SP


thc thi SP, chng ta s dng cu lnh EXCUTE trong QA.

Chng ta c th thc hin sa v xo SP.

15.3 Bi tp
Thc hin cc yu cu sau bng QA: Thc hin cc cng vic sau bng QA. 1. 2. To th tc vi tn Display_Service hin th cc hng bay c dch v chm sc tr em Child Care. Sa th tc Display_Service chp nhn nhn hng bay (airline) v tn dch v nh l bin truyn vo. a. Nu dch v c phc v trn hng bay th a ra thng bo: Hng bay <airline_name> c phc v dich v <service_name> b. Nu bin airline_name truyn vo th tc c gi tr l * th hin th tt c cc hng bay c phc v dch v <service_name> c. Nu bin service_name truyn vo th tc c gi tr l * th hin th tt c cc dch v c phc v trn hng bay <airline_name> 3. Thc hin th tc trn vi dch v service_name= Wheel Chair v hng bay airline_name= Jet Airways. m bo rng th tc s c bin dch li khi thc hin. Hin th tn tt c cc th tc trong c s d liu Flight Information

4.

147

Chng 15. STORED PROCEDUREn- Phn thc hnh

5. 6.

Hin th on m lnh ca th tc Display_Service Hin th cu hnh hin ti ca Server

148

Chng 16. TRIGGER

16 Chng 16. TRIGGER


16.1 nh ngha
Trigger l mt loi stored procedure c bit c thc thi mt cch t ng khi c mt s kin thay i d liu (data modification event) xy ra nh Update, Insert hay Delete. Trigger c dng m bo rng buc d liu, tnh nht qun, hoc thc hin cc quy tc d liu phc tp. Trigger l i tng c bit c to trn mt bng v l mt phn ca c s d liu. Trigger c th truy vn ti cc bng khc v c th bao gm cc cu lnh T-SQL phc tp. Chng ta c th to trigger cho mi hnh ng trn bng hoc c th kt hp 2 hoc 3 hnh ng trong mt trigger. V d: Khi mun thc hin mt thao tc DELETE trn bng EMP th ng thi d liu b xo s c INSERT vo bng Ret_Emp, nh hnh di y:

Allen Brian Cathy Greg Derek

Mark Carl Kathy

Hnh 16.1. D liu trc khi thc hin Delete Trigger Sau khi thc hin trigger DELETE, ta c kt qu sau:

Allen Brian Cathy Greg Derek

Mark

Trigger Fired

Carl Kathy Derek

Hnh 16.2. D liu sau khi thc hin Delete Trigger


149

Inserted

Chng 16. TRIGGER

Ghi nh: Trong trng hp c nhiu trigger cng lin quan n mt i tng th ta phi xc nh th t thc hin ca chng. Th tc h thng sp_settriggerorder cho php chng ta lm iu ny. Khi no ta cn s dng Trigger: Ta ch s dng trigger khi m cc bin php bo m data intergrity khc nh Constraints khng th tha mn yu cu ca ng dng. Nn nh Constraint thuc loi Declarative Data Integrity cho nn s kim tra data trc khi cho php nhp vo table trong khi Trigger thuc loi Procedural Data Integrity nn vic insert, update, delete xy ra ri mi kch hot trigger. Chnh v vy m ta cn cn nhc trc khi quyt nh dng loi no trong vic m bo Data Integrity. Khi mt c s d liu c phi chun denormalized (ngc li qu trnh chun ha -normalization), s c mt s d liu tha (redundant) c cha trong nhiu tables. Ngha l s c mt s d liu c cha cng mt lc hai hay nhiu ni khc nhau. Khi m bo tnh chnh xc th khi d liu c cp nht mt bng ny th cng phi c cp nht mt cch t ng cc bng cn li bng cch dng Trigger. V d: Ta c table Item trong c field Barcode dng xc nh mt mt hng no . Item table c vai tr nh mt cun catalog cha nhng thng tin cn thit m t tng mt hng. Ta c mt table khc l Stock dng phn nh mn hng c thc trong kho nh c nhp v ny no c cung cp bi i l no, s lng bao nhiu (tc l nhng thng tin v mn hng m khng th cha trong Item table c).Bng table ny cng c field Barcode xc nh mn hng trong kho. Nh vy thng tin v Barcode c cha hai ni khc nhau do ta cn dng trigger m bo l Barcode hai ni lun c ng b. i khi ta c nhu cu thay i dy chuyn (cascade) ta c th dng Trigger bo m chuyn . Ngha l khi c s thay i no table ny th mt s table khc cng c thay i theo m bo tnh chnh xc. V d nh khi mt mn hng c bn i th s lng hng trong table Item gim i mt mn ng thi tng s hng trong kho (Stock table) cng phi gim theo mt cch t ng. Nh vy ta c th to mt trigger trn Item table mi khi mt mn c bn i th trigger s c kch hot v gim tng s hng trong Stock table.

16.2 c im ca Trigger
Mt trigger c th lm nhiu cng vic khc nhau v c th c kch hot bi nhiu hn mt s kin(event). V d ta c th vit mt trigger c kch hot bi bt k event no nh Update, Insert hay Delete v bn trong trigger ta s vit code gii quyt cho tng trng hp. Trigger khng th c to ra trn temporary hay system table.
150

Chng 16. TRIGGER

Trigger ch c th c kch hot mt cch t ng bi mt trong cc event Insert, Update, Delete m khng th chy mt mnh c. C th p dng trigger cho View. Khi mt trigger c kch hot th d liu mi va c insert hay mi va c thay i s c cha trong Inserted table cn d liu mi va c delete c cha trong Deleted table. y l 2 table tm ch cha trn memory v ch c gi tr bn trong trigger m thi (ngha l ch nhn thy v c query trong trigger m thi). Ta c th dng thng tin trong 2 table ny so snh d liu c v mi hoc kim tra xem d liu mi va thay i c hp l trc khi commit hay roll back.

16.3 To Trigger
16.3.1 To Trigger

Triggers c th c to bng cch s dng Enterprise Manager, hoc Query Analyzer. Trong c hai trng hp, cu lnh CREATE TRIGGER c s dng to trigger. C php:
CREATE TRIGGER Trigger_name ON table FOR [DELETE, INSERT, UPDATE] [WITH ENCRYPTION] AS Sql_statements

16.3.2 -

Hng dn khi to Trigger Trigger c th h tr mt s tc ng trn bng d liu: INSERT, UPDATE, v DELETE. La chn WITH ENCRYPTION c th c s dng m ha nh ngha ca trigger, ngi dng khng th xem. Tuy nhin, trigger c m ha khng th c gii m. Trigger c th tham chiu ti View hoc cc bng tm, bng h thng. Nhng Trigger khng th c to trn bng tm v bng h thng. Trigger c th cha s lng bt k cc cu lnh SQL. Triggers truy cp hai bng logic gi l Inserted v Deleted. Inserted v Deleted tables cha hnh nh ca d liu trc v sau khi cp nht.

151

Chng 16. TRIGGER

D liu trong bng s khng b nh hng bi php ton cp nht nu n khng c trong bng Inserted v Deleted

Ni dung ca 2 bng Inserted v Deleted:


Kiu Trigger UPDATE Inserted Table Lu tr bn sao ca cc bn ghi c cp nht khi cu lnh kt thc Khng s dng Deleted Table Lu tr nhng bn ghi trc khi cp nht Lu tr nhng bn ghi b xa Khng s dng

DELETE

INSERT

Lu tr nhng bn sao ca nhng bn ghi c thm.

16.4 Cc kiu Trigger


C 3 kiu trigger: 16.4.1 INSERT trigger DELETE trigger UPDATE trigger INSERT trigger

Thc hin bt c khi no c s thm d liu vo bng Cch thc hin ca INSERT trigger: Thm bn sao ca nhng dng d liu c thm vo Inserted table. Kim tra nhng dng d liu trong Inserted table, xc nh xem n c hp l khng. Nu hp l th thm nhng dng vo trigger table. V d: V d sau to trigger c tn l CheckFare tc ng ln bng Flight_detail mi khi c hnh ng thm (INSERT) d liu. Triggger ny m bo rng gi v ca hng FC trn chuyn bay Indian Airlines khng c vt qu 8000. Cu lnh nh sau:
CREATE TRIGGER CheckFare ON flight_details FOR INSERT AS IF (SELECT fare FROM INSERTED AS i JOIN flight AS f ON i.aircraft_code = f.aircraft_code JOIN airlines_master AS am ON f.aircode = am.aircode WHERE i.class_code = 'FC' AND am.airline_name = 'Indian Airlines') > 8000

152

Chng 16. TRIGGER


BEGIN PRINT 'CheckFareTrigger: Fare for FC class of Indian Airlines flights cannot exceed 8000' PRINT 'Change the fare to a value less than 8000' ROLLBACK TRANSACTION END

Kt qu:

Hnh 16.3 16.4.2 UPDATE trigger

Thc hin bt c khi no c s cp nht d liu trong bng. Cch thc hin ca UPDATE trigger: Chuyn nhng dng d liu c (trc khi cp nht) vo Deleted table. Thm nhng dng c gi tr mi vo Inserted table, v trigger table. Kim tra li gi tr trong Deleted v Inserted tables nu c bt c yu cu lin quan no.

C th c to thc hin cp nht trn mt ct hoc trn ton b bng. V th, ngi ta chia UPDATE trigger thnh 2 loi:

16.4.2.1

Column Level

Trong v d ny, chng ta to ra mt UPDATE trigger tc ng ln ct Meal_code ca bng Meal. Trigger ny s thc hin mi khi c hnh ng cp nht d liu trn ct Meal_code. Cu lnh nh sau:

153

Chng 16. TRIGGER

CREATE TRIGGER NoUpdateMealcode ON Meal FOR UPDATE AS IF UPDATE (Meal_code) BEGIN PRINT 'You cannot modify codes' ROLLBACK TRANSACTION END

the

meal

Sau khi to ra trigger, s khng c php ton cp nht no c thc hin trn ct Meal _code, v h thng s tr li thng bo nh trn: Kt qu:

Hnh 16.4

16.4.2.2

Table Level

Trong v d ny, chng ta s to ra mt trigger m bo rng ct no_of_seats ca bng Reservation khng c php thay i gi tr ln hn 5. Trigger ny s thc hin mi ln cp nht bt c ct no trn bng (y l im khc bit vi Column Level).
CREATE TRIGGER NoUpdateSeats ON Reservation FOR UPDATE AS IF (SELECT no_of_seats FROM inserted) > 5 BEGIN PRINT 'You cannot book more than 5 seats' ROLLBACK TRANSACTION END

154

Chng 16. TRIGGER

Kt qu thc hin trigger trn khi c hnh ng Update xy ra:

Hnh 16.5 16.4.3 DELETE trigger

Chng ta s to DELETE trigger khi chng ta mun c tc ng ln thao tc Delete d liu ca bng. Cch thc hin ca DELETE trigger: V d:
CREATE TRIGGER NoDeleteBA01 ON Flight FOR DELETE AS IF (SELECT aircraft_code FROM deleted)= BA01 BEGIN PRINT You cannot delete the details of aircraft code BA01 ROLLBACK TRANSACTION END

Xo dng d liu t trigger table. Thm nhng dng b xo vo Deleted table. Kim tra nhng dng d liu trong Deleted table thc hin cc cu lnh ca trigger

Kt qu:

155

Chng 16. TRIGGER

Hnh 16.6

16.5 Cc cu lnh khng th s dng trong Triggers.


Danh sch cc cu lnh SQL khng th bao gm trong triggers. CU LNH SQL CREATE Database ALTER Database DROP Database LOAD Database RECONFIGURE RESTORE LOG DISK INIT DISK RESIZE LOAD LOG RESTORE Database

16.6 Triggers dy chuyn - Cascading Triggers


Cascading triggers thc hin hiu qu i vi cc rng buc ton vn tham chiu.

156

Chng 16. TRIGGER

Cascading triggers sa d liu cc bng lin quan khi c s thay i d liu xy ra trn mt bng Triggers khng th thc hin cp nht v xo cascade nu n lm nh hng n rng buc kho chnh v kho ngoi (foreign and primary key constraints). Triggers c thc hin sau khi kim tra rng buc, nu c mt rng buc b vi phm th trigger s khng thc hin.

16.7 Triggers lng nhau - Nested Triggers


Thc hin trigger lng nhau khi thc hin trigger ny cn kt qu t mt trigger khc. Triggers c th lng nhau ti a 32 cp. c th s dng c triggers lng nhau ta phi thit t li th tc h thng sp_configure nh sau: sp_configure nested trigger, 1 Ngc li, lm mt tc dng ca triggers lng nhau: sp_configure nested trigger, 0

16.8 INSTEAD OF Triggers


Trong cc phin bn trc, chng ta khng th thc hin c pht biu INSERT, UPDATE, DELETE trn d liu ca Views. SQL Server khc phc nhc im ny, mun thao tc vi d liu trn View, ta phi to trigger cho View . V th, INSTEAD OF trigger cha m lnh thay th cho nhng cu lnh thc hin d liu nguyn thu (INSERT, UPDATE, DELETE) Xem xt v d sau y, chng ta nhn thy View sau y c iu kin kt ni, ci m khng h tr thao tc xo d liu. INSTEAD OF trigger cung cp gii php cho vn ny. Cu lnh to View:
CREATE VIEW service_view AS SELECT s.service_code AS scode1, service_name, a.service_code AS scode2, aircode FROM service s JOIN airline_service a ON s.service_code=a.service_code

Ta c gng thc hin xo d liu trn View ny bng cu lnh:


DELETE service_view WHERE scode1= CC

157

Chng 16. TRIGGER

Kt qu thc hin s bo li: View or function service_view is not updatable because the modification affects multiple base tables. V service_view c xc nh trn 2 bng nn chng ta mun xo d liu phi s dng INSTEAD OF trigger. nh ngha nh sau:
CREATE TRIGGER del_service ON service_view INSTEAD OF DELETE AS DELETE service WHERE service_code IN (SELECT scode1 FROM DELETED) DELETE airline_service WHERE service_code IN (SELECT scode2 FROM DELETED)

Sau khi c trigger ny, cu lnh DELETE c nh ngha y s thay th cho cu lnh DELETE d liu nguyn thy v ta d dng thc hin c cu lnh DELETE trn.
DELETE service_view WHERE scode1= CC

Lc ny, d liu cng c xo tng ng trn 2 bng Airline_Service v Service.

158

Chng 16. TRIGGER

16.9 Cu hi trc nghim


1. Kiu trigger no sau y l trigger cha nhng cu lnh thay th cho nhng cu lnh thc hin nguyn gc? A B C D Cascade Table Level Column Level INSTEAD OF

2. Trigger c th lng nhau bao nhiu cp? A B C D 8 16 32 256

3. La chn WITH ENCRYPTION trong cu lnh CREATE TRIGGER lm chc nng g? A B C M ha ni dung trong trigger M ha c s d liu ni m c trigger nh ngha M ha d liu trong c s d liu ni m c trigger nh ngha

4. Cascade Trigger c th xa v cp nht c nhng d liu m nh hng n rng buc kha chnh v kha ngoi A B ng Sai

5. Nhng bng logic no sau y c s dng trong Trigger A B C D Temp Inserted Hold Deleted

6. Nhng cu lnh no sau y c th c trong Trigger A B C D Rollback Transaction Disk resize Restore log Load Database

159

Chng 17. TRIGGER Phn thc hnh

17 Chng 17. TRIGGER Phn thc hnh


Mc ch: To CREATE, DELETE, UPDATE v INSTEAD OF trigger. M ho (encrypt) trigger. Xem cch trigger thc hin. Hin th cc thng tin v trigger.

17.1 To INSERT trigger.


INSERT trigger m bo d liu nhp vo bng c ng n. Xem xt v d to INSERT trigger m bo khng c v no c t vo mt ngy trong qu kh. Cc bc thc hin: 1. M QA, chn c s d liu FI. 2. Thc hin on lnh sau trong QA.
CREATE TRIGGER insert_trigg ON Reservation FOR INSERT AS IF((Select journey_date From Inserted)<getdate()) BEGIN PRINT 'journey_date khong the nho hon ngay hien tai' ROLLBACK TRAN END

3. Sau , hy th thc hin thm mt bn ghi c journey_date < ngy hin ti ca h thng.

17.2 To DELETE Trigger


DELETE trigger ngn cn vic xo i nhng d liu quan trng trong bng. Xem xt v d sau: To trigger trnh xo 2 bn ghi trong bng Passenger ng thi. 1. Trong QA thc hin nh sau:
CREATE TRIGGER delete_trigg ON Passenger FOR Delete AS IF((Select count(*) From deleted)>2) BEGIN 160

Chng 17. TRIGGER Phn thc hnh

END

PRINT 'Ban khong duoc xoa cung luc 2 ban ghi' ROLLBACK TRAN

2.Thc hin cu lnh xo nhiu hn 2 bn ghi t bng Passenger, gi s nh sau: Kt qu:

Hnh 17.1

17.3 To UPDATE Trigger.


17.3.1 To Table Level UPDATE Trigger.

Trigger UPDATE s c thc hin bt c khi no d liu trong bng c cp nht. Xem xt v d: To UPDATE trigger m bo rng ct No_of_seats trong bng Reservation khng c cp nht gi tr ln hn 5 v journey_date khng nh hn ngy hin ti. 1. Thc hin nh sau trong QA.
CREATE TRIGGER CheckingUpdate ON Reservation FOR UPDATE AS IF((Select no_of_seats From inserted)>5) OR ((Select journey_date From Inserted)<getdate()) BEGIN PRINT 'Error' ROLLBACK TRAN END

161

Chng 17. TRIGGER Phn thc hnh

2. Thc hin truy vn sau kim tra Trigger:


UPDATE Reservation SET no_of_seats=6 Where PNR_no=3

Kt qu:

17.3.2

Hnh 17.2 To Column Level Update Trigger

Loi Trigger c thc hin khi d liu trong ct no c cp nht. 1. Thc hin nh sau trong QA:
CREATE TRIGGER Col_Update_trig ON Flight_details FOR UPDATE AS IF UPDATE(Fare) BEGIN PRINT 'Ban khong the update cot Fare' ROLLBACK TRAN END

2. By gi, chng ta s th cp nht ct Fare.

Hnh 17.3

162

Chng 17. TRIGGER Phn thc hnh

17.4 To Trigger c la chn Encryption


Encryption (m ho) l phng php gi b mt cho Trigger. Ni dung ca Trigger sau khi c m ho s khng c c. 1. Thc hin cu lnh ALTER TRIGGER sa insert_trigg:
ALTER TRIGGER insert_trigg ON Reservation WITH ENCRYPTION FOR INSERT AS IF((Select journey_date From Inserted)<getdate()) BEGIN PRINT 'journey_date khong the nho hon ngay hien tai' ROLLBACK TRAN END

3. Thc hin cu lnh sau:

Hnh 17.4

17.5 Hin th danh sch cc trigger trong Database


S dng th tc h thng sp_helptrigger hin th danh sch cc trigger trong c s d liu hin ti.
sp_helptrigger Flight_Details

Kt qu:

163

Chng 17. TRIGGER Phn thc hnh

Hnh 17.5

17.6 S dng Triggers to rng buc tham chiu (Enforce Referential Intergrity)
Xem xt v d sau: To Trigger kim tra d liu nhp vo ct Meal Pref ca bng Passenger phi l d liu tn ti trong ct Meal codes ca bng Meal. 1. Thc hin nh sau trong QA:
CREATE TRIGGER ins_trig ON Passenger FOR INSERT AS IF (Select [Meal Pref]FROM INSERTED) NOT IN (Select meal_code FROM Meal) BEGIN Print 'Ban khong the insert gia tri nay' ROLLBACK TRAN END

2. Bn hy th kim tra hot ng ca Trigger trn.

17.7 Cascade Delete s dng Nested trigger.


Trong Nested trigger, mt trigger c th c thc hin lng trong trigger khc. Chng ta c th lng trigger ti a 32 mc. Nested trigger cho php cascade update v cascade delete. Thc hin cu lnh kch hot Nested trigger: sp_configure nested trigger, 1 Ngc li: sp_configure nested trigger, 0 To Cascade delete trigger thc hin cng vic sau: Nu xo mt chuyn bay trong bng Flight, th tt c cc thng tin lin quan trong bng Flight_Details s b xo.
164

Chng 17. TRIGGER Phn thc hnh

1. Thc hin nh sau trong QA:


CREATE TRIGGER Casc_del ON Flight FOR DELETE AS DELETE Flight_details FROM Flight_details, DELETED WHERE Flight_details.aircraft_code=DELETED.aircraft_code

2. To Delete Trigger khc trn bng Flight. Trigger ny s thc hin khi trigger Casc_del thc hin.
CREATE TRIGGER del_aircraftcode ON Flight_details FOR DELETE AS SELECT * FROM Flight SELECT * FROM Flight_Details

3. Thc hin cu lnh sau:


DELETE FROM Flight WHERE aircraft_code= 9W01

165

Chng 17. TRIGGER Phn thc hnh

Hnh 17.6

17.8 To INSTEAD OF Trigger


Chng ta c th thc hin INSTEAD OF trigger trn bng, n thay th cho cu lnh INSERT, UPDATE, DELETE nguyn thu. 1. Thc hin nh sau bng QA:
CREATE TRIGGER instead_trigg ON Service INSTEAD OF INSERT AS BEGIN Select Service_code AS 'Inserted columns' From Inserted Select Service_code AS 'Deleted columns' From Deleted Select Service_code AS 'Table contents' From Service END

2. Thc hin cu lnh sau:


INSERT INTO Service Values(FA, First Aid) 166

Chng 17. TRIGGER Phn thc hnh

Kt qu:

Hnh 17.7

167

Chng 17. TRIGGER Phn thc hnh

17.9 Bi tp
Thc hin nhng yu cu sau bng QA: 1. To INSERT trigger c tn ins_chkclass trn bng Reservation. Trigger m bo rng d liu c nhp vp trng class code tn ti trong bng Class_master v s gh c t khng qu 2. To Cascading UPDATE trigger c tn upd_mealcode trong bng Meal. Khi meal code trong bng Meal c cp nht th nhng d liu lin quan trong bng Airline_meal cng c cp nht tng ng. Hin th m lnh (code) ca trigger ins_chkclass trn bng Reservation. Sa trigger upd_mealcode ngi s dng khng nhn thy m lnh ca n. To View c tn all_day cha thng tin chi tit sau: day code, day name, v aircraft code trong bng Day_master v Flight_days. To DELETE trigger tn l del_day xo d liu trong View. Kim tra li s thc hin ca trigger.

2.

3. 4. 5.

168

Chng 18. SAO LU V PHC HI (Backup & Restore)

18 Chng 18. SAO LU & PHC HI (Backup & Restore)


18.1 Gii thiu
Nhng nguyn nhn gy ra mt d liu: a cng h V hay c sa i d liu nh xa hay thay i d liu. Trm cp Virus

trnh vic mt d liu, chng ta nn thng xuyn sao lu c s d liu. Nu nh d liu hay c s d liu b h th ta c th dng bn sao lu (backup) ny khi phc li c s d liu b mt.

18.2 Sao lu c s d liu


Sao lu-backup mt c s d liu (CSDL) l to mt bn sao CSDL, ta c th dng bn sao khi phc li CSDL nu CSDL b mt. Bn sao gm tt c nhng file c trong CSDL k c transaction log. Transaction log ( hay log file) cha nhng d liu thay i trong CSDL (V d nh khi ta thc hin cc lnh INSERT, UPDATE, DELETE). Transaction log c s dng trong sut qu trnh khi phc roll forward nhng transaction hon thnh v roll back nhng transaction cha hon thnh. Roll back l hy b giao dch cha hon thnh khi h thng xy ra s c, (hoc trong trng hp sao lu, khi thc hin xong vic sao lu m giao dch cha hon thnh) ( xem chi tit phn Transaction). Roll forward l khi phc tt c giao dch hon thnh khi h thng xy ra s c, (hoc trong trng hp sao lu, nhng giao dch hon thnh khi thc hin xong vic sao lu ) ( xem chi tit phn Transaction). Checkpoint l thi im ghi li tt c nhng trang d liu thay i ln a. V d minh ha roll back v roll forward: Giao dch 1 commit trc khi checkpoint, khng lm g c v d liu c thay i trong CSDL ( ng vi s 1 trong hnh). Giao dch 2 v 4 commit sau khi checkpoint nhng trc khi h thng xy ra s c, do nhng giao dch ny c to li t log file. iu ny gi l roll forward (ng vi s 2 v 4 trong hnh).

169

Chng 18. SAO LU V PHC HI (Backup & Restore)

Giao dch 3 v 5 cha commit khi h thng xy ra s c, do nhng giao dch ny khng c thc hin v tr v CSDL khi cha xy ra giao dch. iu ny gi l roll back (ng vi s 3 v 5 trong hnh).

Hnh minh ha qu trnh khi phc giao dch:

Checkpoint

H thng xy ra s c

Hnh 18.1. Khi phc giao dch Sao lu mt transaction log l ch sao lu nhng thay i xy ra trong transaction log k t ln sao lu transaction log cui cng. Sao lu mt CSDL ghi li ton b trng thi ca d liu ti thi im thc hin xong sao lu. Trong thi gian sao lu, SQL Server 2000 cho php thc hin vic giao dch (transaction).

18.3 Phc hi c s d liu


Vic khi phc mt bn sao lu CSDL s tr v CSDL cng trng thi ca CSDL khi ta thc hin vic sao lu. Giao dch (transaction) no khng hon thnh trong khi sao lu (backup) CSDL c roll back m bo tnh nht qun CSDL. Khi phc mt bn sao lu transaction log l p dng li tt c giao dch (transaction) hon thnh trong transaction log i vi CSDL. Khi p dng bn sao lu transaction log, SQL Server c trc transaction log, roll forward tt c cc
170

Chng 18. SAO LU V PHC HI (Backup & Restore)

transaction . Khi n cui bn sao lu transaction log, SQL Server roll back tt c transaction m khng hon thnh khi ta bt u thc hin sao lu, to li trng thi chnh xc ca CSDL ti thi im bt u thc hin sao lu. V d minh ha sao lu (backup) v khi phc (restore) mt CSDL c xy ra giao dch (transaction) khi thc hin sao lu: 1. Bt u backup: Gi s CSDL gm c cc d liu ABC, DEF, GHI, JKL, transaction log file khng c d liu v khng c giao dch no xy ra. Khi ang thc hin sao lu (backup) c mt phn d liu th xy ra giao dch, SQL Server 2000 s u tin cho vic giao dch trc, vic sao lu (backup) tm thi dng li.
database ABC DEF GHI JKL database backup ABC DEF GHI JKL

transaction log

2. Xy ra giao dch (transaction), d liu ABC c thay bng 123, GHI c thay bng 456.
database ABC DEF GHI JKL transaction log ABC=123 GHI=456 database backup ABC DEF

3. Khi thc hin giao dch (transaction) xong, SQL Server thc hin tip vic sao lu (backup), s chp phn cn li ca d liu nhng d liu thay i do xy ra giao dch.

171

Chng 18. SAO LU V PHC HI (Backup & Restore)

database 123 DEF 456 JKL transaction log

database backup ABC DEF 456 JKL

ABC=123 GHI=456

4. Khi sao lu xong phn d liu th s chp tip phn transaction log.
database 123 DEF 456 JKL database backup ABC DEF 456 JKL

transaction log
ABC=123 GHI=456

transaction log backup


ABC=123 GHI=456

5. Khi c yu cu khi phc (restore) CSDL , CSDL c khi phc trc, chp li ton b CSDL ca bn sao lu CSDL .
restore ABC DEF 456 JKL database backup ABC DEF 456 JKL

transaction log backup


ABC=123 GHI=456

172

Chng 18. SAO LU V PHC HI (Backup & Restore)

6. Sau SQL Server s khi phc tip phn transaction log. Trc tin s roll forward nhng khi c n d liu th ba th n thy d liu ny c thay i ri do n s roll back ( tr v d liu ban u khi cha thc hin giao dch) nht qun d liu.
restore ABC DEF GHI JKL database backup ABC DEF 456 JKL

transaction log backup


ABC=123 1.1. GHI=456

BC

18.4 Cc loi Backup v Restore


18.4.1 Cc loi sao lu-Backups Full Database Backups: Copy tt c data files, user data v database objects nh system tables, indexes, user-defined tables trong mt database. Differential Database Backups: Copy nhng thay i trong tt c data files k t ln full backup gn nht. File or File Group Backups : Copy mt data file n hay mt file group. Transaction Log Backups:Ghi nhn mt cch th t tt c cc transactions cha trong transaction log file k t ln transaction log backup gn nht. Loi backup ny cho php ta phc hi d liu tr ngc li vo mt thi im no trong qu kh m vn m bo tnh nht qun. 18.4.2 Cc m hnh khi phc- Recovery Models Full Recovery Model: y l model cho php phc hi d liu vi t ri ro nht. Nu mt database trong mode ny th tt c cc hot ng khng ch insert, update, delete m k c insert bng Bulk Insert, hay Bcp u c log vo transaction log file. Khi c s c th ta c th phc hi li d liu ngc tr li ti
173

Chng 18. SAO LU V PHC HI (Backup & Restore)

mt thi im trong qu kh. Khi data file b h nu ta c th backup c transaction log file th ta c th phc hi database n thi im transaction gn nht c commited. Bulk-Logged Recovery Model : mode ny cc hot ng mang tnh hng lot nh Bulk Insert, bcp, Create Index, WriteText, UpdateText ch c log minimum vo transaction log file cho bit l cc hot ng ny c din ra m khng log ton b chi tit nh trong Full Recovery Mode. Cc hot ng khc nh Insert, Update, Delete vn c log y dng cho vic phc hi sau ny. Simple Recovery Model : mode ny th Transaction Log File c truncate thng xuyn v khng cn backup. Vi mode ny bn ch c th phc hi ti thi im backup gn nht m khng th phc hi ti mt thi im trong qu kh. Mun bit database ca bn ang mode no bn c th Right-click ln mt database no trong SQL Server Enterprise Manager chn Properties->Options>Recovery. Bng thng k cc m hnh phc hi(Recovery Models) v kiu sao lu(Backup Type) tng ng:
Model Database Simple Full Bulk-Logged Required Required (or file backups) Required (or file backups) Backup Type Database differential Optional Optional Optional Transaction log Not allowed Required Required File or file differential Not allowed Optional Optional

18.5 Full Database backup


Chp li ton b CSDL, lc ca tt c cc bng v cu trc file tng ng. Khng phi tt c nhng trang c chp n backup set, ch nhng trang cha d liu tht s mi c chp n backup set v th database backup thng nh hn CSDL m n sao lu. C nhng trang d liu v nhng trang transaction log c chp n backup set. Khi to full database backup nhng khng c nhng bn transaction log backup ring th khi c yu cu khi phc , ta ch c th khi phc li c trng thi ca CSDL khi qu trnh sao lu hon thnh. Khng c cch g khi phc li c CSDL mi nht. Ta nn dng Full database backup nu h thng c nhng c im sau:

174

Chng 18. SAO LU V PHC HI (Backup & Restore)

D liu t quan trng v nhng thay i ca CSDL c th to li bng tay tt hn l dng transaction log. CSDL t thay i, nh CSDL ch c. Sao lu 1 CSDL l sao lu ton b CSDL m khng n n c thay i so vi ln sao lu cui cng khng. iu ny c ngha l s mt nhiu vng nh cho 1 bn sao v tn nhiu thi gian thc hin sao lu so vi vic dng transaction log backup v differential backup. Cch to Full database backup bng EM

18.5.1

Thc hin cc bc sau: 1. Kch vo server group, v kch vo server cha Database mun backup. 2. Kch Databases, kch phi chut vo database, tr chut vo All Tasks, sau kch Backup Database.

Hnh 18.2

175

Chng 18. SAO LU V PHC HI (Backup & Restore)

3. Trong Name box, nhp tn ca backup set. Trong Description, c th son ch thch cho backup set ny. 4. Di mc Backup, kch Database - complete. 5. Di mc Destination, kch Tape hoc Disk (tu thuc bn mun backup vo loi thit b no), sau ch ra ng dn cha tp tin backup. Nu khng c xut hin ni chn ng dn _backup destinations, kch Add thm ng dn mi.

Hnh 18.3 6. Di Overwite, thc hin nh sau: Kch Append to media thm mt tp backup mi Kch Overwrite existing media ghi ln tp ang tn ti.

7. [Chc nng khng bt buc] Chn Schedule check box xp lch cho vic backup (backup operation). V d bn mun t ng backup hng tun vo 12h00 ngy ch nht, hoc th bn c th s dng chc nng ny.

Hnh 18.4
176

Chng 18. SAO LU V PHC HI (Backup & Restore)

18.5.2

Khi phc Full database backup bng EM

.Thc hin cc bc sau: 1. Kch vo server group, v kch vo server cha Database mun backup. 2. Kch Databases, kch phi chut vo database, tr chut vo All Tasks, sau kch Restore Database.

Hnh 18.5 3. Trong Restore as database box, son tho hoc chn tn database nu mun thay i tn Database mc nh khng. 4. Kch Database. 5. Trong danh sch First backup to restore, kch vo bn sao lu mun c phc hi(v c th c nhiu bn c Backup). 6. Trong danh sch Restore, kch vo database mun c phc hi. M t qu trnh thc hin: Khi phc li database backup l tr v trng thi ca CSDL khi lnh backup c thc thi. SQL Server to li CSDL theo cc bc sau:

177

Chng 18. SAO LU V PHC HI (Backup & Restore)

o Chp tt c d liu trong bn sao vo CSDL khi phc. o Bt k giao dch no khng hon thnh trong database backup th c roll back bo m tnh nht qun d liu. Qu trnh ny bo m CSDL sau khi khi phc l mt bn sao ca CSDL khi thc hin sao lu, tr nhng giao dch khng hon thnh c roll back. iu ny m bo tnh ton vn d liu. Ngoi ra, trnh vic c tnh vit ln CSDL tn ti, qu trnh khi phc thc hin kim tra an ton mt cch t ng. Qu trnh khi phc khng thc hin nu: Tn CSDL khi phc tn ti trn server v tn CSDL cn khi phc khng tng ng vi tn CSDL ghi trong backup set. Tn CSDL khi phc tn ti trn server nhng d liu bn trong khng ging vi d liu bn sao database backup. V d: CSDL khi phc c cng tn vi CSDL c trong SQL Server nhng d liu th khc v d nh c nhng bng d liu khc. Mt hoc nhiu file yu cu to t ng bng thao tc khi phc (khng n CSDL tn ti hay cha) nhng nhng file ny c cng tn vi CSDL tn ti ri.

Tuy nhin vic kim tra an ton c th khng c tc dng nu c mc ch vit .

18.6 Transaction log backup


18.6.1 Gii thiu

Ch ghi li nhng thay i trong transaction log. Transaction log backup ch chp li log file. Nu ch c bn sao log file th khng th khi phc li c CSDL. N c s dng sau khi CSDL c khi phc li. Sao lu transaction log nh k to ra 1 chui transaction log backup cho php user linh ng la chn khi phc CSDL. To transaction log backup lm cho CSDL c th khi phc n thi im xy ra s c. Khi to transaction log backup, im bt u backup l: im kt thc ca transaction log backup trc ( nu c mt transaction log backup to ra trc ). Transaction log backup nh l mt phn cui ca database backup hoc differential backup mi nht nu khng c transaction log backup no c to ra trc (database backup hoc differential backup cha mt bn sao vng tch cc ca transaction log).
178

Chng 18. SAO LU V PHC HI (Backup & Restore)

Ta nn dng transaction log backup nu h thng c nhng c im sau: Ti nguyn thc hin database backup gii hn nh thiu vng lu tr hoc thi gian thc hin backup. V d: CSDL 10 terabyte i hi nhiu thi gian v vng lu tr backup. Bt k vic mt nhng thay i sau ln database backup cui cng l khng th chp nhn c. V d : h thng CSDL kinh doanh ti chnh, n khng th chp nhn mt bt k giao dch no. Mong mun tr v CSDL ti thi im xy ra s c. V d mun khi phc li CSDL trc khi xy ra s c 10 pht. CSDL thay i thng xuyn.

V transaction log backup thng s dng ti nguyn t hn nn chng c backup thng xuyn hn. iu ny gim kh nng mt d liu han ton. t gp trng hp transaction log backup ln hn database backup. V d CSDL c t l giao dch cao v nhng giao dch nh hng n phn ln CSDL gy ra transaction log tng nhanh hoc t sao lu transaction log. Trong trng hp ny to transaction log backup thng xuyn hn. Khi phc CSDL v p dng transaction log backup: Sao lu transaction log hin hnh nu s c xy ra (tr khi a cha file transaction log b h). Khi phc database backup mi nht. p dng tt c cc transaction log backup c to ra sau khi thc hin full database backup. p dng transaction log backup cui cng c to ra bc 1 khi phc li CSDL n thi im xy ra s c.

V th, mc d s dng transaction log backup tng kh nng khi phc, nhng to v p dng chng cng phc tp hn dng Full Database backup. Khi phc CSDL s dng c full database backup v transaction log backup ch khi ta c chui transaction log backup lin tc. SQL Server 2000 khng cho php lu transaction log trong cng file lu CSDL. V nu file ny h th ta khng th s dng n khi phc tt c nhng thay i k t ln sao lu full database backup cui cng. 18.6.2 Ct (truncate) transaction log Khi SQL Server sao lu xong transaction log, n ct phn khng tch cc ca transaction log. SQL Server s dng li phn ct ny. Phn khng tch cc l phn ca transaction log khng cn s dng na trong qu trnh khi phc CSDL v tt c

179

Chng 18. SAO LU V PHC HI (Backup & Restore)

giao dch trong phn ny hon tt. Ngc li, phn tch cc ca transaction log cha nhng giao dch ang chy v cha hon thnh. im kt thc phn khng tch cc ca transaction log, im ct, l im u tin ca nhng s kin sau: Checkpoint gn nht tng ng vi im u tin m ti SQL Server s roll forward nhng giao dch trong qu trnh khi phc. Bt u ca giao dch tch cc c nht; 1 giao dch cha commit hoc roll back. Tng ng vi im u tin m SQL Server roll back giao dch trong sut qu trnh khi phc.

18.6.3 iu kin transaction log backups Transaction log khng nn sao lu: Nu CSDL thit lp trunc. log on chkpt (truncate log on checkpoint) l TRUE (th khng th to ra log record dng roll forward); to database backup hoc differential backup thay th. Nu bt k thao tc nonlogged no xy ra trong CSDL k t khi thc hin sao lu full database backup ln cui cng; to full database backup hoc differential backup thay th. Cho n khi thc hin sao lu full database backup v transaction log backup cha nhng thay i ca database backup. Nu transaction log b ct, tr khi database backup hoc differential backup c to ra sau khi ct transaction log . Nu bt k file no c thm vo hay xa khi CSDL; database backup nn to ra thay th ngay lc . Cch to transaction log backup bng EM

18.6.4

Cch lm tng t nh i vi to Full Database backup, tuy nhin bc 4 ta phi chn Transaction log. Lu : Nu la chn Transaction Log khng c php th ta phi kim tra li recovery model thit t l Full hoc Bulk-Logged. Bi v ch nhng model ny mi h tr transaction log backup. 18.6.5 Khi phc transaction log backup bng EM

Thc hin tng t nh cch Khi phc Full database backup.

180

Chng 18. SAO LU V PHC HI (Backup & Restore)

Hnh 18.6 Tuy nhin, ta c th xc nh c thi im no mun khi phc d liu trong qu kh.

Hnh 18.7

181

Chng 18. SAO LU V PHC HI (Backup & Restore)

18.7 Differential backup


Differential backup ch ghi li nhng trang thay i ngay sau khi thc hin sao lu full database ln cui cng. Do , s nhanh hn thc hin full database backup rt nhiu. Khng nh transaction log backup, differential backup khng to li CSDL chnh xc ti thi im xy ra s c, n cng nh full database backup, ch to li CSDL ti thi im backup cui cng. V th, differential backup thng c b sung bng cch to transaction log sau mi differential backup. S dng kt hp database backup, differential backup, v transaction log backup ta c th gim ti thiu kh nng mt d liu v thi gian khi phc d liu. Ta nn dng differential backup nu h thng c nhng c im sau: - D liu t quan trng v nhng thay i ca CSDL c th to li bng tay tt hn l dng transaction log. - Ti nguyn thc hin database backup gii hn nh thiu vng lu tr hoc thi gian thc hin sao lu. V d: CSDL 10 terabyte i hi nhiu thi gian v vng lu tr thc hin sao lu. - Ti thiu ha thi gian khi phc v gim vic mt nhng giao dch bng cch kt hp differential backup vi full database backup v transaction log backup. Xem xt vd sau: 24:00 (Th 3) 6:00 (Th 4) 12:00 (Th 4) 18:00 (Th 4) 24:00 (Th 4) 6:00 (Th 5) 12:00 (Th 5) Full Database backup (1) Differential database backup (2) Differential database backup (3) Differential database backup (4) Full Database backup (5) Differential database backup (6) Differential database backup (7)

Differential backup to vo lc 6:00 ngy th t (2) cha tt c nhng thay i ca database backup to t lc 24:00 ngy th ba(1). Differential backup to vo lc 6:00 ngy th nm(6) cha tt c nhng thay i ca database backup to t lc 24:00 ngy th t (5). Nu c khi phc CSDL n trng thi vo 12:00 ngy th nm, ta thc hin nhng bc sau: Khi phc database to lc 24:00 ngy th t.

182

Chng 18. SAO LU V PHC HI (Backup & Restore)

Khi phc differential backup to lc 12:00 ngy th nm.

Bt k thay i no sau tra th nm u b mt tr khi c khi phc transaction log backup. Ch : Cc to Differential backup v khi phc cng tng t nh thc hin vi Full database backup. S khc nhau gia differential backup v transaction log backup: Ging nhau: ti thiu ha thi gian sao lu. Khc nhau: o Differential backup: ch lu ln thay i cui cng o Transaction log backup: cha tt c nhng thay i k t ln sao lu full database backup cui cng. Do differential backup lu nhng trang thay i, gm nhng trang d liu v c trang transaction log thay i. V sao lu differential backup c kch thc ln hn sao lu transaction backup nn ta t sao lu differential backup thng xuyn so vi sao lu transaction backup. Do ta khng th khi phc CSDL n thi im xy ra s c khi sao lu differential backup v khng th khi phc CSDL n thi im m ta mong mun.

18.8 File hoc Filegroup backup


Ch sao lu nhng file CSDL ch nh. File hoc file group backup thng c s dng ch khi khng c thi gian sao lu ton b CSDL. S dng file hoc file group backup c th tng tc khi phc bng cch ch khi phc nhng file hoc filegroup b h. Khi sao lu file hoc file group th SQL Server khng c sao lu file transaction log do ta phi to transaction log backup sau khi sao lu file hoc file group. V d: Mt CSDL c 2 filegroup filegroup_a v filegroup_b nhng ch c thi gian sao lu 1 na filegroup, do : Sao lu filegroup_a vo cc ngy th hai, t, su. Sao lu transaction log ngay sau khi sao lu filegroup. Sao lu filegroup_b vo cc ngy th nm, su ,by. Sao lu transaction log ngay sau khi sao lu filegroup.

Khi phc file hoc filegroup backup: File hoc file group c th c khi phc t database backup hoc file hoc file group. Ta khng cn thit backup transaction log nu khng c thay i t khi sao lu file hoc file group. V d: Nu filegroup_b cn khi phc v 1 bng trong filegroup b h, ta s:
183

Chng 18. SAO LU V PHC HI (Backup & Restore)

Khi phc filegroup_b backup to vo ngy th nm. p dng transaction log backup ca filegroup_b.

184

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

19 Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS- Data Transformation Service)
Mt trong nhng cch trao i d liu gia cc loi c s d liu vi nhau l s dng tin ch Import hay Export d liu t nh dng ny sang nh dng khc. SQL Server 2000 cung cp hai chc nng chnh l Import dng nhp d liu vo c s d liu SQL Server 2000 t cc loi c s d liu khc v Export dng xut d liu t SQL Server 2000 ra cc loi c s d liu khc. Tuy nhin, tu thuc vo mc tng thch gia c s d liu Import hay Export m h thng cho php ta Import hay Export d liu v cc i tng gia hai c s d liu vi nhau mc no .

19.1 Import c s d liu


Vic u tin ta phi xc nh c s d liu ngun thuc loi c s d liu no chn v d nhin c s d liu ch chnh l SQL Server 2000. 19.1.1 Import c s d liu t SQL Server 2000

Gi s cn Import c s d liu Northwind t SQL Server 2000 Trong ca s SQL Server Enterprise Manager, kch chut phi vo Database > All Tasks > Import Data.

Hnh 19.1 Hoc t menu Tools > Data Transformation Services > Import Data

Hnh 19.2 Tip theo cn la chn ngun d liu Import

185

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Hnh 19.3 Data Source: Microsoft OLD DB Provider for SQL Server Server: Nu ngun d liu nm ngay ti my th chn l local, nu nm trn SQL Server 2000 khc th cn nh tn server hoc a ch IP vo. V d: haidv hoc 192.168.0.1 Ch xc thc (Authentication): Tu thuc vo cch xc thc ca server ngun Database: Chn database cn Import trong trng hp ny chn Northwind

Chn Next tip tc chn thng tin ca c s d liu ch

Hnh 19.4

186

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Trong mc Database ta chn <new> to mt c s d liu mi. Sau nh tn c s d liu mi, gi s l Northwind_COPY.

Hnh 19.5 Sau n Next

Hnh 19.6 C ba s la chn, ta s tm hiu ln lt tng la chn mt

19.1.1.1

Copy table(s) and view(s) from the source database

la chn ny ta s nhn c danh sch cc i tng Table v View ca c s d liu Northwind. Mun la chn Table hay View no cn Import ta kch vo Checkbox ca tng i tng.(Hnh 19.7) Nu mun i tng m SQL Server 2000 s sao chp c cu trc khc vi cc vi i tng s Import, ta c th chn nt trn ct Transform. Ta c th sa c cu trc ca bng ch theo mun.

187

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Hnh 19.7

Hnh 19.8 Nu mun khng Import mt s ct d liu no trong bng hoc khi Import mun thay i gi tr theo mun th kch vo mc Transformations

188

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Hnh 19.9 V kch vo mc Transform information as it is copied to the destination

Hnh 19.10 Ta c th vit cc lnh theo mun y. V d ta mun trng UnitPrice gi tnh bng ng tc ta cn nhn trng ny vi t gi USD/VND (16000)
189

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Function Main() DTSDestination("ProductID") = DTSSource("ProductID") DTSDestination("ProductName") = DTSSource("ProductName") DTSDestination("SupplierID") = DTSSource("SupplierID") DTSDestination("CategoryID") = DTSSource("CategoryID") DTSDestination("QuantityPerUnit")=DTSSource("QuantityPerUnit") DTSDestination("UnitPrice") = DTSSource("UnitPrice") *16000 DTSDestination("UnitsInStock") = DTSSource("UnitsInStock") DTSDestination("UnitsOnOrder") = DTSSource("UnitsOnOrder") DTSDestination("ReorderLevel") = DTSSource("ReorderLevel") DTSDestination("Discontinued") = DTSSource("Discontinued") Main = DTSTransformStat_OK End Function

19.1.1.2

Use a query to specify the data to transfer

Vi la chn ny ca s k tip s nh hnh di v yu cu ta cung cp pht biu SQL .

Hnh 19.11 C th g trc tip cu lnh SQL:

Hnh 19.12

select [Products].[ProductID], [Products].[ProductName], [Products].[UnitPrice] from [Products]

Hoc s dng cng c Query Builder (hnh trn). Sau khi thc hin xong c th nhn nt Parse kim tra c php ca pht biu SQL. Ngoi ra ta cng c th np pht biu SQL t bn ngoi (tp tin dng text) bng cch nhn nt Browse

19.1.1.3

Copy objects and data between SQL Server databases

Vi la chn ny ca s k tip s nh hnh di: Yu cu ta chn i tng mun Import (mc nh l tt c cc i tng ca c s d liu cn Import ang c).
190

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Hnh 19.13

19.1.1.4

Ch

Ta c th lu quy trnh Import c s d liu ra tp tin dts hoc .bas theo nh dng Visual Basic File. Khi ta chn tu chn luu DTS Package(Data) ra nh dng Visual Basic File th SQL Server 2000 khng cho php ta chn tu chn Schedule Ta c th s dng li Package ca DTS nu chn v lu li DTS Package ny Import t c s d liu Access

19.1.2

Cng nh phn Import t SQL Server 2000, trong ca s la chn c s d liu ngun Import ta chn mc Microsoft Access (hnh 19.14)

Hnh 19.14
191

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Sau kch vo nt chn file Access. Nu file Access c mt khu th ta cn nhp Username v Password vo (nu khng th trng). Sau chn Next chn hai phng thc nh hnh di. Qu trnh thc hin cng tng t nh cch thc hin khi Import t SQL Server 2000.

Hnh 19.15 19.1.3 Import t tp tin Excel

Ta la chn c s d liu ngun l Microsoft Excel 97-2000, sau chn tn file excel trong mc filename. Cc bc tip c tin hnh tng t nh vi cc lai c s d liu khc. Ch rng trong Excel cc Sheet c coi l cc Table ca c s d liu.

Hnh 19.16

192

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

19.1.4

Import t tp tin dng Text

Import d liu t tp tin dng Text phi m bo rng d liu trong tp tin c mt th t nht nh. Gi s rng chng ta c tp tin Text c dng nh sau:

Hnh 19.17 Trong phn Data Source ta chn Text File, sau chn ng dn n file text trong mc File name.

Hnh 19.18
193

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

Kch vo mc First row has column names nu dng u tin l tn ca trng. Sau chn Next.

Hnh 19.19 Phn chn Specify Column Delimiter ta chn k t no dng phn tch cc ct d liu trong trng hp ny l k t TAB. Khi chn cc k t phn tch ct khc ta c th thy d liu c phn tch di.

19.2 Export c s d liu


Export c s d liu cng tng t nh Import c s d liu. y l qu trnh ngc li vi qu trnh Import cc thao tc vi Export cng tng t nh vi Import.

19.3 Xy dng lch trnh Import v Export c s d liu


Qu trnh Import v Export c s d liu c th ci t mt lch trnh t ng theo mt th gian nht nh. Theo mc nh l tt c cc ngy vo lc 12 gi m. Ta c th thay i thi gian biu ny thng qua ca s sau:

Hnh 19.20

Hnh 19.21

194

Chng 19. CHUYN I GIA CC LOI C S D LIU (DTS)

19.4 Nhng iu cn gii quyt sau khi Import hay Export


Khi Import d liu t c s d liu khc vo c s d liu SQL Server 2000, cc kiu d liu thng khng ging nh ta mun. Chng hn, trong c s d liu Access kiu d liu True/False nhng i vi SQL Server 2000 th d liu tng ng l bit(0,1). Tng t nh vy, trong c s d liu Access kiu d liu l Text nhng i vi SQL Server 2000 th chia ra thnh nhiu loi nh char, nchar, nvarchar. Nh vy, sau khi Import d liu t c s d liu Access vo SQL Server 2000 ta phi khai bo li d liu cho tng ct d liu cho ph hp mc d hu ht d liu u c Import thnh cng. i vi trng hp Export t c s d liu SQL Server 2000 ra c s d liu khc cng tng t, ta lun khai bo li kiu d liu cho ph hp vi loi d liu m c s d liu c Import h tr.

195

Chng 20. KIN TRC NHN BN (REPLICATION)

20 Chng 20. KIN TRC NHN BN (REPLICATION)


Nhn bn l mt k thut quan trng v hu hiu trong vic phn b c s d liu (CSDL) v thc thi cc Stored procedure. K thut nhn bn trong SQL Server cho php bn to ra nhng bn sao d liu ging ht nhau, di chuyn cc bn sao ny n nhng vng khc nhau v ng b ho d liu mt cch t ng tt c cc bn sao c cng gi tr d liu. Nhn bn c th thc thi gia nhng CSDL trn cng mt server hay nhng server khc nhau c kt ni bi mng LANs,WANs hay Internet. SQL Server a ra nhiu c ch nhn bn p ng cc yu cu khc nhau ca ng dng. Mi loi cung cp cc kh nng v thuc tnh khc nhau nhm t n mc tiu ca tnh c lp Sitev s nht qun cc giao dch.

20.1 Mc tiu chnh ca nhn bn


SQL Server a ra nhiu c ch nhn bn p ng cc yu cu khc nhau ca ng dng. Mi loi cung cp cc kh nng v thuc tnh khc nhau nhm t n mc tiu ca tnh c lp Site v s nht qun d liu. 20.1.1 Nht qun d liu (Data consistency) - Nht qun giao dch(Transactional Consistency) - Hi t d liu (Data Convergence)

C 2 cch t c tnh nht qun d liu:

20.1.1.1

Nht qun giao dch

- Bo m tt c d liu ging nhau ti mi site bt k thi im. - Tt c giao dch thc hin ti mt site duy nht. C 2 loi : Nht qun lp tc (Immediate Transactional Consistency hay Tight Consistency): kiu ny, tt c cc site c bo m l lun thy cng gi tr d liu ti cng mt thi im. Cch duy nht t c nht qun giao dch (transactional consistency) trong mi trng cp nht phn tn (distributed update environment) l s dng 2-phase commit protocol gia tt c site tham gia (participating site). Mi site phi commit ng thi mi thay i hoc khng site no commit nhng thay i. Gii php ny r rng khng kh thi khi s lng site qu ln. Nht qun ngm (Latent Transactional Consistency hay Loose Consistency) :

196

Chng 20. KIN TRC NHN BN (REPLICATION)

C mt s nht qun ngm gia cc site tham gia do c mt s tr hon trong vic phn nh cc gi tr d liu n cc site tham gia v vo lc ny cc site khng bo m c cng gi tr d liu. Vic sa i cc gi tr d liu c th b tr hon lu tt c cc site cng cp nht, sau tt c cc site s c cng gi tr d liu. Ngoi ra cc gi tr d liu ny cng phi ging vi nhng gi tr t c khi thc hin cc cng vic ti mt site.S khc nhau duy nht gia nht qun giao dch lp tc v nht qun giao dch ngm l d liu c nht qun ti cng mt lc hay khng.

20.1.1.2

Hi t d liu

Vi s hi t d liu, tt c cc site c th quy v cng mt gi tr d liu nhng khng nht thit l gi tr d liu ny b gy ra bi nhng tc v c lm trn mt site duy nht. User c th t do thao tc trn cc site theo cc cch khc nhau. Khi cc nt (node) ng b, tt c cc site s hi t v cng mt gi tr. Nu ng gy ra bi s sa i cng mt d liu ti nhng site khc nhau th nhng sa i ny s c gii quyt mt cch t ng (chn site c u tin cao hn hay site a sa i n trc...). 20.1.2 c lp site (site autonomy)

c lp site xt n nh hng ca nhng thao tc trn mt site n cc site khc. Thng c lp site cng tng th tnh nht qun d liu gim. Nhn bn kt hp (Merge replication) c mc c lp site cao nht, to ra s hi t nhng li khng m bo tnh nht qun d liu. 2PC (two phase commit) c tnh nht qun d liu cao nhng li khng c tnh c lp site. Nhng gii php khc th thng gia hai tnh ny.

20.2 Kin trc nhn bn


20.2.1 Cc thnh phn chnh ca nhn bn:

- Publisher: L mt server to d liu nhn bn n cc server khc. N xc nh d liu no c nhn bn, d liu no thay i v duy tr nhng thng tin v cc cng b ti site . - Subscriber: L mt server lu gi nhn bn v nhn cc tc v cp nht. SQL Server 2000 cho php Subsriber cp nht d liu nhng qu trnh cp nhp Subscriber khng ging nh Publisher. Mt Subscriber c th l mt Publisher ca cc Subscriber khc. - Distributor: L mt server m cha CSDL phn tn (distribution database) v lu tr metadata, history data v transaction. SQL Server s dng CSDL phn tn lu v chuyn (store_and_forward) d liu nhn bn t Publisher n cc Subscriber. C 2 loi Distributor : Local Distributor v remote Distributor.

197

Chng 20. KIN TRC NHN BN (REPLICATION)

- Publication: n gin l mt tp hp cc mu d liu (article). Mt mu l mt nhm d liu c nhn bn. Mt mu c th bao gm mt table hay ch l mt vi hng (horizontal fragment) hay ct (vertical fragment). Mt Publication thng gm nhiu mu.

Pulisher
- Lu tr c s d liu ngun - Lm cho d liu c kh nng nhn bn

Subcriber
- Nhn nhng thay i d liu - Lu tr d liu c nhn bn

Distributor
- Nhn v lu nhng thay i - Chuyn nhng thay i ti subscibers

20.2.2

Chiu di chuyn d liu

C 2 kiu di chuyn d liu:

20.2.2.1
-

Push subscription
Publisher y (push) nhng thay i n Subscriber m khng quan tm Subscriber c cp nht hay khng. Push subscription c s dng trong nhng ng dng m yu cu gi nhng thay i n Subscriber ngay khi nhng thay i ny xy ra Publisher. Push Subscription gip vic qun l cc Subcsriber n gin v tp trung hn, ng thi gip bo mt tt hn v qa trnh khi ng (initialization process) s c qun l ti mt ch . Nhng v th, Distributor c th phi m nhn nhiu qu trnh phn b subscription n cc Subscriber cng mt lc . iu ny d dn n hin tng tht c chai (bottleneck) . M hnh ny khng thch hp khi s lng cc Subscriber tr nn qu ln. Push subscription gy ra 1 ph x l cao hn ti Publisher. trnh hin tng ny, nhng thay i c th c y n Subscriber theo mt lch nh k.
198

Chng 20. KIN TRC NHN BN (REPLICATION)

20.2.2.2
-

Pull subscription
Subsciber ko (pull) nhng thay i ti Publisher v theo mt khong thi gian nh k. Tt cho nhng user c lp thay i bi v chng cho php user xc nh khi no th nhng thay i d liu c ng b Ngc vi push subscription ,pull subscription bo mt thp nhng cho php s lng Subsriber cao hn . Mt publication c th s dng c hai push v pull subscription.

20.3 Tc nhn (Agent)


Vic thit k cc nhn bn c th to ra 1 hay nhiu agent. Snapshot agent: Chun b lc , data file, stored procedure Lu snapshot ln Distributor v ghi li nhng thng tin v trng thi ng b vo CSDL phn b (distribution database) . Mi publication c 1 snapshot agent ring chy trn Distributor v lin kt vi Publisher. Di chuyn nhng transaction cn nhn bn t transaction log trn Publisher n CSDL phn b . Mi publication dng nhn bn transaction c mt log reader agent, chy trn Distributor v lin kt (connect) n Publisher. Di chuyn transaction v nhng tc v sao chp gi trong CSDL phn b n Subscriber. TH: Nhn bn transaction hay snapshot m ng b lp tc ( immediate synchronization): khi 1 push subscription c to, mi publication c 1 distribution agent ring, chy trn Distributor v lin kt vi Subscriber. TH: Nhn bn transaction v snapshot khng ng b lp tc : Publisher v Subscriber s dng chung distribution agent , chy trn Distributor v lin kt vi Subscriber. TH: pull subscription n snapshot publication hay transactional publication: c distribution agent, chy trn Subscriber Nhn bn kt hp (merge replication) khng c distribution agent.

Log Reader agent: -

Distribution Agent: -

199

Chng 20. KIN TRC NHN BN (REPLICATION)

Merge agent: Di chuyn v iu ha nhng thay i d liu xy ra sau khi 1 snapshot khi ng (initial snapshot) c to. Mi merge publication c mt merge agent, lin kt v cp nht c vi c hai Publisher v Subscriber.

20.4 Cc loi nhn bn


Trong thc t kh c th c c mt loi nhn bn ph hp mi yu cu. Cng vic kinh doanh thng i hi nhiu ng dng khc nhau v th SQL Server a ra nhiu cch thc nhn bn p ng cc yu cu . SQL Server a ra 3 loi nhn bn s dng khi thit k ng dng: Nhn bn snapshot Nhn bn transaction Nhn bn kt hp
Immediate Transactional Consistency

Data Convergency Site Autonomy

Latent Transactional Consistency

Transactional Consistency

Mi loi cung cp cc kh nng v thuc tnh khc nhau nhm t n mc tiu ca tnh c lp site v s nht qun d liu.

20.5 Nhn bn snapshot(Snapshot replication)


20.5.1 Gii thiu

Nhn bn snapshot l loi nhn bn n gin nht, nhn bn snapshot sao chp ton b d liu cn nhn bn (cn gi l qu trnh lm ti d liu) t Publisher n cc Subscriber. N m bo s nht qun tim n (Latent Transactional Consistency) gia Publisher v Subscriber. Nhn bn snapshot c nh gi cao trong cc ng dng ch c nh tm kim hay cc h thng khng yu cu d liu mi nht v dung lng d liu khng ln. Nhn bn Snapshot gi tt c d liu n cho Subscriber thay v ch gi nhng thay i. Nu mu d liu rt ln n phi cn n h thng mng mnh truyn d liu. Khi s dng nhn bn snapshot cn phi tnh n t l gia kch c ca ton b d liu v nhng thay i ca n.

200

Chng 20. KIN TRC NHN BN (REPLICATION)

Hnh 20.1. Nhn bn snapshot(Snapshot replication) 20.5.2 Tc nhn (agent)

Cp nht snapshot c thc hin bi snapshot agent v distribution agent. Snapshot agent chun b nhng snapshot file (snapshot file l file sao chp lc v d liu ca nhng table phn b) cha lc v d liu ca nhng table phn b, lu nhng file ny vo snapshot folder trn Distributor v ghi li nhng cng vic ng b trong CSDL phn b (distribution database). Distribution agent gi nhng snapshot job (tc v sao chp d liu) gi trong bng d liu phn b n Subsciber. CSDL phn b ( distribution database) ch c s dng trong nhn bn, khng cha user table.

20.5.2.1
-

Snapshot agent
Thit lp mt share-lock ln tt c table (article) trong publication. Share-lock ngn khng cho cc user khc cp nht ln table . Sao chp lc d liu ca mi article ( .sch file) v cc index, cc rng buc ( .idx file) ln Distributor. Cc file ny c lu vo 1 th mc con trong th mc lm vic ca Distributor.

Snapshot agent thc hin theo cc bc sau:

201

Chng 20. KIN TRC NHN BN (REPLICATION)

Nu tt c cc Subsciber u l MS SQL Server th bn sao ca d liu c lu thnh .bcp file. Nu cc Subscriber khng ng nht ( cc Subsciber cha nhiu loi CSDL khc nhau , v d: Access, Oracle) th bn sao ca d liu c lu thnh .txt file. Cui cng agent g b share-lock trn mi table phn b v hon tt vic vit vo 1 log history file ( log history file ghi li qu trnh lm vic ca cc agent).

20.5.2.2

Distribution agent

Tc nhn p dng nhng lc v nhng d liu vo CSDL ca Subscriber. Nu Subscriber khng phi l SQL Server, distribution agent s chuyn i kiu d liu trc khi nhng d liu ny c p dng vo Subsciber. V d: Publisher s dng SQL Server, Subscriber s dng Oracle. Trc khi nhng d liu c p dng ln Subscriber, n s c chuyn i kiu t SQL Server sang Oracle. Snapshot c th c p dng khi subscription c to hay theo 1 khong thi gian nht nh.

20.6 Nhn bn giao dch (transactional replication)


20.6.1 Gii thiu

S dng nhn bn giao dch nhn bn hai kiu i tng khc nhau: table v stored procedure. Bn c th chn tt c hay mt phn ca mt table c nhn bn nh l mt article trong publication. Tng t, bn cng c th chn mt hay nhiu stored procedure c nhn bn nh l mt article trong cng hay khc publication. Nhn bn giao dch s dng transaction log gi nhng thay i c lm trn d liu trong mt article. SQL Server gim st nhng lnh insert, update, delete hay nhng sa i trn d liu v lu nhng thay i ln CSDL phn b (distribution database). Nhng thay i s c gi n Subscriber v tun theo mt trt t nht nh. Vi nhn bn giao dch, bt c yu t d liu no cng c mt publication. Nhng thay i c lm ti Publisher tip tc chy n mt hay nhiu cc Subsciber hay theo nhng khong thi gian nh trc.

20.6.2

Tc nhn (agent)

Nhn bn giao dch c thc hin bi Snapshot agent, Log Reader agent v Distribution agent. Log Reader agent gim st transaction log ca mi CSDL c

202

Chng 20. KIN TRC NHN BN (REPLICATION)

thit lp nhn bn v sao chp nhng transaction cn nhn bn t transaction log vo CSDL phn b (distribution database) . Distribution agent di chuyn nhng transaction v nhng tc v khi to snapshot c gi trong table ca CSDL phn b.

20.6.2.1

Snapshot agent

Trc khi mt Subscriber mi c th nhn nhng thay i t Publisher, n phi cha nhng table c cng lc v d liu vi nhng table ti Publisher. Qu trnh copy ton b publication t Publisher qua Subsciber c gi l initial snapshot. Vic nhn bn nhng d liu thay i ch xy ra sau khi nhn bn giao dch chc chn rng Subscriber c snapshot (bn sao ca nhng lc v d liu). Khi nhng snapshot c phn b v p dng ln cc Subsciber th ch nhng Subsciber ch khi to snapshot mi b nh hng. Nhng Subsciber khc ng vi publication m nhn insert, delete, update hay nhng thay i d liu ri th khng b nh hng. Nhng hm m Snapshot agent thc thi khi to snapshot trong nhn bn giao dch tng t nh cc hm c s dng trong nhn bn Snapshot.

20.6.2.2

Log Reader agent

Log reader agent chy tip tc hay theo mt khong thi gian xc nh m bn thit lp vo lc publication c to. Khi thc thi, u tin Log reader agent c transaction log ca publication v xc nh lnh (insert, delete, update) hay nhng sa i lm trn d liu c nh du nhn bn. K tip agent sao chp nhng transaction vo CSDL phn b ti Distributor. CSDL phn b (distribution database) tr thnh hng lu v y (store-and-forward queue) nhng thay i d liu n Subscriber. Ch c commit transaction mi c gi n CSDL phn b. C s tng ng 1-1 gia transaction trn Publisher v transaction c nhn bn trong CSDL phn b. Mt transaction c th bao gm nhiu lnh. Sau khi ton b transaction c vit vo CSDL phn b mt cch thnh cng, n s c commit. Sau nhng transaction ny s c y n cc Subscriber. Cui cng, agent nh du nhng hng (row) c cng b n Subscriber trong transaction log sn sng loi b. iu ny m bo nhng hng (row) cn ch nhn bn s khng b loi b. V th, transaction log trn Publisher c th c xung m khng cn tr vic nhn bn bi v ch nhng transaction b nh du mi b loi b. Log read agent thc thi trn Distributor.

20.6.2.3

Distribution agent

Nhng transaction c lu trong CSDL phn b cho n khi distribution agent y chng n tt c cc Subscriber (hoc mt distribution agent ti Subscriber ko nhng thay i v). CSDL phn b ch c s dng bi nhn bn

203

Chng 20. KIN TRC NHN BN (REPLICATION)

v khng cha bt c user table. Trong bt k trng hp no bn cng khng nn to nhng object khc vo trong CSDL phn b. Nhng tc v lm thay i d liu ti Publisher s chy n Subscriber v Subscriber s thay i d liu theo cng cch chng c thay i ti Publisher. iu ny m bo rng cc Subscriber s nhn nhng transaction theo mt trt t nh l chng c lm ti Publisher . Nhng hm m distribution agent s dng di chuyn nhng lnh n Subscriber cng tng t nh nhng hm c s dng trong nhn bn snapshot. 20.6.3 Thu dn trong nhn bn transaction

Tng t cho nhn bn snapshot. Khi CSDL phn tn(distribution database) c to, SQL Server s t ng thm vo 3 tc v ti Distributor: Agent checkup Transaction cleanup History cleanup

Nhng tc v ny gip cho vic nhn bn hiu qu hn trong mi trng long_running. Tc v cleanup gi li nhng transaction ca mi publication trong mt giai on xc nh sau khi tt c Subscriber nhn chng. Trong sut giai on ny nhng transaction s c gi trong CSDL phn b. Thit lp mt giai on gi li kt hp vi lch backup c th c s dng khi phc CSDL ch mt cch t ng khi xy ra s c.

20.7 Cc dng nhn bn giao dch


C hai dng: 20.7.1 Cp nht Subscriber lp tc(Immediate_Updating Subscriber) Trong trng hp n gin nht, c hai nhn bn snapshot v giao dch lm vic da trn m hnh nhn bn mt chiu ( d liu ch c nhn bn t Publisher n Subscriber). Tuy nhin MS SQL Server cung cp thm mt m hnh mi cho php Subscriber sa i d liu nhn bn, ty chn Immediate_Updating Subscriber s cung cp s nht qun giao dch ngm (latent transactional consistency) gia cc Subscriber (nhng sa i s xy ra lp tc gia Subscriber thc hin tc v cp nht v Publisher) m khng yu cu cp nht ch c lm ti Publisher site. Ty chn ny c thit lp vo lc publication c to v cho php Subscriber cp nht bn sao d liu cc b ca n v nhng thay i s c phn nh lp tc n Publisher bng cch s dng two-phase commit protocol (2PC). 2PC c qun l bi Microsoft Distributed Transaction Coordinator (MS DTC). Nu cp nht c th c thc hin bng 2PC th Publisher s ph bin nhng thay i n tt c cc
204

Chng 20. KIN TRC NHN BN (REPLICATION)

Subscriber khc theo lch lm vic ca distribution agent (hay l theo ln lm ti snapshot k tip). Bi v Subscriber gc cp nht nhng thay i d liu ri, nn user c th tip tc lm vic vi nhng d liu v m bo nhng thay i s c cp nht ti Publisher. M hnh ny m bo tnh ton vn giao dch. Vi m hnh ny, tnh c lp site s gim, nhng vn cao hn khi tt c cc Subscriber cp nht lp tc. Tu chn Immediate-updating Subscribers c h tr s dng nhng cng c : Triggers: Triggers ti Subcriber theo di cc transaction v bo v cho cc publication bng cch s dng nhng stored procedure gi t xa (remote stored procedure call) trong 2- phase commit protocol (2PC) m c iu khin bi MS DTC . Trigger s thc hin cc cng vic: Trch gi tr t nhng bng insert hay delete Gi lnh BEGIN DISTRIBUTED TRAN{SACTION} Thc thi mt remote procedure gi stored procedure thch hp ti Publisher, thng qua nhng gi tr t nhng bng insert hay delete. iu khin cp nht gi tr timestamp & indentity mi ti Subcriber Nu gi nhng stored procedure t xa thnh cng, th commit transaction phn nh chnh xc cng nhng thay i ti c hai Publisher v Subcriber. Sau , Publisher bo m rng nhng thay i c ph bin n tt c cc Subcriber khc. Ngc li nu khng c Subscriber s hy b (rollback) giao dch v tr v nhng li cho user. Triggers Stored procedues Microsoft Distributed Transaction Coordinator (MS DTC) Pht hin tranh chp Pht hin Loopback

Stored procedures: Stored procedure ti Publisher thc thi nhng giao dch khi giao dch khng tranh chp vi nhng thay i c lm ti Publisher. Nu mt tranh chp c pht hin, giao dch b hy b (roll back) c hai site. Mi article c ba hm insert, delete, update. Mi hm ti Publisher s thc hin cc cng vic sau:

205

Chng 20. KIN TRC NHN BN (REPLICATION)

Insert procedure : C gng insert hng (row). Sau kim tra gi tr @@ROWCOUNT/@@ERROR v tr v tn hiu thnh cng hay s c cho li gi trigger ca Subscriber. Delete procedure : C gng xa hng . Sau kim tra gi tr @@ROWCOUNT/@@ERROR v tr v tn hiu thnh cng hay s c cho li gi trigger ca Subscriber. Update procedure : c gng cp nht hng c cng gi tr kho v timestamp vi hng trong bng delete. Kim tra@@ROWCOUNT / @@ERROR. Nu thnh cng, tr v mt gi tr timestamp mi.

SQL Server t chc 2 bng (table) : delete v insert lu nhng d liu thay i c lm trn mt bng (table) m cha c commit. Thc t lnh update bao gm 1 hng trong bng insert v 1 hng trong bng delete. Ch : Mt giao dch m nh hng ln nhiu hng th giao dch ch c commit khi tt c cc hng u c cp nht ln c 2 site . MS DTC (Microsoft Distributed Transaction Coordinator): MS DTC qun l nhng tc v 2-phase commit gia mt Subcriber v Publisher trong mt lnh gi t xa ( BEGIN DISTRIBUTED TRANSACTION trong Transact-SQL ). Pht hin tranh chp: Nhng stored procedure ca Publisher s dng ct timestamp pht hin mt hng c thay i hay khng sau khi n c nhn bn n Subcriber. Khi Subcriber yu cu mt giao dch cp nht lp tc (immdediate-update transaction), n gi gi tr timestamp n Publisher vi tt c nhng ct khc trong hng. Khi stored procedure ca Publisher so snh gi tr ny vi gi tr timestamp hin ti ca hng. Nu gi tr ny ging nhau th hng khng c sa i sau khi n c nhn bn n Subcriber v v th giao dch ny c chp nhn. Timestamp l mt gi tr t ng tng v duy nht trong mt c s d liu. Pht hin loopback : Nu mt transaction c thc thi thnh cng ln mt Subcriber v Publisher, khng cn thit ph bin nhng thay i tr v cho Subcriber gc (Subscriber a nhng thay i n Publisher ). SQL Server c mt c ch gi l pht hin loopback (loopback detection ) x l tnh hung ny. Nhng thng tin s dng pht hin loopback oc lu thnh mt transaction bi c s transaction. Nhng bng m nh c trong nhng c s d liu khc nhau ti immediate updating Subcriber hay nhng bng m nh c trong nhng c s d liu khc nhau pha bn kia ca immediate-updating Subcriber khng nn c update trong cng 1 transaction.

206

Chng 20. KIN TRC NHN BN (REPLICATION)

20.7.2

Nhn bn nhng thc thi ca Stored procedure

SQL server khng nhng cho php bn nhn bn d liu trong bng m cn h tr bn nhn bn stored procedure mt trong hai cch. Nu bn c mt hay nhiu stored procedure nh l nhng article trong mt snapshot publication, SQL server sao chp ton b store procedure t Publisher n Subcriber. Nu bn gm mt hay nhiu stored procedure nh l article trong mt nhn bn giao dch, SQL Server s nhn bn thc thi ca stored procedure hn l nhng d liu thay i gy ra bi s thc thi nhng stored procedure . Cch lm ny c bit hu ch trong nhn bn m kt qu ca nhng stored procedure c th nh hng mt s lng ln d liu. Nhn bn nhng thay i nh thc thi mt lnh n lm tng hiu qu ng dng ca bn. C 2 loi: Procedure execution Serializable Procedure execution

Procedure execution: Nhn bn procedure execution n tt c Subcriber. iu ny xy ra bt chp nhng lnh n trong stored procedure c thnh cng hay khng. Bi v nhng thay i d liu c lm bi stored procedure c th xy ra trong nhiu giao dch, nn d liu ti Subcriber khng th bo m l s nht qun vi d liu ti Publisher. Serializable Procedure execution: Ch thc hin nhn bn procedure execution khi procedure c thc thi trong mt chui giao dch tun t. Cch ny m bo d liu ti Subscriber nht qun vi d liu ti Publisher.

20.8 Nhn bn kt hp (Merge replication)


20.8.1 Gii thiu

Nhn bn kt hp c tnh c lp site (site autonomy) cao nht. Publisher v Subscriber c th lm vic hon ton c lp v s kt ni vi nhau theo nhng khong thi gian hi t cc kt qu li. Nu ng gy ra bi cc site cng sa i trn cng mt phn t d liu th nhng ng ny s c gii quyt mt cch t ng. Khi ng xy ra, b gii quyt ng s chn site c u tin cao hn hay site sa i d liu trc. Cc xung t ny c th c pht hin v gii quyt theo cp hng hay ct ca bng d liu. Nhn bn kt hp nhn bit nhng thay i trong mt CSDL ngun v ng b nhng gi tr gia Publisher v Subscriber. C hai Publisher v Subscriber u c th cp nht d liu. Trong nhn bn kt hp, Publisher l server to publication. Mc d Publisher to publication nhng n khng t ng thng 1 tranh chp vi
207

Chng 20. KIN TRC NHN BN (REPLICATION)

1 Subscriber. "Ngi thng cuc" c xc nh bi tiu chun do bn thit lp v nhng thay i d liu ti CSDL ch s c ph bin n CSDL ngun. 20.8.2 Tc nhn (agent)

Nhn bn kt hp c thc hin bi snapshot agent v merge agent. Snapshot agent chun b nhng snapshot file cha lc v d liu ca nhng table phn b, lu nhng file ny vo snapshot folder trn Distributor v ghi li nhng cng vic ng b trong publication. Merge agent thc hin nhng cng vic khi to snapshot c t chc trong bng (table) ca publication n Subscriber. N cng kt hp nhng d liu thay i xy ra ti Publisher sau khi initial snapshot c to v gii quyt tranh chp theo nhng lut m bn t ra hay s dng b gii quyt tranh chp (conflict resolver). Snapshot agent: Tng t nh Snapshot agent ca nhn bn transaction. Merge agent: Khi mt hng c cp nht trong mt mu (article) mt trigger to ct generation cho hng v gn n bng 0. Khi merge agent c thc thi n s thu thp tt c nhng hng c generation bng 0 thnh mt hay nhiu nhm v gn cho generation mt gi tr ln hn tt c nhng generation trc . Merge agent ti mi site s theo di generation cao nht m n gi n cc site khc v cc generation cao nht m cc site khc gi n n. Nhng generation ny c lu trong hng (row) c th khc nhau gia cc site bi v generation ti mt site phn nh th t nhng thay i c x l ti site . Vo lc ng b, merge agent gi tt c nhng d liu thay i n site khc. Ti CSDL ngun, nhng gi tr n c kt hp vi nhng gi tr tn ti. Merge agent c lng c hai gi tr d liu n v hin c v bt c tranh chp no gia hai gi tr c v mi cng c gii quyt mt cch t ng da theo u tin hay user thay i d liu trc hay kt hp gia hai cch trn (dng vi nhm site c u tin tng ng nhau). Bn cng c th thc thi nhng chin lc gii quyt tranh chp thng qua COM hay b gii quyt stored procedure (stored procedure resolver). Nhng d liu thay i c nhn bn n nhng site khc ch khi mt ng b xy ra v vic ng b ny c th mt vi pht, vi ngy hay thm ch vi tun. Nhn bn kt hp c tnh c lp site rt cao. Tt c site du c th thc hin update, delete, insert trn d liu phn b trn site ca n v c lp vi nhng thay i c lm trn nhng site khc. Tuy nhin nhn bn kt hp khng m bo tnh ton vn giao dch. Thay v vy n y mnh s hi t d liu. Tt c nhng thay i c lm ti tt c cc site s hi t v cng mt gi tr, mc d gi tr khng m bo l ging nhau nh l tt c nhng thay i c p dng ln mt site. V vy kiu ny khng thch hp cho nhng ng dng yu cu ton vn giao dch.
208

Chng 20. KIN TRC NHN BN (REPLICATION)

Merger agent l mt cng c ca SQL Server Agent v c th c qun l trc tip bng cch s dng SQL Server Enterprise Manager. Snapshot agent thc thi trn Distribution. Merge agent thc thi trn Distribution khi dng push subsciption hay thc thi trn Subsciber khi dng pull subsciption. 20.8.3 Gii quyt tranh chp trong nhn bn kt hp

MA pht hin tranh chp thng qua mt ct h thng gi l lineage trong bng MSmerge-contents, i din cho qu trnh thay i trong mt hng. Agent cp nht ct lineage trong MS merge-contents mt cch t ng khi mt user cp nht hng. Mi ct cha mt mc (entry) cho mi site m cp nht ln hng. Mi entry kt hp gia ch s (id) ca site v version cui cng ca hng c to bi site . Khi MA kt hp nhng thay i, v n ng phi mt hng mi thay i, n s xem xt ct lineage ca hng trn mi site xc nh c tranh chp hay khng ? Khi tranh chp xy ra, agent khi ng mt b ho gii t ng. Ngi thng tranh chp c th da theo u tin hoc gii php chn ngi n trc nht hay phng php truyn thng s dng b gii quyt tranh chp COM hay store procedure. Tranh chp d liu trong table c th c nhn bit cp ct hoc cp hng. Chn la (option) mc nh l ct (column-tracked articles). Chn la ny cho php nhng thay i c lm trn tng ct ring bit nhau, ch nhng thay i trn cng mt ct b nh du nh l mt tranh chp. Tuy nhin trong mt vi ng dng, nhng lut ca ng dng ca bn c th i x ng thi nhng thay i n ton b hng nh l mt tranh chp. Trong trng hp ny, cp hng l mt chn la.

20.9 Gii quyt tranh chp


Khi tranh chp xy ra, mt b gii quyt tranh chp (conflict resolver) s xc nh tranh chp c gii quyt nh th no. Resolver p dng mt tp lut qui nh ln d liu tranh chp v chn tc v thch hp. Conflict resolver to ra nhng bng conflict-usertablename lu nhng thng tin v tranh chp. Bng ny c gi ti Publisher cho nhng ng dng s dng centralized conflict logging v ti Subcriber i vi nhng ng dng s dng decentralized conflict logging. Bng ny c cng cu trc vi bng gc, v conflict reslover sao chp phin bn (version) gn nht ca hng vo bng. Version thng cuc ca hng nh c trong user table tht s. Nhng ct trong bng h thng sysmergearticles gi nhng thng tin v nhng bng c lin quan n bng tranh chp, v tn ca nhng bng . Xo b nhng tranh chp s ln theo bng MSmerge-delete-conflicts. Vi mt vi tranh chp bn khng th ph bin nhng thay i t mt site n cc site khc. V d hai site cng insert mt hng c cng mt kho dn n xy ra tranh chp. Nu mi lnh insert u thnh cng, th nhng rng buc vi phm s khng c bit cho n khi qu trnh ng b site xy ra. Lc ny MS SQL Server t ng xo mt trong hai hng c cng kha chnh . Nhng thng tin li ny cng c lu trong bng tranh chp. Nhng vn khc nh l vi phm rng buc duy nht yu cu mt vi tc v user
209

Chng 20. KIN TRC NHN BN (REPLICATION)

khi phc s hi t. Vi phm tnh ton vn hay gp nht l insert mt hng vi mt kho ngoi trong khi site khc th ang xo hng vi kho chnh tng ng. SQL Server cng t xo nhng hng vi phm cc rng buc ny. SQL Server nhn ra s cn thit cho nhng ng dng c mt lc gii quyt tranh chp m xy ra trong sut qu trnh kt hp. Khi xy dng ng dng, bn c 3 thay i theo c ch gii quyt tranh chp: Gii quyt tranh chp da trn u tin l mc nh khi bn to ra ng dng. Gii quyt theo nhng store procedure m bn xy dng theo nhng lut hay theo nhng d liu xc nh ca bn. B gii quyt COM.

SQL server cho php bn xy dng mt b gii quyt tranh chp (conflict resolver). Tuy nhin, s dng b gii quyt tranh chp COM th phc tp hn l thc thi mt custom store procedure resolver. Bn bn s dng store procedure conflict resolver bt c khi no c th.

210

TI LIU THAM KHO

TI LIU THAM KHO


1. Design Team: H.O. Mumbai, Implementing RDBMS Concepts with SQL Server 2000, 2002. 2. Tin ch Book Online ca SQL Server 2000. 3. Elmasri & Navathe: Fundamentals of Database Systems, International Edition. 4. Design Team: H.O. Mumbai, Database Design with MS Access 2000, 2002. 5. Date, C.J., and Darwen, H.: A Guide to the SQL Standard, 3rd ed., AddisonWesley.

211

You might also like