Professional Documents
Culture Documents
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
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
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
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
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
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
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
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
20.9
Easy Installation
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
Operating System
Enterprise Standard Personal Developer Desktop Edition Edition Edition Edition Engine
SQL Server CE
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
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
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
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
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
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
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.
14
1.3
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
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
-
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)
Server
Client Software SQL Server Database Software
16
1.5
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 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
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
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
2.2
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
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
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
(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
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.
2.4
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
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
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
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
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
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
3.1
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)
27
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
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
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
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
3.4
30
31
32
33
2. Bng Category_Master
3. Bng Class_Master
4. Bng City_Master
5. Bng Day_Master
6. Bng Meal
7. Bng Service
35
8. Bng Status_Master
9. Bng Airline_Service
36
37
38
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
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
4.1.3 V d v Batch:
Use Pubs Select * from authors Update authors set phone= '890 451-7366 where au_lname= 'White' GO
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
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
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
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
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
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),
46
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)
47
48
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
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
5.2
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
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
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.
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
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
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: -
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.
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
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
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
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
58
6.1
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
-
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
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'
60
6.3
-
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
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
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.
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
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
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
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
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
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
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
67
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
7.1
7.1.1 Transactions L nhm cc yu cu c thc hin nh mt khi (unit). C 3 loi transactions: Implicit Explicit Auto-commit
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.
70
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
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:
Transaction trn l Autocommit transaction, v khng c BEGIN TRANSACTION. Autocommit transaction s t ng Commit nu khng xy ra li,
72
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
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
75
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)
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:
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
8.2
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
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.
8.3
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.
78
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
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.
79
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.
V d
SELECT KHACHHANG.TenKH, DONHANG.TenSP FROM KHACHHANG RIGHT OUTER JOIN DONHANG ON KHACHHANG.MaKH=DONHANG.MaKH
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
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
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
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
Row information
V d:
SELECT Stor_Id, Payterms, SUM(Qty) AS Total_Quantity FROM Sales GROUP BY Stor_id, Payterms WITH ROLLUP
Kt qu:
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
86
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.
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.
87
88
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
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: -
90
10.1.3
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
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:
V d:
91
10.2.2 C php:
UNIQUE Constraint
V d:
CREATE TABLE passenger_copy ( [PP no] VARCHAR(20) UNIQUE)
10.2.3 C php:
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
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
V d:
CREATE TABLE Reservation (.., class_code char(3) CHECK(EX, FC, E), ..)
10.2.7
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
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
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
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
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:
V d:
CREATE NONCLUSTERED (ord_num) INDEX NCLINDX_ordnum ON sales
10.3.5
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
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
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)
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
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
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
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
100
Hnh 11.1
101
11.1.2
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
102
11.1.3
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
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
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
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
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
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
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
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
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
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.
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
S dng Indexes
Hnh 11.17
112
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
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
115
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
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
12.1.5 -
117
12.1.6
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.
118
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
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:
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
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
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
122
12.1.8
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
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
V d:
DROP VIEW Try
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
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:
OPEN <Cursor_name>
Truy cp n cc bn ghi:
FETCH <Cursor_name>
ng Cursor:
CLOSE <Cursor_name>
12.2.4
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
12.2.5
V d
126
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.
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(*)
127
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
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
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
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
Hnh 13.3
13.3 Con tr
13.3.1 Khai bo con tr (Cursor)
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
Kt qu:
Hnh 13.5
132
13.3.5
13.3.7 Kt qu:
Hnh 13.8
133
13.3.8
Kt qu:
13.4
134
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
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.
136
137
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
Extended
Distributed Query
Replication
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
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
C php:
EXEC[UTE] procedure_name
V d:
14.3.2.4
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
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
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
C php:
EXEC[UTE] procedure_name WITH RECOMPILE
14.3.2.6
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
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
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
143
(1 row(s) affected) (1 row(s) affected) Msg 50000, Level 1, State 50000 Counter has fallen below 3
144
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
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
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.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
5. 6.
148
Hnh 16.1. D liu trc khi thc hin Delete Trigger Sau khi thc hin trigger DELETE, ta c kt qu sau:
Mark
Trigger Fired
Inserted
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
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
D liu trong bng s khng b nh hng bi php ton cp nht nu n khng c trong bng Inserted v Deleted
DELETE
INSERT
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
Kt qu:
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
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 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
Hnh 16.6
156
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.
157
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
158
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
3. Sau , hy th thc hin thm mt bn ghi c journey_date < ngy hin ti ca h thng.
END
PRINT 'Ban khong duoc xoa cung luc 2 ban ghi' ROLLBACK TRAN
Hnh 17.1
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
Kt qu:
17.3.2
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
Hnh 17.3
162
Hnh 17.4
Kt qu:
163
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. 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
165
Hnh 17.6
Kt qu:
Hnh 17.7
167
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
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.
169
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).
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).
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
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
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
172
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
BC
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
174
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
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
18.5.2
.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
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.
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
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
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
180
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
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
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.
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
Khi phc filegroup_b backup to vo ngy th nm. p dng transaction log backup ca filegroup_b.
184
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 .
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
185
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
Hnh 19.4
186
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.
19.1.1.1
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
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
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
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
Hnh 19.12
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
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
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
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.
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
19.1.4
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
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.
Hnh 19.20
Hnh 19.21
194
195
20.1.1.1
- 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
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.
- 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
- 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
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
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.
Distribution Agent: -
199
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.
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.
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
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.
201
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.
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
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 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
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.
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
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
20.7.2
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.
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
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
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.
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
211