You are on page 1of 238
HQC VIEN QUAN SU KHOA CONG NGHE THONG TIN Tran Dang Cong GIAO TRINH QUAN TRI VA PHAT TRIEN UNG DUNG VO MICROSOFT SQL SERVER Nam 2006 MUC LUC MYC LYC M6 DAU PHAN I. QUAN TR SQL SERVER BAT DAUVOI SQL SERVER 6 TIM HIBU VB He QUAN TRY CSDL SOL SERVER 6 MO IIINH HOAT DONG CUA SQL SERVER TREN MANG MAY TIN. 8 CAC THANH PHAN CUA SOL SERVER. B CAC THANH PHAN CUA SOL SERVER. 2B CAI DAT SOL SERVER. Is QUAN TRI SERVER. 24 VSTANCE, 24 DIEU KIIEN CAC DICH YU CUA SOL SERVER. 4 QUAN TRY SERVER. 28 THIET LAP KET NOI DEN SERVER. a CAU HINH KET NOI MANG CUA SERVER. 39 QUAN TRI CAC CLIENT. 40 u 47 QUAN TRICO S6 DULI cAU TRUC CoS6 DU LIEW. a7 QUAN LY CoS6.DO LIEU. 52 BANG DU LIEU TABLE weussnintnnsininnnsinnininiiniininnnninnnnnnnnsnnse6® cic CHUAN ric oo THIET KE BANG DU LIEW. 02 140 BANG DU LIEU 1 KHOA INDEX osososssunininnniiinnninnnnninininniniiinnnnnnnnnnnnnninnneT THIET KE KHOA INDEX. 79 TAO KHOA INDEX. sr XGA INDEX. 33 KHUNG NHIN - VIEW. sososnnninisiinninnnnnnniniinnniniiinnnnnnnnnnnnnninnn KHAINIEM KHUNG NHN. a4 TAO KHUNG NHIN. a SU'DUNG VIEW. 86 THU TUCLUU TRU ssocosininnininiiinnninnnntniiniinnniniiinnnnnnnnnnnnnnnnne® KHAINIEM THO TUC LUU TRO VA HAM, 88 PHAN LOAI THU TUC LUU TRO. 89 TunlkT LAP THU TUC LU TRO: 0 SUA, XOA THU TUC. 97 TRIGGER 98 KHAI NIEM TRIGGER. 98 NHONG TRUONG HOP SU DUNG TRIGGER. 98 DAC DIEM CUA TRIGGER. 98 140 TRIGGER ‘SUA, XOA TRIGGER. 103 XUAT-—NHAP DU LIEU. 104 SERVER LIEN KET ~ LINKED SERVER. 106 SU DUNG BCP VA BULK INSERT NHAP DO LIEt W2 DETTACH VA ATTACH CO SO DULIBU. us IMPORT Vd EXPORT COS DU LIEU. ur EXPORT XUAT DOLIBU. RI SAO LUU, KHOI PHUC DU LIEU, 122 NHONG LY DO PHtdI S40 LUU Va KHOI PHUC DU LIEU. 2 CAC LOAT BACKUP. 22 CAC MO HiNH PHC HOI DU LI 123 SAO LUU CO SO DU LIBU- BACKUP DATABASE. 14 KHOI PHUC DO LIEU ~ RESTORE DATABASE. 125 ‘Cuvonc X. PHAN QUYEN, BAO MAT.. vs vs vs vs vs vs vs vs Ms sve 127 CHE BO BAO MAT- SECURITY MODE. 127 SERVER ROLE, DATABASE ROLE, 129 QUAN TRI NGUOT DUNG. 133 HAN BAN DU LIBU.ssssmnninninnnsininannnsinnnsnnnnnnnanninnnnenn 8S Gi61 THIEU VE NHAN BAN DO LIEU. 135 AU HINT PUBLISHER VA DISTRIBUTOR Mi 140 PUBLICATION. 143 740 PUSH SUBSCRIPTION. Mas 140 PULL SUBSCRIPTION. 17 THUC HIEN DONG BQ DU LIEU. 149 PHAN IL. CAULENH T-SQL. DINH NGHIA DU LIEU (DATA DEFINITION LAGUAGE - DDL). 150 THAO TAC VOI DU LIEU (DATA MANIPULATION LANGUAGE - DMI). 155 TRUY VAN DU LEU. 167 TAO BANG BANG LENH SELECT INTO. LENI COMPUTE BY. TOAN TU UNION, TRUY VAN DO'LIBU TO NUIEU BANG. TRUY VAN TONG HOP. TRUY VAN LONG NIAU UPDATE, DELETE, INSERT VOI LENH TRUY VAN LONG NHAU. LENII READTEXT — DOC TEXT, IMAGE. THAO TAC DU LIEU NGOAI. MOT‘S6 HHiM COBAN. TRANSACTION ~ PHIEN GIAO DICH. LOCKING - KHOA GRAND ~ GAN QUYEN. REVOKE - TUGC QUYEN. DENY~ 10 CHOI QUYEN. TRO GIEP. PHAN III. PHAT TRIEN UNG DUNG VOI SQL SERVER. GIGI THIEU. KET NOI VOI SQL SERVER BANG ADO, KET NOI VOT SOL SERVER BANG SOL-DMO. Vs 175 176 7 185 188 wt 192 12 195 201 205 208 213 213 24 215 215 215 237 MO’ DAU Khi nhu cau phat trién (mg dung va quan trj voi sé Ivgng ban ghi I6n, kich thude lén, nhiéu kiéu dé ligu phite tap (Gm thanh, hinh anb,...) thi vige dit ra voi cdc hang phan mém 1a phat trién cc hé quan tri co so dit ligu lon. Vige nhimg nha ap trinh phat trién img dung trén hé quan trj co sé dit ligu Ion ciing doi héi phat cé nhiing nam bat tich cye vé sy phat trién cla cde hé quan trj co sé dit ligu. Trong lich str dén nay, h€ quan tr] co dé dit ligu ta c6 thé diém nhanh gdm au: Foxpro, Access, MySQL, SQL Server, Oracle,... mbi hé quan tri co so di igu du ¢6 nhiing phién ban, phién ban sau phat trién tién b§ hon, dap img tt hon yéu cu thye t8 dt ra phién ban truéc. Trong gido trinh nay sé gidi thigu cho ban doc hé quan tri CSDL (co sé dit ligu) Microsoft SQL Server. SQL Server la h quan trj co sé dit ligu Ién do hang Microsoft phat trién, duge cai dat va chay trén hé digu hanh Windows, SQL Server to ra khd phé bién va thin thién véi ngudi ding théng qua giao dién 48 hoa trén Windows. SQL Server phat trign theo cde phién ban 6.0, 6.5, 7.0, 8.0 (phién ban 2000), 2003, 2005. Voi mye dich giip cho ban dgc, dc biét 1a sinh vign dai hoc chuyén nganh Céng nghé théng tin cé thé nim bat duge nhimg ky ning quan trj co sé dir ligu cing nhu ky thudt x4y dung tng dung tir céc ngOn ngu lap trinh (Visual Basic, Visaul Basic.net, ASP, ASP.net) trén hg quan tri CSDL SQL Server, gido trinh nay sé trinh bay mot SQL Server 2000. h dé hiéu, theo huéng phat trién img dung, hé quan tri CSDL Phan 1. QUAN TRI SQL SERVER BAT DAU VOI SQL SERVER Tim HIEU VE HE QUAN TRI CSDL SQL SERVER Gidéi thigu SQL Server. SQL Server la hé théng quan tri co sé dit ligu quan hé (Relational DataBase Management System- RDBMS) str dung cac lénh gido chuyén Transaction-SQL dé trao déi dit ligu gitta Client Computer va Server Computer. SQL Server c6 mét s6 dic tinh sau: * Cho phép quan tri m6t hé CSDL Idn (lén dén vai tega byte), c6 the d6 xt ly di liu nhanh dap img yéu cau vé théi gian. © Cho phép nhiéu ngudi cing khai thac trong m6t thoi diém ddi voi mot CSDL va toan bd quan tri CSDL (lén dén vai chyc ngan user). © Co hé théng phan quyén bao mat tuong thich véi hé thong bao mat ctia cong ngh¢ NT (Network Technology), tich hyp véi hg théng bio mft cua Windows NT hoi str dung hé théng bao vé dc lap cia SQL Server. © H6 trg trong viée trién khai CSDL phan tin va phat trién img dung trén Internet © Cho phép lp trinh két néi véi nhigu ngén ngit lap trinh khdc ding xay dung cae img dung dic thi (Visual Basic, C, C++, ASP, ASP.NET, XML....). 14 SQL, Oracle © Str dung cau lénh truy vin dir ligu Transaction-SQL (Ace: 1a PL/SQL). Cée An ban cia SQL Server. SQL Server e6 cdc dn ban chinh sau: Enterpise Manager: La 4n ban day du ctia SQL Server c6 thé chay trén 32CPU va 64GB RAM. Cé céc dich vu phan tich dit ligu Analysis Servic © Standard: Giéng nhu Enterprise nhung bj han ché mét sé tinh nang cao cap, cé thé chay trén 2CPU, 4GB RAM. «Personal: Phién ban ny chit yéu dé chay trén PC, nén cé thé chay trén cde h¢ diéu hanh Windows 9x, Windows XP, Windows 2000, Windows 2003... Cée phién bin nay duge cai dat phu théc vao b9 cai dt ma ban chon hod Developer: La phién ban tuong ty nhu Enterprise nhung bi gidi han béi user két néi dén. Desktop Engine: La phién ban mét engine chi chay trén desktop va khong cé giao dign nguéi ding (GUD, kich thuéc CSDL giéi han bi 2GB. Win CE: Sit dung cho cdc img dyng chay trén Windows CE. Trial: Phién ban ding thir, bj giéi han bei thai gian. SQL Client: La phién ban dinh cho may khach, khi thye hién khai thac sé thye hién két néi dén phién ban SQL Server, phién ban nay cung cap giao dign GUI khai thac cho ngudi sit dung. SQL Connectivity only: La phién ban str dung chi cho cdc tmg dung dé két néi dén SQL Server, phién ban nay khong cung c4p céng cy GUI cho ngudi ding khai thic SQL Server. Iya chon khai cai dat (vi dy phién ban Enterprise, Standard, Personal,... ban phai chon theo 6 cai dat, phién ban SQL Client, Connectivity,... do ban chon trong cdc h6p thoai trong qua trinh cai dat), M6t sé tinh ning cua Enterprise manager. Dé cai dat HG try mé hinh Client/Server. Thich hop trén cdc hé digu hanh Windows. Hoat d6ng voi nhieu giao thite truyén thong, HG trg dich vy Data Warehousing. Thich hop véi chun ANSV/ISO SQL-92. HG trg nhan ban dit ligu. Cung cp dich vy tim kiém Full-Text, Sach trg giup- Book Online. MO HINH HOAT DONG CUA SQL SERVER TREN MANG MAY TINH. Mé hinh chung SQL Server trén mang. SQL Server li hé quan tri CSDL hoat dng trén mang, cé thé thyc hign trao ddi dit ligu theo nhigu m6 hinh mang khac nhau, nhiéu giao thie va phuong thie truyén tin khac nhau, Client computer Gient computer if SGlSene )* sient azplication | SOL Server ieee appl Cation Trong so do trén thé hién ba kiéu két néi img dung dén SQL Server: © Két ndi trén Desktop: Cé thé trén cing may tinh véi SQL Server hode két néi qua mang ndi bd. © Két néi qua mang dién rong: Thong qua dudng truyén mang xa két néi dén SQL Server. * Két néi qua mang Internet: Cac img dung két néi thong qua may cho Internet, dich vy IS thye hign img dyng trén Internet (ASP, JSP, ASP.net,....)) M6 hinh Desktop. Néu xét trén mt may Desktop so dé két ndi trao ddi dit ligu duge thé hién nhu sau: Desktop computer ar font sores leaton || soelesticn SCL Server we S&S & Databases Trén m6t Desktop 6 thé cO nhiéu img dung, méi tng dung co thé thyc hign thao tac v6i nhigu CSDL. Mé hinh Client/Server. Néu xét theo mé hinh client/server, img dung trao déi véi SQL Server theo so dO sau: 9 Client computer OLE DB ‘DEC. DaLitiary ied SOL pplication aptication | | appieasen | [sonication L T L T saLsewer | [ sausener | [ SALSave | [soisewer [OLE DE rrevidey] [ODAC chive | | OBLErey ct | | OB Lixaw dl : I I I T Cent NetLibrary Netwee SUL Server trén nhfn thiy SQL Server cho phép cdc img dyng két néi theo au: OLE DB, ODBC, DB-Library, Embedded SQL, day li cde hit ich cho nhimg nha phat trién ing dung. Néu xem xét cy thé hon ta c6 thé xem so dé sau: GLE DB ‘DEC DB-Lbras) SE | cceiastion sepicaton * | aprlesion SE i T i i LED Fro SOL Sever SOL Sever | [terse Serva epee vet] | OBLivaw OL | | L T i | [Eietnanea Fines] Chent muitetecs) Chant TCPAP || Rectan Neto ockats Neti bay} vel Nebel TcPAP Heverk Network Neto [Serer Nana Pipe [ever Mutiprisca) Secs TEPAP |! Teele Neetibray? [sockets NetLbrey| i L H i Open Data Services i T f SOL Sarat Trong so dé trén cho thay, SQL Server cé thé thy hign trao déi dé ligu voi cdc tmg dungt heo nhiéu giao thyc truyén tin khac nhau (TCP/IP, NetBeUI, Names Pipes,...), cc img dung 6 thé str dung nhiéu phuong thite két ndi khac nhau (OLE DB, ODBC, DB-Library) 1 M6 hinh két ndi tng dung trén mang Internet. Néu xét riéng cdc img dugn két ndi voi SQL Server trén mang Internet, cdc may chi SQL Server sé duge quan ly théng qua cae hg théng may chi mang, hé digu hinh mang, cdc img dung (COM+, ASP, IIS) sé thong qua may cha mang két néi dén SQL Server, mé hinh nay cé thé 4p dung cho cdc mang ngi b6, dign rong, mg dung duge khai théc trén trinh duyét Intemet Browser. Xem xét m6 hinh duéi day: Business Serves Tie (bata Sernees Tt GL Saver 2000 S01 Suver 2000 SOL garvar 2000 CAC THANH PHAN CUA SQL SERVER. _SQL Server duge edu thanh béi nhiéu thinh phin khée nhau, cée thinh phin c6 méi quan hé trong mt hé théng, phéi hop véi nhau dé tao thanh mét gidi phép hoan chinh, nang cao higu qua quan tri, phan tich, luu trit di ligu, Hox ADO /OUE OB /HTTP / CODE vm Teamsact-5Qt (natn Services Togiish Query a Lol] {f= Microsoft SQL Server Overview Loos! Osinbase Local Databave Relational DataBase Engine. Day li mét engine c6 kha nang chita dit ligu duéi nhiéu quy mé khae nhau, theo dang bang, hé trg nhiéu phuong thie két ni ADO, OLE DB, ODBC. Replication. La c6ng cu ding nhan ban dit ligu, ban c6 thé tao mét Server khac véi b6 dit ligu gidng b6 dé ligu trén Server chinh. Céng cu tao co ché tu déng b6 dit ligu gitta Server chinh va Server nhan bin. Myc dich cita viéc tgo Server nhin ban li gidm tdi 13 cho Server chinh, nang cao higu qua phye vy véi sé lugng ngudi, phién giao dich lon, Data Transformation Service — DTS. La céng cy gitp ban chuyén dit ligu gitta cac Server quan trj CSDL khdc nhau, DTS cé thé chuyén dit ligu tir SQL Server sang Oracle, Access, DB,... truée khi chuyén dit ligu DTS dinh dang kiéu di ligu dé chuyén sang hé quan tri CSDL khac. Analysis service. La céng cu gitip khai théc phan tich dit ligu, hay khai pha dit phuong thite da chiéu. Tu mét tap dit ligu sin c6 ban co thé khai pha rdi tir d6 dua ra nhig nhgn dinh, phan tich, anh gié va dy dodn theo linh vyc nao 44, méi chiéu trong ngtt cdnh nay duge coi 1a mt tigu chi xem xét cua dit ligu. English query. Day 1a cong cy tra ctu dit ligu bang tiéng anh, ca phap cé thé sir dung theo van pham tiéng anh théng thudng. SQL Server tools. La b@ céng cy cung cdp giao dign cho ngudi quan tri nhw Enterprise amanger, Query Analyzer ,...SQL Server sau khi cai dt SQL Server group gdm nhimg thanh phan co ban trong group nhu sau: @ beets cnine chen tetworkutey Bh Contre 5012 Support in 11S GB trpet ard espe Dat Bi Pair SH query Analyzer 1B. server Netwerk: ueity Mét sé céng cy quan trong: Enterprise manager, Query Analyzer, Profiler... cdc cong cy sé duge gigi thigu khai thée sau. CAI DAT SQL SERVER. Chuan bj cai dat. Tuy theo mdi truéng cia may tinh eta ban ma thye hinh cai d%t phién ban nio, bang sau 1a tham sé. vi SQL Server 2000 phién bin Standard. Computer Intel® hoa tuong duong Pentium 166 MHz hoge cao hon Memory (RAM) ‘Enterprise Edition: Téi thiéu 64 MB, 128 MB hodc nhiéu hon. Standard Edition: T6i thiéu 64 MB. Personal Edition: Téi thiu 64 MB trén Windows 2000, t6i thiéu 32 MB trén cdc hé diéu hanh khic. ‘Developer Edition: T6i thiéu 64 MB. ‘Desktop Engine: Téi thiéu 64 MB trén Windows 2000, tdi thiéu 32 MB trén hé diéu hanh khdc. Hard disk SQL Server database components: Tir 95 dén 270 MB, thong thudng 250 MB. Analysis Services: T6i thiéu 50 MB, thong thuong130 MB. English Query: 80 MB Desktop Engine: 44 MB Monitor VGA hofc d9 phan dai cao hon. 800x600 hoc 46 phan dai cao hon. Thye hanh cai dit. - Sir dyng dia CD ROM cé bG cai dat SQL Server 2000 (tuy theo yéu cdu ciia ban Ia Standard, Personal hay Enterprise...) - Chay trinh Autorun.exe (thuéng ty chay khi dua dia vio méy tinh) & 2a sere a carennens QB wore seuchpsseree EQ casreaunecinm —— & eattensonee Q vrorv0 ct Trong min hinh trén ta c6 mét s6 Iya chon: SOL Server Components: Sé thyc hanh trong buée SOL Server 2000 Prerequisites: Ding c: nhig yéu cau duge cung cap cai dat néu hé théng trong may cai dat chua du, - Chon SQL Server Components. M Bf Boner: 20 Install Components g D renteoshany - Chon Install Database Server. a o*™ ~ Th eta land ove outa irae ane aaron Ladd SQL Saver at nod an etna hires cece - Chon Next. Ext the nae lhe comuderorhch vase ‘roa anawnwlancec Sol Setvelcl red an Stang valance SA Save wet ara retina cd nL © Benole Conpuer JO vital Gaver foie 0 co Néu cai dit SQL Server trén chinh may ban dang ngoi thi str dung Local Computer ‘Néu cai dit ding két ndi voi may khac thi str dung Remote Computer sau dé nhap tén may hoac chon vj tri may bang cach str dung Browse - Chon next. es O- Re | ieee © amaadeoine Hob Jct Oral - Chon tuy chon theo chi din (tao méi, thay déi cdi da c6, thém cdc chite ming khde,...). - Trong truéng hgp chon tao moi (Iya chon thir nhat) sau d6 dn Next. x Ereeryaurrama below ie nctnecestan te are 2 company Neve (EE nary - Nhép tén cua ban, tén co quan, sau dn Next, Yes. LL x Yauoan seat eco he ibang pee of estes 8 © Chenoa ony © Caprecty Oly Tiger loo raat Met Tope sot optan fou nario satus 3 sever ith ‘Srwissahon captor ep tack Coeal 19 Trong ctra s6 hién lén 3 Iya chon: 1. Cai dat cde céng cu truy van: Sir dung cho céc may khach khong luu tri dit ligu nhung c6 chtre nang truy van dit ligu dén SQL Server ¢6 CSDL 2. Cai dit Server va cdc cng cy truy van: Cai dit SQL Server 6 dit ligu va cdc cong cy cla may khac truy van dit ligu 3. Cai dat két ndi: Ding cho cdc may chi sir dung két néi dén Server, thudng ding cai dat cho cdc may str dung cdc img dung két néi dén server - Chon lya chon 2, sau an Next i + ‘ick the ype ol Setup you see. then cick Mex Installed wth ho most commen optor Reearnarcs er masts Irae wth mum requted estona, Gator ‘Youmay choses the coer you wn oirtall Aaconenarded fx = stvanced utes, -Dotinaton Fede FrogarF les Bio CAProgian FissMerorok S21 Sener Date Fes a CAProganFleviMerosor Sal Serve Fen Space on pon les = ‘SI7E8K Spsce on system die: reek «= Sa51 EE Space en deaf dve: Suezk &BIZERK Help Cancel Dung cdc Iya chon dé chon kiéu cai dat: + Typical: Cai dat nhimg chite nang co ban duge hé théng dinh sin (chite nang théng thuéng). + Minimum: Cai dt nhimg chite nang t6i thiéu cua hé théng, + Custom: Lya chon nhimg chite nang can cai dat theo yéu cau cla ngudi ding. 20 Trong cach Iya chon Custom ta cn thém bude chon ede chite nang nhw sau: Saket cr ola he compares ors env Repieaicn Suspor fa FullText Search Reqied Ayala, Tina ae 132isek 3882782 are Space on poe ies Space on gstem irs: Space on dealer ave Lua chon cae chit ning - Annut Next dé tiép tu © Canowesthe stinger each sce Senne Sevce Seigs © pLsaie © Uesthobsod Sysom:zoaun! Bier te ep en vat en vr 21 Trong cia sé trén ta can nhap tén, mat khdu cia user duge ding ky truy nhap vung, thong thuong SQL Server cai dat duge thyc hign theo quyén Administrator cia méy tinh chi, khi dé ban Iya chon nut chon Use a Domain User account, - Anniit next dé ti tuc. Peacrncctonraic (Phane tha atthnticaon nde “Girton uthertaton Mode ‘Ad panned ortho ca ogre SFE pacod afin passed rs tart Pass na eecrnene) Trong cita sé trén cho phép ta sir dung 2 Ia chon: + Lya chon thir nhdt: Nguoi dimg sit dung hé théng bio mat cia Windows (hé digu hanh cita may chit cai ding Iya chon nay), — thong thudng khi cd + Lua chon thi hai: Nguoi ding sit dyng hé théng bao mat cia Windows va cia hé quan tri CSDL SQL Server. Trong cc trudng hgp trén déu 6 thé sir dung tén va mat khau duge cung cAp theo ving (domain) cua hé diéu hanh. Néu str dung Iya chon thir 2 ta sir dung tén va mat khau cia ngudi quan tr] ving (Administrator). DOi v6i SQL Server ta cé thé thay tén Administrator bang tén sa (viét tt cla tir System Administrator). Van dé thy hign chon ché d9 bao mat ndo sé duge ban trong nhimg bai sau. 22 - Annext dé tip tue. Cr a SOL Seve aD scpts mo CReLserna Mate FEE] Pau Fach dia acne Mac Set Eg) Mase brew ticens eyelet hy detest cansng owen Shes af pce exiao | ep Trong cia sé trén ta cé 2 Iya chon: + Per Seat for: Lata chon cho phép xdc dinh sé thiét bj (khai nigm sé duge gidi thiéu sau) trén méi vi tri khai thac hé théng theo ban quyén duge phép cia Microsoft. + Processor License for: Xac dinh s6 Processor cho phép sit dung theo ban quyén duge cung cap bei Microsoft. Ngoai viéc ding ky ban quyén tai thai diém nay, ta c6 thé dang ky ban quyén trong cong cy diéu khién cia Control Panel. ee ETI Peed tatpea tn a2 Zz mM enced thew) tive Spe Pee QUAN TRI SERVER INSTANCE SQL Server hé tro nhiéu hoat dng trén mang, nhu cde m6 hinh da xem xét true ta c6 thé thiét lap nhiéu may tinh cai d§t SQL Server, cée may tinh cé thé lién két véi nhau, trao d6i dit ligu véi nhau. Tuy nhién mot may tinh cling ¢6 thé thiét lap nhiéu hé thng SQL Server khdc nhau, méi hé théng d&u cé mot tén quy dinh, mdi hé théng nhu vay goi Ki mot Instance. M4Gi Instance trén m6t may tinh duge coi nhu mét hé thong SQL Server d6c lap, tuong ty nhu cae hé thong SQL Server cai dat trén céc may tinh khée nhau. Seas ee Sever: [Pubishers ine Tanai SSERVERSOONGDO | uto-stan corvice when OS stars [Planning - ASERVERSDONGDO - MSSULSeneer DIEU KHIEN CAC DICH VU CUA SQL SERVER. SQL Server sau khi cai dt xong, khoi dgng mdy thong thudng sé duge thiét lp c6 biéu tugng 6 géc duéi, trai man hinh nhu sau: aes va tvong SQL Server 24 Biéu tugng may chi c6 véi may tinh cai dit phién ban SQL Server va la biéu tugng cua trinh quan ly dich vy Service Manager. See ‘Sta/Ooneene dutowtt conics whan 05 state Stopped. S\SEFIVERSDONGDO - MSSOLSee Gém cae dich vy co ban sau: + Distributed Transaction Coordinator - DTC. + Microsoft Search. + SQL Server. + SQL Server Agent. ac dich vy nay ta cé thé bat dau, tam dymg hoac két thie, méi dich vy déu cdc tmg dung, cng cy quan tri cia SQL Server. digu khi Dé thy hién diéu khién dich vy dau tién ta Lam nhu sau: Services -> Start/Continue (Pause, Stop) Dé dich vy khéi dng ty dng khi khéi dong Auto-start service when OS starts. igu hanh hay chon vo nit chon Bene a =I Elser SSC Relies severe Ene Sip Bites asics ben 05 sa puring WERVERDONGDO WESCLSerer 25 Dich vu MS SQLServer. Ding quan ly tat cd ede file gm ede CSDL ma SQL Server quan Iy, la thanh dit cA cdc Iénh cia Transact-SQL duge giti tir cdc trinh tmg dung client, ¢ ngudn tai nguyén Khi e6 nhiéu user cing truy nhp mot lie. Day la dich vy quan tri co ban, khi ngat dich vy nay hé théng sé ngung tit cd cde cong viée khai thae dir Dich vy SQLServerAgent. H6 trg cdc tinh nang cho phép lap théi bigu cdc hoat déng theo timg giai doan tren SQL Server, hoae thong bao cho nguéi quan ly hé théng vé nhimg sy cé cia hg théng, bao gm cdc thanh phan Jobs, Alerts, Operator. oo ue | [EEF] | vecnsa isis ES | | rayasa ae || Ges gee [eeu cece OL Seve Wh dows “ekg” athe ste | oe ial ea one aan Schad " | fsa saa sdb exbes Dich vy Microsoft Search. Cung cap dich vy tim kiém va tim kiém van ban véi cdc phép todn co ban sau: + Ky tur (chudi) duge so sinh vi mét chudi hing. + So sénh chudi nhé trong van ban hoge chuéi cé kich thuée Ién, vin ban. 26 arsiltin soLsever pM Dich vy MS DTC. La dich vu cho phép trong mét phién giao van cé thé str dung dir ligu duge phan phi trén nhiéu server khac nhau, thyc hién theo cdc bude co ban sau: + Goi céc thi tue uu trit trén cde server xa sir dung SQL Server + Ty dOng goi hoic tao cae phién giao van cyc b6 va cc giao van véi céc may chii tir xa + Tao bé dit ligu duge cp nhat hoac duge phan phdi béi cc server xa. Xem xét so dd hoat dong sau: Meote Po ‘womans femen eet fon sau sane Jee} sore 27 Nhu so dé trén khi client trigu goi m6t thi tue c6 sin dén server cuc b6, khi c6 yéu cau dit ligu trén server khdc, théng qua dich vay MS DTC server cuc b6 sé trigu goi cdc thi tye tir server tir xa, két qua 6 thé tao duge bé dit ligu duge tap trung tir nhiéu server khdc nhau. Client computer - Trargaaton ceeteraon lent aoticgin J QUAN TRI SERVER. Nhu da néu trén mdi Instance duge coi la mOt hé thong quan tri CSDL SQL Server va cé thé goi tit 1a Server. Server c6 chite nang quan trj toan bo hé thong cia SQL Server (dit ligu, bao m§t, nguéi ding, tée vu, cdc dich vy khdc,...) Cée img dung hoc cdc céng cu khai thac dit ligu (GUI) sé thyc hign khai thae dit ligu do Server quan ly khi cé két néi dén Server. Tuy nhién m6t van dé quan trong 1a Server dé phai sin sang phyc vu. 28 Thye hign quan trj Server la viée thye hign cdc céng vige sau: + Battdt/tam dimg dich vu cia SQL Server. Fstesh sensices, Bure Ston I Autota emis whan 08 sans [Planing - ASERVER - MSSOLServer + Go bo hode cai dZt Server (Instance). Cunety need pomane: TD shovendacs = Sethe: lire) {BP HET Frammcrh20 see sana * Pil rot ortce i tees ath FrontPage Sse em 00M re oer) Sees Ef Peat ct server natne Cert Ej Perel Sh Server Setup Suppo Hee Engh) Etrcorot veo terse enters Ret [rah Moen Vina 18 NET RedaatatatePatoge 3 see iene (i) Poel aud Sado NET Esti Actes 5 Engi so me + Thay déi, nang c4p phién ban. THIET LAP KET NOI DEN SERVER. Dé khai thac duge dit ligu cia hé thong SQL Server ta phai thyc hign két néi (connect) dén Server, viée két ndi c6 thé thye hign tir cae vj tri: Ung dung, cong cu Khai thac ctia SQL Server la SQL Client. Trong phan nay ta sé xem xét viée két néi tir SQL Client dén Server, 29 MGi Server khi cai dat da cé mét tén 1a tén cia Instance duge dat. Trén mét mang may tinh néu cé di quyén han ta hoan toan cé thé thye hign két néi dén Server noi trén. Tir m6t may SQL Client c6 thé thyc hién ding thi két ndi dén nhiéu Server khae nhau, day cing chinh la wu diém cua SQL Server. Néu ban cai dit phién bin SQL Server trén mdy tinh ban cing phai lam tidan b6 cdc bude két néi nhu SQL Client, phién ban SQL Server duge coi nhu gdm 2 phan: Hé théng quan tri, céng cy khai thac SQL Client. Di sir dung cdng cy nao dé khai thie d4 duge cai dit trén may tinh cia ban, quyén han khai thac, quan tri phy thudc vao user thye hién két ndi. Quan trj Server Group. Server Group Ia céng cy ding quan ly cdc két néi (sé thye hanh sau) tuong tu nhu khdi nigm thu mye trong hé diéu hanh, trong cde Server Group chita cae Server Group con hoie cdc két néi dén Server. Cac buée thye hign nhu sau: - Vio chite nang Enterprise manager nhu hinh duéi Sa BI] ef teas cone (BR) aerosore scx server -seateh + |B cent nerve ueiey “Bb contaue 33.991 sunortin tS "BB import ond Export ota ® Prter Foy rater _B. server neweskunty G sere manager - Di chuyén vio mite trong bing cach nhan vao dau + cia cay cac déi tugng. Ba Fie Acton View Tools Window Hob | tel A cAS ek Avo ee [ES console Rost (Edison = 8 merocoft sa servers 5 Gxt sene Gop 1 Gy shee (racer Hew SQL Seive egstoin ensme SOL Seive Soup, ‘Akout SOL Sere Eee Manage ‘nance lore > Lineup eon Hele - Chon New SQL Server group dé tao group méi emesis evel] Name: [DONGDO Levet © Joplevelgoup © Subgroup of Wuleeva Gen - Nhfip tén group -> Ok 31 Sia et eee By Fe taen ew Tee wren Hb [aie] +> Oa Xe ARie + ALOE = mtu sc seven ar 2G igeme cas 1 SERVER Circe bid Cf thao téc déi tén, x6a duge thyc hign bing cach nhdn phai chugt vao group can thao tae, Aout SOL Seat Ecispoe Mane, iw , en ncn oe He 32 ‘Thiét lap két néi dén Server (thiét lap Server). La bude thiét lap két ndi dén Server tir Client, Server khac, Cac két ndi duge thé hién bang tén cia Server két néi (hay con 1a tén cua Instance), chinh vi vay nén tén cdc két néi trén mét Client 1a duy nhat, khéng tring nhau trong toan b6 client. True khi thyc hién tao két néi ta phai chuan bi cdc tham sé sau: + Tén Server (Instance) muén két néi dén + User name va Password cla Server ta can két néi dén (tham sé nay do ngudi quan tr Server cp). Cach lam nhu sai - Vao Enterprise va chon Server group a nena +3 |G XW Boe # AGG TH [i costco [owaD0 _Oitens © Greet sau serare ~ne Toten) = Baa serenn Eh son erdne tee) - Nhdn nit phai chugt vio cira sé bén phai, chon New SQL Server Registration. Eee) mal +7 ( Om) THR @|* AGore = Gl maoste sc seve = Gooncco Goro = Gsaisene Gow 1 Bb SEWER (nos) Fema SL Sen Group bul SOL Sere Engase Hanan, Fetesh Erg Let. Ven ‘nang eons Ure up eons - Nhip tén Server. eee eee Select a SOL Sorvor SokeLerjpe honaro ol ow ono cere nthe Avail serve box, ‘Avabbi coven: aed conve: [fenverooxco’ Paice - Nhan Add -> Next 34 Select an Authentication Mode ‘Seles he aheneaton mace tha you use lo comme ts SDL Seve Correctusn: ge Wao seesaw ie iT a aps dd is ‘cThe SL Servet ign Yorn at wat sped ome bythe glam drier SOL Saves suthectisten - Chon ché d§ bao mat (théng thudng chon The Windows account information dé chon ché d6 bao mat cia Widnows, phan nay sé xem xét ky trong bai sau) > Next -> Chon Server Group. Completing the Register SQL Server Wizard The SOL Sere younevegictra showman nap tate coved miles tho asta Tt carne ce) (aly thal fe server etss andiheconmection rdoraians - Nhan Finish. Sever iegitration completed, Status To change setings for ey SOL server thai was not registered cuccesstll, select the serve end hen chck he Pioperies lion. Te slope servar uation, elk ta Slap buton (Nala: Servers akaary eagiterd wil remain registered. Ap temehing unvegitersd servers val ct be tegtered i Dose Khi man hinh xuat hign thong bao Registered successfully la viée thiét lap da thanh cong. - Nhan Close. Sau khi thiét lap xong két ndi xudt hign trén danh sdch cdc két néi. BB @ + aAGHmo | ERVERICONGDO GHndene NT) 6 a Ef SER (endows) Két néi nhu da thiét lap cé quyén han khai théc phy thudec vao user két néi, trong vi dy trén quyén han phy thuge vio user da truy nh§p vao Windows, tuy nhién trong nhimg bai sau sé gidi thigu cdch thitac tao user, sir dung user cla SQL Server dé thyte hign tgo két ndi va khai thac. Dé xéa hoae stra théng tin cho két néi chon Delete hoe Edit khi nhdn nut phai chugt vao tén két néi can thao tac. Fe ein Yon Tok Wain Hb a XrOe © + Ae wee SERERPNEO(Wrsa NT) Stans Xem va thay déi tham sé cho Server. Dé thay ddi tham sé cho Server, hay chon tén két néi -> nhan nit phai chudt -> chon Properties. tx | Osatae trae | Raeaton | Acie tec “FP enay | Pecenat | Secuty | Comers Gi SERvERIOONGOO rae SL Seve Pemaal Edin pests er acs Wow 51 250) iene ontea mm) Lemans ai Unidas) wor aie.» 5 rete 2am eet ester Pon Heserss sc. estes ULL Gere OIL CLAS is] 7 Avant sexe BB) Fata 01 Sere ot © none WSOC a Eee Tuy nhién cac tham sé trén cé thé ban chua xem xét, nén trong bai nay chi gidi thigu ma sé xem xét mt sé tham sé co ban trong nhu bai lién quan. Bat/tit/tam dirng/két néi/ngat két ndi Server. Ta co thé thye hién tam diéu khién dich vu MS SQL Server tir két néi. - Chon tén két nd, - Nhan nut phai chudt EG seen) Ecol Senn Remain Peer Ho CAU HINH KET NOI MANG CUA SERVER. Dé cic Client hoge cic img dung két ndi duge dén Server, ta phai de phuong thue két ndi phit hop voi két néi mang, Két néi mang ¢6 thé sit dung két ndi théng qua Proxy, thong qua mang Internet. no di nua thi truéc hét ta phai chon giao thire phi hyp Khi sit dung két v6i giao thire mang dang sir dyng. Thyc hign bing cach chon Server network utility General | Mayo vain SERVER | Enabled protocols: Enetiess | [HameaPires < Foros protocol encyption J Enable WirSack prey y P - Chon giao thte dura vao danh sdch enabled dé sir dung va dua vd danh sich Disabled dé khéng sir dung. - Chon Properties dé chon céng, tham sé cia giao thite. - Chon Enable WinSock proxy dé thyc hién két néi qua Proxy. 6i qua Internet khong = Chon Force protocol encryption ding Fire Wall voi SQL Server. QUAN TRI CAC CLIENT. Khi Server da sin sing cho két néi, vige tiép theo la xem xét dén cdc client két néi dén server. Trong phan nay ta sé xem xét cau hinh client ké Cée client két ni dén server déu thyc hign trén co so hé thong truyé mang may tinh, tuy nhién cdc (mg dung client két néi dén server 48 thy hign khai thac dit ligu trén server théng qua mt sé phuong thire két ndi sau: - OLE DB: Cé 2 kiéu Microsoft OLE DB Provider for SQL Server va Microsoft OLE DB Provider for ODBC. - ODBC: Két néi thong qua SQL Server Enterprise Manager va SQL Query Analyzer str dung SQL Server ODBC. - DB-Library: Sir dung Ignh SQL Server isql. C4u hinh Net-Library. Nhu da xem xét truée méi Instance khi cdu hinh xac dinh mét dia chi va sé higu céng riéng, nén viéc két ni thong qua Net-Library 1a két ndi thong qua dia chi va nhu vay két néi da xdcdinh duge dén Instance. Trén Server thong thudng duge cu hinh theo TCP/IP Sockets va Named Pipes Net-Libraries, trén client théng thuéng cdu hinh theo Thye hién cdu hinh ta sit dyng Client network utility. 1B) Moat aL Sener Sth "Bh Coreique S04 24 Suppert ls Ba Ciera Maneon WB tata ote @ Profier Dh centre _B. Scere tity By Serena - Chon Client network utility. 40 BEM ne ae eval |Aise | DBL Oto | Mawok Lisa | Dicabied probs Ebied potocls ty ore Naved Pipes petiesy | Matprotocal _cansi_| AIA) Poetic I Force pretecol enguton IF Enable shared mercy rotocal Cancel only Halo | - Chon giao thite va cdc tham sé lién quan tuong tmg voi server, co thé thye hign dinh tén Server sang tén mdi trén bang Alias. Cau hinh ODBC. ODBC ciia tir Open DataBase Connectivity, la cng cu két néi mé. ODBC duge Windows cing cap din khi cai dat, duge str dung lam két néi trung gian gitta img dung va céc hé quan tri CSDL (Dbase, Access, SQL Server, Oracle,..... Théng qua ODBC tng dyng chi can xac dinh tén cia nguon trong ODBC (goi la Data Source) va tai khoan khi truy nhap dé thye hién quyén ma khéng can quan tam dén co sé dit ligu dang nim 6 dau. Thong thudng khi cai dt hg quan rj CSDL mai thi Windows sé ty cap nhat vao danh sach céc Driver digu khién ODBC cia hé quan tri CSDL dé. Thye hign tao ODBC cho SQL Server nhu sau: - Chon ODBC trong Administrative tools (Control panel). 41 ou Oo BF > pada ae (Renee tersthare DB covnere @ peters 2 ewalten ie He sens (ptties | Camper ees pa dele mi gona Divocmis 3 sirens mice 1 tate Pan Use| Sin DSM| FEDEA Dive | Teng Con DBC Der hal lal napster: Mane Veron eid) “SL icrorok Faso VPP Diver eh Sonat ierosof ODE tx Trace 2578 1 Hicsovat Perce Diver ab | son icrovok Perso Teer (a>) 0.6 Microsok Tex Dive See) 00.6 icosol TeatTrebar Fo cv cna icrosot vieul Fier Daven cous Micro Yieul Foxe Trebor Goan eS son Monogersert & = @ peppery a tow NET Frama L1 af a Extoretore Adniistrator escin Fein Abe | Company IE Mewsat e700 Mitrof ITC Merk LO Miesat 10800 Mitra 0 Micro 0 Missat 6200 Micro 700 Miva < 200117790 Missa Wi i >» AD ODOC dives alos ODBC abled pogies lo gtinforvaipn om DBE dats sources Tobnsal remdtss we te dels sela sate, ca) ee) ee Néu chua c6 kiém tra cach cai dt SQL Server (théng thuéng Windows ty cap nhat). - Chon bang User DSN (Data Source Name) > Add. 42 Cees Select iver fer nlch ou mantto vet up ada source Nae vA) Hsovoh Pasha VFP Dave Pa Merosof ODBC fr Cuacl ierovoh Perads Diet] Marocah Pero e db Merosot Tes Ove" 9) Horak Tews ft 058) Masosot Veal Fer Dinet MerosoR Visual Faso Teober - Nhan Finish. Eien nies mscne: “This vicar vl you ciate an ODBC data ounce tha yu can ute ta ccomectta SOL Sever What nee do you ward to use oer othe dt sous? Hane: (RET Hew do you wane aetna the dab cute? Detsipber [Dascoucenne hich 80. Server ca you wate cont io? Servec [SERVER igi saw | a - Nhap tén DSN (day Ia tén sé duge sir dung cho tmg dung), théng tin mé ta, tén Server (Instance). - Nhan Next. © th NT ahi With SQLServer authentication using lagi |D and password cence bythe we Tocange the network bvaypusesto conmuncete with SUL Server. cllek Cent Canhguescn Che Configuration, ge Bennectio SOL Server to olan default sein forthe sdtibenel configuration options. (ono: lenleaten Eoswod [ne came | Trong cira sé c6 2 Iya chon: Str dung ché d6 bao mat ké thira cla Windows. NT hode ctia SQL Server (sé xem xét sau), truéc hét ban hay chon Iya chon ké thira cia Windows NT (lic nay quyén Khai thie i quyén ciia ngudi truy nh§p vao Windows). - Nhn Next, chon hép chon Change the default database to -> chon co sé dit ligu (vige tao co sé dit ligu sé xem xét bai sau, tai buée nay ban hay chon mot co so dit ligu vi dy c6 tén ki Pubs, day la co sé dit ligu vi dy do SQL Server ty thiét lip dé lam miu). ve cvcerrec ad I Use ANS) quoted ide, IF Use ANSI rik, paras ad narange iver SOL Sewer itthe prs - Nhdn Next -> Finish. 44 ey ‘Are ODBC cate source lb crete va the follwing eonlgaain (Mises SOL Seve ODEC Diver Vesin 03 81117 lox So.sce Nore: DONGDO (Data Sa.tce Derepor Data sauce name Iceiver SE8VERNDONGOD Ibsahace pune [Language [Deraul) iano Chasis stax Leg Lene Furang Duet: No Log Orv: Stabs: No lUcolnicgtod Scouiy. Yoo Use eganal Seino: No [Prepared Statement Option: Crop tempor pocedacs on Idtzeenect (Ute ove: Servet. No lUse ANS! Quoted erties: Yer lube ANS Mul Padiras and Waring Yes [baa Erewitin No ox | Cae pé kiém tra két néi cé thinh cong khdng ban nhdn Test Data Source sau do nhdn Ok dé két thac va thu dugc man hinh sau: eee eee User D8N | Sem GN | Fle D5H| Dine | Tiana] Cennecten Pockng| Abou | UserData Sauces Die Verooat Bare Diver PN ‘SOLServer Masa Ec Divs oe] NS Access Detabore — Merotall Aocers rer (‘nd ‘Viaul Fos-reDatabace Mito egal FosPio Dav Visual FOP Table Macon Vaal FonPia Diet the nosed dala provid User da ope ord blo 10 you, @ ‘n ODBC User deta source sos intanatonebat hom la cere a ‘oan on be teed cnthe cert ashi CR) Cae ev | a Trén danh sdch cdc Data Source cé ttn DONGDO vita duge tao, Data Source tgo ra sé duge sit dung trong img dung client. 45 C4u hinh OLE DB. OLE DB 1a phuong thire kha quen thude d4i voi ngudi lap tinh CSDL (lap trinh trén Desktop hoje trén Internet). OLE DB sir dung véi nhiéu hé quan tri CSDL khae nhau, méi hé quan tri cé ci phap riéng va chi dinh driver diéu khién cho n6é. Véi SQL Server théng thudng str dung 2 phuong thitc két néi str dung OLE. DB: - Microsoft OLE DB Provider for SQL Server (SQLOLEDB): Khéng sir dung ODBC, xéc dinh driver cho SQL Server. - Microsoft OLE DB Provider for ODBC: Str dung ODBC 4a tgo (trong phin trade). 46 QUAN TRI CO’ SO DU LIEU Trong chuong nay ta sé xem xét cau trie vat ly, tao, x6a, stta tham s6 ctia co so dit ligu. CAU TRUC CO’ SO’ DU LIEU. Chic han khi nghién ctru dén hé quan tri CSDL SQL Server ban da xem xét dén cdc hé quan trj CSDL nhu DBase hoe Access, véi h§ quan trj CSDL nhur trén méi co sé dit ligu khi str dung (thc hign mé CSDL) sé mé true tigp tir tap tin chtra CSDL, tap tin chita CSDL sé ¢6 mot t§p tin chinh (vi dy *.dbf hoge *.mdb) va tap tin phy nhung khi ta thao tac ta chi cin quan tm dén tp tin chinh. Nén trong cdc (mg dung théng thudng ta thudng ding cdc thao tic mé (open) dé mé tap tin chinh chia CSDL va déng (close) déng t4p tin chinh chia CSDL ma khéng can quan tam dén vige da két néi dén CSDL chua (khéng co phurong thie két ndi). SQL Server quan ly true tip cde CSDL, danh sch mdi Server sé gdm danh séch cdc tén CSDL, tén cdc CSDL 1a duy nat, khéng tring nhau. Méi CSDL SQL. Server sé quin ly cde cdu tric vat ly ctia né, Chinh tir cach thife quan ly nhu trén a vige quan trj co sé dit ligu cé m6t sé dc diém sau: + Dé Client khai théc CSDL truée hét phai thyc hig rj CSDL a6. + Chi thye hign khai thé véi cdc CSDL cé tn trong danh sich cée CSDL ma Server quan ly. két ndi dén Server quin + Khéng c6 cdc phuong thite mé CSDL tryc tigp tir tap tin nhu Dbase hode Access. + Khi da két néi dén Server, Client chi thyc hign duge quyén khai thac theo quy dinh da dinh sin trong CSDL (phan quyén trong CSDL). C&u trie co sé dit ligu. Co sé dit ligu trong SQL Server Iwu trit theo 2 phan: phan dit ligu (gém mot tap tin bat bude *.mdf va céc tp tin phy *.ndf) va phan nhat ky (*.1df). Nhu vay mét co sé dit ligu c6 it nhat 2 tap tin. CAu tric logic trong CSDL gém cac table, view va cdc object khac. Sau day 1a cau tric mot CSDL. 47 Database XYZ. Detal.ma ——Datadnd __ Lag ciia SQL Server. Co s6 dit ligu trong SQL Server chia thinh 2 loai: Co sé dit ligu hé théng (do SQL Server sinh ra khi cai dat) va c6 s6 dit ligu ngudsi ding (do ngudi ding tao ta). So dd quan tri co sé dir Server computer SDL Sever pore madd node) rnacie’ temps Co sé dit ligu hé thong gm: - Master: Luu trit cac théng tin login account, cau hinh hé thong, théng tin quan trj cée CSDL, 1a CSDL quan trong nén thudng duge sao lu dé bio dam an toan cho hé théng. Tempdb: Chita cac table tam thoi va cdc thu tue duge lwu trit tam thi. Céc table va thi tue néi trén duge Iwu tr trong CSDL nay phuc vu cho cac user. 48 - Model: Duge sir dung khi template duge sit dung cho cée CSDL duge tao trén mét hé thong. - Msdb: Str dung bai SQL Agent. Tap tin cla céc CSDL ndi trén nhu sau: Tp tin CSDL Tén tp tin vat ly Kich thuée ngam dinh master primary data Master.mdf 11.0 MB master log Mastlog.ldf 1.25 MB tempdb primary data Tempdb.mdf 8.0 MB tempdb log Templog.ldf 0.5 MB model primary data Model.mdf_ 0.75 MB model log Modellog.ldf 0.75 MB msdb primary data Msdbdata.mdf 12.0 MB msdb log Msdblog.ldf 2.25 MB C4u tric vat ly cia CSDL. Nhu céc cdu tric cée CSDL hé quan tri CSDL théng thuéng (Dbase, Access), SQL Server cing quan ly tap tin dit ligu cla CSDL 6 dang vat ly theo trang (page) va phan doan (extent). Page. SQL Server quin ly m@t page cé kich thuéc i 8KB, nhu vay IMB cé 128 page, trong mdi trang c6 96 byte chita thong tin clia trang. Co 8 kiéu page nhu sau: Ten Noi dung Data Chita tat ca cdc kiéu dit ligu logi tri text, ntext va image Index Cac khda Index. Text/Image Text, ntext, and image data. Global Allocation Map, Secondary Global Allocation Map Chita cac théng tin dinh vj cia cdc extent, Page Free Space Chita thong tin khodng tréng cia page. Index Allocation Map Chita cdc théng tin vé Extent da si dung cho Index va Page. Bulk Changed Map Chita théng théng tin ve cdc lgnh BACKUP LOG. Differential Changed Map Chita cdc théng tin Iinh BACKUP DATABASE. 49 Déi véi cdc tap tin nhit ky (*.ldf), cdc ban ghi dug ghi Igi lién tue, khong phan trang. Microsoft SQL Serves Data Page Dotan Daan Dalaran trong mét trang sé iu hu trit tir sau phan thong tin Header, va Iuru trét Hign tiép, mdi hang c6 kich thude téi da 1a 8060byte, Rigng d6i véi dir ligu kigu text, ntext, image day la kidu dit ligu phite tap va c6 kich thuée lon, SQL Server sé c6 chién luge quan ly khdc, phan tran riéng nhim tang higu qua truy van dit ligu. Dir ligu trong SQL Server duge lu trit trén dia va tgo chi myc Index theo cu tric dit ligu kiéu B-Tree Plus (cé thé tham khao thém trong nhimg ndi dung cdu tric dit ligu ndng cao). Extent, Extent la don vj ding chita cac table va index, mdi extent c6 8 page hay 64KB. SQL Server c6 2 kiéu extent: - Uniform: Chi ding luu trir cho mét déi tugng,. - Mixform: C6 thé ding luu trir 8 déi tugng. Cau trite Extent nhur sau: Mixed extent 50 File. Tép tin hu tri mot CSDL trong SQL Server c6 3 loai Primary data file: La file chinh liu tri dit ligu (*.mdf = Master Data File), mdi CSDL co m6t file primary, luu tri diém bat dau cua mOt CSDL va cdc diém két ndi dén céc file lu trit tiép theo (sencondary). Secondary data file: La tap tin luu trir dit ligu sau Primary data file, m6t CSDL c6 thé c6 nhiéu tp tin sencondary. Loai tap tin nay cho phép m6t CSDL cé thé phan tén dir ligu 6 nhiéu noi trén may tinh hoac trén mang. Log file: La logi tap tin Inu tri théng tin nhat ky cla CSDL. Gia sir tao m6t CSDL cé tén MyDB, théng thudng hé théng ngam dinh céc tap tin nhw sau: MyDB_primary cc SPioatam Filee\Microsalt SOL SetverSMSSOLWatatyD ate. rina data fe MyDB_secondaryl cc SPiogtan Fle \Microsolt SOL Server MSSOLWD ata\yD ate2.na Seconda date fle MyDB_cecondary2 ccSPiogtan Fils \Microsolt SOL Server MSSOLWata\yD ate3.na Secondary data fle MyDB_loal (\Progiam Flos\Microsaft SQL Setver\MSSOLWData\yLogt id Lege MyDB_log2 ccAPtogram Fies\Microrof SUL Server SSULWats\MyLogbld Leg fe 51 Céc tap tin lau trit dit ligu phan thanh timg trang, cdc trang danh sé id lién tiép theo timg file: Pinay Data pace || race cocoa | J ooo bape onagit Secondaty Data File: File 1D 02 pace |] pore || pa page, jo2 ama) fod cam: | oP ates] * *) Joe cizr SQL Server str dung cng cy file group dé gitip nguéi ding dé ding quan ly file, cdc file lu trir dit ligu cia m6t CSDL co thé nhom thanh timg nhom, gom 2 kigu nhém chinh: File group - Primary: La nhém bit bude cé, ding xe dinh cho file primary (*.mdf) va nhting file khde. - User-defined: Nhém do ngudi ding tao ta, ty dat tén dé dé quan ly. QUAN LY Co’SO DC LIEU. Tao co sé dit ligu. Theo ly thuyét co sé dit ligu, truée khi tao CSDL ta phai thye hién phan tich cc théng tin lign quan myc dich sit dung CSDL cho ai ton ctia minh: Tén CSDL, cac table, rang bugc,... tun theo cée chuan CSDL (phan nay sé ban ky trong bai sau) Trong cac thao tac v6i CSDL va déi tugng khac sé gdm 2 phan: Phin thao tac theo cong ey wizard va cau lénh T-SQL. 52 Tgo theo cong cy: - Vio Enterprise Manager -> Databases. Bibe sion Yew Tob Wrbw te > 88 X88 2 + SLO ne Samed (eres Ge Beccaniw en BW BU UB B&B & GB SQ. Saver Go rte model ome Nerve pubs tp DION ese NT 15a CONE| Oe Heron | Dp Reeteseon et seeuey 1 Gh sunoan sertes It Cites dot serves - Nhdn nat phai chudt/hoc menu Action > New Database... Aes fete Ego Lit ven > aangeloore» Lrowwleere ee - Nhap tén CSDL. mn ein e- o— acai - Xée dinh tén logic, tén vat ly, tén nhém cita tp tin va cdc tham s6 khdc. Pee Given als | imac | Dau [iene een Teale Fegan LIV Oa Degas hei Prien Dales Flops OB seemaiey tlg Fle goth Mosmurfie zon or a ee Brent TA] | | femtingonunn) | (te) cost fae - Xée dinh tén logic, vat ly, tham sé khac tp tin nhat ky. Gavel] Dosti: Torch tn | eTrressen ities {Fle Name een (I Dake Flepropeties 9 semi tle § Fle goth Mosmuriie sae hnraminse [| © trond ome © Birwem fF] | Bent teonhey [7 ——3 core | He Tao theo cau lénh. Su dung cu Ignh Create Database tao CSDL, céng cy thye hign Iénh: - Trong Enterprise Manager -> Databases -> Tools -> SQL Query Analyzer Ba Fie teten ew || Wi Hep @ 9 EIB x dea tenscmnmnsees + Fg Gegewior teen 2 Wve ausen 8 Osa com ce ten Dehaboe Hattoarer Pre Base Dsatoe eae Dabo SE) SAL Save Corastonmopec, ‘er Too opens. [EEONGOOTS NY CON GR perm CODD nT | 55 ~ Soan Ign trong cita sé leh: USE master Go CREATE DATABASE QLTV oN ( NAME = Sales_dat, FILENAME ‘c:\program files\microsoft sql server \mssql\data\qltv_dat.mdf', SIZE = 10, MAXSIZE = 50, PILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log', FILENAME =- ‘c:\program files\microsoft sql server \mssql\data\qltv_log.ldf", SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) Go - Nhan FS hoac nut thye hién. CREATE DATABASE cure HARE = setae dae, TORONTO NY WERT Deets me OO ae TATE Cong cu SQL Query Analyzer cho phép ban thye hign timg cau Iénh bing cach béi den vio doan Ignh can thye hign sau dé nhdn FS hoge nit thye hign. Khi tao CSDL méi thi an phai dmg 6 vi tri CSDL Master, khi muén thyc hign lgnh véi m6t CSDL cu thé da c6 nao dé ban phai chon vio CSDL dé va thye hign Ignh, 56 Trong doan Iénh trén Ignh User Master thyc hign chon CSDL Master bing cau lénh; lgnh Use xac dinh CSDL thyc hign. Lénh Go xée dinh edu Ignh két thie va bat dau edu lgnh Khée, edu lénh duge higu la dong Ign. Trong Iénh T-SQL mot s6 Ignh khée nhau vin 6 thé niim trén mét dong 1gnh nén trong m6t sé tinh hung kieh ban cau Iénh khong cn sir dung Ignh Go. Xéa co sé dit ligu. Xéa theo cong cu. - Chon vao CSDL. - Nhan nut phai chudt > Delete. - Chon Yes. Xéa theo cdu Inh. - Sit dung lénh Drop Database Drop Database QLTV Sita tham sé. Sita theo céng cu. - Chon CSDL. - Nhan nut phai chudt 57 - Chon Properties. Pa Genael| DaiaFee| Teeaxien Lop| Fopape {Orken | Pemedone| Pecans 7 Petit geese Ce Mpased daar T Beatony covey odet Gene see 1 arn eat F suoclse eerie tie punk Auoupdsestatice F Autos natis F Tomosce econ Tr Ussaitecicetiee Comsat Let [Damssiecenpsmmiyevest - Thay déi tham sé khi edn thi + Restrict access: Ngan truy nhap. + Read only: Dat thugc tinh chi dgc. Stta theo cau lénh. = Sit dung cau Ignh Alter Database, vi dy sau thye hign thém tap tin secondary vio CSDL. ALTER DATABASE QLTV ADD FILE ( NAME = QLTV_newfile, FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\newf .ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) Go 58 - Sita tham s6 dya vio thi tue hé théng sp_dboption: + Sita ddi thugc tinh read only: USE master EXEC sp_dboption 'gltv', ‘read only', 'TRUE' + Stra thuéc tinh autoshring USE master EXEC sp_dboption autoshring, TRUE, + Stra thudc tinh single user: USE master EXEC sp_dboption ‘qltv', single_user Moi cau Iénh lign quan ban cé thé tra ctru, tham khao trong Book Onlines. 59 BANG DU LIEU - TABLE CAC CHUAN TAC. Trong thiét ké co so dir ligu, vie tudn tha ngat ngéo nhimg chuan 1a viée hét ste quan trong, né gitip cho vige quan trj dit ligu cé higu qua, khic phye du thita, thudn Igi trong quan trj dot ligu I6n, higu qua véi dot ligu phite tap. G6m 3 chuan co ban: Chuan thir nhat. Chuan thir nhat xc dinh cau trac cia mét bang khong thé chita cdc trong lap lai. Ta 6 thé lay vi dy nhu sau gia sir muén luu tri théng tin mét quyén sach, mdi quyén sch 0 thé c6 mot hoge nhiéu tée gid tham gia bién sogn, néu khong tun theo chuan thir nhét nhu néu trén thi trong mét bang dit ligu sch c6 thé ob nhiéu truong dit ligu xc dinh thong tin tac gia. {1p | ‘Tén sch l NXB Tacgial | Tae gia2 Trong vi dy trén ban nhan thay théng tin Tac gia duge lap lai 2 lin, kha phuc bang cach tao ra mét bang lwu trit danh sch tac gia ca séch (sé ban trong chudn sau). Chuan thir hai. Chuan thit hai xée dinh trong cdc hang dit ligu, méi c6t déu phy thude vao c6t khéa chinh. Ta xem xét m6t truéng hop vi pham chuan thir hai nhu sau: Gia sir xét tinh hudng sinh vién mugn sach trong mét thu vién, vie muon sdch duge nhit ky theo bang nhu sau: Id_sach Id_Sinhvien | Ngay mugn Sire khde sinh vién Xem xét trong bang trén ta thay mdi hang phy thudc vao khéa id_sach va id_sinhvien, nhung thng tin Sire khoe sinh vién khéng phy thuge vao id_sach, nén théng tin nay can chuyén sang bang ve théng tin cia sinh vién, 60 Chuan thir ba. Chuan thét ba xéc dinh ban ghi tuan thi theo chudn thtt hai va khong c6 bit ky phan phy thude chuyén tiép ndo. Phin phy thude chuyén tip tn tai khi mot bang chita mét cOt dic trang. COt nay khong phai li khéa nhung vin xe dinh cdc e6t khae. Ta xem xét mt vi du vi pham chudn nhu sau Gia sir trong thu vign cé mot bang ligt ké sch tén trong kho, khi sinh vién mugn sdch sé Iugng sch ma sinh vién mugn sé ting, néu nhat ky mugn sdch duge thye hién theo bang sau: Id_sach | Id_Sinhvien Ngay mugn Sé long di mugn Bang trén ban thay moi id_sach ma sinh vién cé ma i mugn, théng tin nay 1a thong tin tich Iiy theo id_sach, id_sinhvien, ngay mugn. Theo bang trén ta thdy khéng vi pham chuan thir hai nhung vi pham chudn thir ba vi c6t $é sch 44 mugn a ¢6t phy thuge chuyén tiép, e6t nay can phai duge chuyén sang bing khdc li bang Sinh vién mugn séch: Id_sach Id_Sinhvien ‘S6 lugng di mugn Khi nao cn chuan tae. M6t co sé dit ligu can duge chuai - Dit ligu Ién, phan tan. - Khéng xe dinh 13 nhom dit ligu. - Dit ligu phite tap. - Buée dau tién khi xay dumg img dung. Khi nao khéng can chuan tac héa. M6t sé tinh huéng sé khéng can chuan tac héa, néu theo nh thiét ké theo chuan thi viée dua ra m6t mau tin truy van cé thé phai thye hién truy xuat tir nhiéu bang véi nhau, diéu nay cé nghia ta phai thye hign két hgp cdc bang voi nhau (tuy theo luat) nén thoi gian truy xuat cé thé rat Ion ma yéu cau thye té dat ra trong tinh 61 hudng nay 1 phai nhanb, thi truy xuat theo mt bing da 6 sin la ahanh hon, sau day 1a mot s6 trudng hop khéng cn chuan téc héa (ty theo tinh huéng): - Théng tin tinh ton, - Thong tin sy kign. - Sy phan hoach. THIET KE BANG DO LIEU. Table (bing dit ligu) 1a mt thanh phan co bin cla CSDL, m$t CSDL duge thiét ké tir m6t hodc nhiéu bang dit ligu, m6i bang dit ligu duge cu tric tir cde hing va c6t dit ligu, mdi hing ding mé 1a mét déi tuong, van dé, su kién,... cOt thé hién thude tinh cia cdc déi tugng, su kién,... cia hang. Dit ligu cing cOt c6 cing kiéu (data type). Ngoai cdc hang, c6t bang cdn c6 cde khéa, lién két, rang budc,... True khi bat tay vao thiét lap bang dit ligu truée hét ta phai xdc dinh xem bang sé xay dung nhu thé nao, dya trén m6t sé théng tin sau: - Kiéu dit ligu trong bang, - Céc cét, kidu dit ligu tong tmg (va d6 dai néu edn thiét), - COt ndo cho phép gid tri NULL (Ja gid tri ma phan dit ligu thuéc hang, c6t xée dinh kh6ng duge gan gid tri nao, vi vay nén 2 phan ter c6 cing gid trj NULL la khéng bing nhau). - Gia tri ngdm inh (la gid tri ma khi chua nh§p vao né nhfn gid tri nay). - Chi s6 Index, khéa chinh, kha ngoai Kiéu dit ligu. SQL Server gdm nhiing kiéu dit ligu sau: Binary: La kiéu dit ligu chita dang sé & hg hexa, gdm 3 kiéu dit ligu Binary, Varbinary, Image. Text: La kiéu ky ty, chia chit cdi, ky hiéu, s6, gdm nhimg kiéu dir ligu sau: - Char: Kiéu ky ty, khi xae dinh 46 dai thi d6 dai trong CSDL sé xéc dinh theo 49 dai dgt truée ma khéng theo 49 dai dir ligu thye c6, khéng str dung véi ky tur dang Unicode, 49 dai tdi da la 8000. - Nehar: Tuong ty nhu Char nhung sir dung voi ky ty Unicode, 46 dai t6i da 4000. 62 - Nvarchar: Tuong ty nhu NChar nhung kich thuéc trong CSDL sé la kich thuée thye dir ligu hign cd, kh6ng tinh theo kieh thude dat trude, kich thude ti da 144000. - Varchar: Tuong ty nhu Nvarchar nhung khong hé try Unicode. - Text: Kiéu van ban, chita cd ky ty xuéng dong, lwu tri theo dang van ban, cé kich thuée Ién, co thé lén dén vai Gb, co ché quan ly kiéu dit ligu theo dang con tré va cach thire chén va cp nhft sé khdc, kiéu dir ligu nay khéng hé tro cho Unicode. - Ntext: Tuong ty nhu Text nhung cé hé try Unicode. Data/Time: Kiéu dit ligu ngay, thoi gian, ngay va thoi gian, gdm 2 kiéu: - DateTime: Day dui ca ngay va thdi gian. - SmallDataTime: Chi ngay hodc théi gian. Numeric: Dit ligu kiéu sé, gdm cdc kiéu dit ligu sau: - Int, smallint, tinyint, bigint: Sé nguyén - Float, real, decimal, numeric: $6 thuc. Monetary: Tién t8: - Money, Smallmoney. Bit: Kiéu 6 0, 1. Sql_variant: LA kiéu dit ligu xéc djnh theo kiéu dit ligu khdc, mOt cOt dit ligu duge dinh nghia dit ligu kiéu nay c6 thé Inu trit nhidu dit ligu cé kiéu khdc nhau trong cimg m6t bang. Vi du co thé Iu tro nhiéu kiéu dir ligu int, binary, char, nhung khéng chia dit ligu kiéu text, ntext, image, timestamp, sql_variant. Timestamp: La kigu dit ligu c6 kich thuée 8 byte, luru trit dang s6 nhj phan do hé thong ty sinh ra, mdi gia tri timestamp trong CSDL 1a duy nhat. Table: La kiéu dit ligu de bigt lau trit 14 dyng chinh 1a uu trét tam th hop cdc hang (dang bang), myc dich sir hop c4c hang sau truy van. Text in row. Nhu xem xét truéc, dit ligu kiéu char, varchar c6 d@ dai t6i da 1 8000byte, di ligu kiéu text, ntext c6 2 kiéu luu tri: Iuu tre true tigp, luu trir quan ly theo kiéu con trd, 63 5i voi luu trit theo kiéu tryc tiép, kich thudc tdi da déi véi text 1a 8000, 46i v6i ntext 1a 4000 (kich thude 1 ky ty & ma Unicode 1a 2 byte, ma khong Unicode la 1 byte). - Luu tri, quan ly theo con tré kich thuée lén dén GB. Dé luu trét dit ligu theo kiéu con tro dau tién ta phai dat chtre ning Text in row vé trang thai On, thudc tinh nay hiéu (mg ca voi kiéu dit ligu image. Str dyng thi tue sp_tableoption dé thay déi thudc tinh, thuge tinh thay déi theo bang dit ligu. Gid sir bat chite ning text in row nhur sau: Sp_tableoption N'TacGia', 'text in row', 'ON' Tat chite nang text in row nhu sau: Sp_tableoption N'TacGia', 'text in row', 'OFF' Dé cAp nhat dir ligu khi thudc tinh duge bat, ta phai ding Ignh READTEXT, UPDATETEXT, WRITETEXT (sé ban k¥ céu Iénh nay sau). Auto number Dat cot dit ligu kiéu sé, tang ty dong khi m6t hang dug thém, c6t kiéu nay kh6ng sita dit ligu. Dat ligu kiéu nay tuong tmg véi vige khi thém hing dit ligu chen thém gid trj dang sé theo him NewID(). Rang bude dir ligu. Dé c6 mot CSDL khi luu tri dir Tigu c6 6 tin ey, 49 chinh xc cao, nhanh va thufn tign trong khai théc dit ligu thi toan ven dit ligu 1a van dé hét sire quan trong, Khi rang bude duge thiét lap, dit ligu khi nhap vio CSDL sé durge kiém sodt, 6 tin cy théng tin sé duge bao dam. Cé nhidu kigu rang bude dtt lig CSDL cé thé gdm mot hode nhié bude, ring bude cé thé trén mét bang, trén nhigu bang. Toan ven dit ligu chia thanh 4 loai: ¢ thé déu duge xac dinh theo § xde dinh duge thy thé tuong = Toan ven thu thé (Entry integrity): M@i th m6t khéa, khi biét khéa ta hoan toan cé img. Khéa nhu vay coi la khéa chinh. 64 - Toan ven theo mién (Domain integrity): La loai toan ven cé higu mg véi cae e6t dit ligu trong mt pham vi nao d6, vi dy kigu di ligu eting 14 mot dang cia toan ven mién, ring bude theo khéa check ciing la toan ven theo mign, - Toan ven dang tham chiéu (Referential integrity): Khi mt bang cé quan hé véi mét bang khdc theo m6t mdi quan hé, trong mdi quan hé dé sé co m6t khéa chinh (nhu phan toan ven thyc thé) va mét khéa ngoai, khéa ngoai sé li khéa tham chiéu cia khéa chinh, gid trj cua khéa ngo: thude tap cdc gid trj cia khéa chinh hoe gid tri NULL. Rang buge kiéu quan hé (Relationship) goi Ia toan ven kiéu tham chiéu. - Toan ven do ngudi ding djnh nghia (User-defined integrity): La toan ven do ngudi ding dinh nghia, quy dinh dit ligu nhap vio theo quy céch, gid tri duge kiém soat chat ché, toan ven kiéu nay cing cé thé xay dung trén co s6 cde toan ven truée, Entry integrity Reference integrity Data integrity User-defined integrity Domain integrity 65 Bén loai toan ven néi trén ta cé thé thong ké tuong tmg véi cdc khéa, quy tac, ring bude trong SQL Server nhur sau: Kiéu toan ven I Céng cy trong SQL Server Entry integrity Rang budc Primary key . Rang buge Unique t Identity Gid tri ngam dinh Default . Rang bude khoa ngoai Foreign Key . Rang buge Check . Thue tinh NOT NULL . Rang bude Forelgn Key . Rang buge Check Rules . Stored procedures . Triggers Domain integrity Referential integrity User-defined integrity ReNelpoenelene Cie khéa. Khéa chinh — Primary Key. La m6t hoac 16 hop nhiéu cét dit ligu xac dinh duy nhat trong m6t bang, gid rj khéa chinh luén khae NULI Vi dy: Bang danh sach tac gia viét sich. Trong vi dy trén bang dit ligu e6 khéa chinh 1a mét edt dit ligu id, khi Gt xde dinh 1a khéa chinh bén canh xudt hign biéu tugng chia khéa, thudc tinh Allow Nulls khéng duge danh dau. 66 Vi du: Bang dit ligu luu trét thong tin nhat ky mugn sdch Description aul ake Weniny Trong vi du trén bang dit ligu cé khéa chinh duge té hgp tir 3 c6t dit ligu id_sach, id_sinhvien, ngay_muon, ba ¢ét trén xéc dinh duy nhat mét sinh vién duge mugn mot loai sch trong mét ngay (gia str quy ché xdc dinh nhu vay), cdc cOt tham gia khéa chinh goi la candidate key. Khéa ngodi Theo chuan thiét ké CSDL, khi luu trir thong tin séch phai co m6t c6t chira théng tin nha xuat ban. M6t nha xuat ban cé thé xudt bin nhiéu quyén sach va mot quyén sach chi xudt ban 6 mét nha xudt ban. Nén trong thiét ké ta phai co: + Bang dif ligu luu tra danh séch cée nih xudt ban: Cé khéa chinh dai dign cho nha xuat ban. + Bang dit ligu hu trit séch: Cé chita thong tin nha xudt ban. + Quan hé gitta nha xuat ban va sach: Ma khéa nha xuat ban thuge bang nha xuat ban va théng tin nha xuat ban thuge bang sdch, c6t théng tin nha xuat ban thugc bang sdch tham gia quan hé trén goi li khéa ngoai (Foreign key). COt dé ligu ld kha ngoai c6 thé cé quan hé véi nhiéu khéa chinh & nhiéu bang, m6t bang cé thé c6 nhiéu khéa ngoai, khéa ngoai cé thé c6 gid tri NULL, gid 67 tri cua khéa ngoai Iuén nam trong tap gid tri cla khéa chinh trong méi quan hé da thiét lap. Khéa ngoai va khéa chinh phai 6 cing kiéu dit ligu, cling kich thuée. Sach Sach an Ten each Khéa chink ee Khoa ngo: Rang buée Unique. Unique 1i ring bude xc dinh trén m6t hode t6 hgp e6t dit ligu, e6t hoge 16 hgp ct dit ligu duge xée dinh rang bugc logi nay la duy nit. Proportis Tote Rens Indomss | chek coset] Tee ranes or Gdecedindes [PoE © F inate F create as usTeRED, Donat aenascaly reenepite tates 68 M6t bang dit ligu cé thé cé nhiéu rang budc duy nhat, mét c6t trongmrang bude loai nay cho phép nh§n gid tri NULL, rang bude duy nhat c6 thé str dung lam tham chiéu cho khéa ngoai. Rang bude Check. La rang budc khéng ché dir ligu nim trong mét pham vi nao dé. Rang bude nay sé kiém tra dit ligu khi nhap vao. Tables | Feloshes | Idesss mess Chock Cenezs | Pee phendccecenecwe SSCS wou | poste Geretventoane: [OE Cerntroit expressions IF checkexting data cn creation IF rferce contra for rection IF Enforce corsa For NEERTS and UPDATES 69 Gia tri ngdm dinh — Default. Gia tr] gin cho cOt dit ligu khi thém ban ghi va chéta nh§p dit ligu vio e6t nay. Pies dene seen elo) ios defeat 70 TAO BANG DU LIEU. Sau khi da xde dinh day di cdc théng tin thiét ké CSDL, bude tiép theo 1 thyc hign tao cdu tric CSDL. Dé tao cdu trac CSDL bude quan trong 1a tao bang dit ligu. Khi tao CSDL hé théng ty dong tao ra mt sé bang dit ligu ngam dinh, cde bang dit ligu nay sé cung cp, quan ly thong tin quan tri cla CSDL, cung c4p mét s6 ham hé théng try gidp bgudi ding. Tao bing céng cy. - Chon CSDL - Chon Tables - Nhan phai chudt 6 cira sé bén phai bohm i280 6 psi zee bepspe 25.326 Densizme | s2 4 psn zs Depa 2532601 7 - Chon New Table. CokmNane | GatoType —_ueath[ aw ie a ow oe Nhgn gia tj NULL gaat a0 gu fons * udu apy cain cites dest? Ten tong - oot Gia oj ngam dink Bit khéa chinh. Dé xd dinh khoa chinh ta thye hign chon nhimg c6t tham gia khéa bing cach git phim shift va chon chugt > nhdn chu§t phai -> chon Set primary key. sect | See Jeep, Folstorstice (heck Caan Popes 72 Xéc dinh Identity. - Chon cét dit ligu -> Chon yes trong muc Identity -> dit seed (gid tri khéi dau) -> d§t increment (bude ty dng ting). Tao bang bang cfu lénh. Gia sit can tao bang tén NXB cé cu trae nhu sau: Design ‘ery ww Toommyseed (oery Derren Forel ee eee eon (_[ctentome [bets ype liengin[ aon nls] bela me 4 (i Sur dung lénh Create table, kich ban cau Iénh nhur sau: Create table NXB(id int not null primary key identity(1,1), Ten Nvarchar(100), Ghi_chu Ntext) Sita cdu true bang. Sit dung cong cu. - Chon bang can stra déi cla CSDL. - Nhat phai chudt -> chon Design Table. ONT FD eran 5 Serre Face ch ks eden Bp evenpcaccoue eg rae ee Sem OG re San bg rb Es Open rae >| eo Syme a [Bn ee Sen Goa S. vse? | Ge Sen = aw Be irons | Semen Soom |B fe Sem El rable leg bo seem ims = fon eed roce fe Seen er fe seen — tbo. Sesem jee tbo. Seem i sets fe San . tbo. Seem pee tbe. Seren Sam - Thye hign sita cau trac bang. Sita dung cdu lénh. oon 128 (eran 1252 er joan az joao zm osaoon m2 josaon 2 joan uz joan ara (jean to joann wz joao wz oem 1 z52 oan zm ejrjaon 1252 jrefeon azn cea aan ‘jean iam joann az joann az82 68 Bé sira cdu trie bang dit ligu ta str dung cau Ignh Alter table. - Thém mot e6t vio bang da cé: ALTER TABLE NXB ADD Dia_chi NVARCHAR (100) - Xéa e6t tir bang da ¢6. ALTER TABLE NXB_Drop column_Dia_chi NULL 14 Xéa bang. Sit dung céng cu. - Chon bang - Nhat chudt phai - Chon Delete -> Yes. Sit dung lénh. (Drop Table) Drop Table NXB Bang dit ligu cé tham gia méi quan hé Relationship khi x6a ban can cha y: Néu bang chita khéa ngoai thi vige xéa thye hign binh thudng, néu bang chita khéa chinh ciia méi quan hé thi khng xéa duge. Nhap dér ligu vo bang. Sit dung céng cu. - Chon bang dit ligu - Nhat chuét phai -> Open Table -> Return all rows "BE mpaesee oo Grater 1 BL rode ae on a oe a lee Bowes er Dare Eun ved Pe Sheps Biscay SBaronee ¥ [Bcrertvs [Shertteccmalge [Blawtinencety (Blsyendenes [Elevenseseie [srnenbes [Elsbjeas [errerenore [Sherrer (Elsmmozsne o New Tb, Deven ts oa ey Dette Propet oe syean Seven Speen sien onsjano nase a ogee urea gowenno nas. a goeenn0 nea enema n2s:s9a¥¢ oo) esa a ean guano 232m cgowymno 25.32 15 - Nhfip dit igu theo ding quy cach kigu di ligu, ring bude néu c6. Ich Te “hue BG gee aye Data ven ng Bao aE Viée stra, xoa duge thue hién tryc tiép. Ddi voi cdc c6t 1a dang s6, ting ty dong khéng can nhép dit ligu. Dé Iwu Iai dit ligu da nhp ban di chuyén con tré sang hing khic. Sit dung cdu Iénh. St dung lénh Inert into. Insert into NXB(Ten, Dia_chi) values(N’Kim Déng’, N’ha NOi’) Néu cOt dit ligu hd try Unicode thi truée gid tri nh§p vo ban phai thém kém ky ty N (hu vi dy trén). Ta0, sita rang bude, khéa. Phin nay nhim thye hign thao tae voi cde rang bude, khéa: ralationship, check, unique,... Sit dung céng cu. - Chon chtte nang Design table. - Chon biéu nuit Manage Indexes/Keys... am 16 = Chon bang twong img. Sie dung céu lénh, Dé cy thé hon ta thu hign theo vi dy 6 so dé edu trie sau: ‘ChunoLosi jects facta Glumtere | GeeTwe lleh| aor 9 fies Tats| Rartipe nw | Check Cte Seectedincex: [3 ~] oa Pan oe Index nara: nds Peron Fr G coretrart Cre Fr tgpore duzlcte 1 cream CLUSTERED, PF bonetcurersresly copies aot ha T7 Create Table NXB(id int not null primary key identity(1,1), Ten Nvarchar(100), Ghi_chu Ntext, Dia_chi nvarchar (150) ) Create Table ChungLoai(id int not null primary key identity, nvarchar (50), ghi_chu nvarchar (200)) Go Create Table Sach(id int not null primary key identity, Ten nvarchar(100), so_trang int default(0), Chung_loai int references Chungloai(id), NXB int references NXB(id), Tom tat ntext) 7B KHOA INDEX THIET KE KHOA INDEX. Index 18 mt khéa quan trong déi voi CSDL dc bigt 1a co sé dit Tigu 1én. Index duge thiét Igp tir mét hoe nhiéu cOt dir ligu cua bang dit ligu. cde gid trj ctia khéa Index s& duge sip xép va lu trit theo mot ‘dann sch (bing khéc). Mi gid tri trong khéa Index li duy nhét trong danh sach, mdi gid tri khéa Index sé lién két dén gid trj trong bang dit ligu (lién két dang con tré). Vige Iu trit dit ligu cua bing ¢6 khéa Index duge thy hign theo cau tric cay B-Tree nhim tang téc d6 truy xuat dit liu d6i voi 6 dia (thiét bi thu cap). eo I # a eso 751,185] 5 |tofas|2o|[25[2a]3o] | [50] 55 60] 65] 70 i ' 75 80| 85/90/95] Khi tim kiém mét gid trj trong c6t dit ligu, ma cGt nay tham gia tao khéa Index, dau tién cau Iénh xae dinh yj tri ca gia tri nam trong khoa Index bang phép duyét cay, sau d6 thyc hign tim theo lién két dén ban ghi chita gid tri tuong img voi khéa trong bang. 79 So a6 vi dy duéi day gom khoa Index duge tao tir cGt emp_id cia bang employees. employees ati cemp_id_| fname [mint | name. Pueazsze | Paolo | mM | Accor! Paacaramt | Paco | S| atone Ypcosesor | vieaa | P| Aatwenn Feposraor | ren Bernat Lester | Lesky Birm age 29 emp id Lesser Puaazezom \veashean= Viée thiét ké khoa Index dya trén nhu cau truy van, chén dit ligu trén mot bang, xac dinh dya vao mét sé tham sé sau: + C6t thudng duge str dung lam khéa truy van dit ligu (xdc dinh ct tham gia khéa Index). + Tp lénh thudng sir dung try van can téc d6 cao (xac dinh tap c6t tham gia truy van). + Dit ligu nhap vao bang c6 khéa Index can nhanh hon hay truy vin edn nhanh hon (xée dinh dat clustered hoac nonclustered), + Lugng dir ligu nhap dong loat nhiéu hay it (xac dinh tham sé fillfactor). Clustered Index. Khi khéa dit thugc tinh Clustered, dit ligu ctia bang sé duge sip xép vat ly trén dia, nhu vay khi thiét ké khoa dang nay dit ligu duge chén va sé tim dung vi tri trén dja dé luu trér (ving dia danh cho bang dit ligu), chinh vi vay ma c6 thé xay ra trang hgp phai dich chuyén danh séch céc gid tri da 6 & dia. Nhing vige tao khéa Index dang nay sé khéng can sap xép gid tri 6 dang logic ma khi truy nhap dia da bao dam dit ligu duge sdo xép. Bang dit ligu chi cé thé tao toi da m6t khoa Lustered Index. 80 Nonclustered Index. Dir ligu Index khong si logic, dir ligu cua bang hu trit gid trj khéa Index duge sp xép, nhanh trong nhp dit ligu. Unique Index. Xae dinh dit ligu cia cOt tham gia khéa Index khOng lap lai. Fill Factor. Khi tao khéa Index, dit ligu tham gid tao khéa Index s& duge phan theo mire cla B-Tree, cc mite duge phan theo page dit gid tri Fill factor xac dinh phan khoang tréng t6i da ciia page theo ty 1é phan tram. Nhé khong trong nay ma toc 46 bé tri cdu trac Index, téc d6 truy Inc théng tin trong cay duge cai thién. TAO KHOA INDEX. Tao theo cong cy. - Chon chite nding Design table - Vao bang Index manager. Properties Toles | enone (Vhs coc Conroe | lterone: | ach Sdetndides: |_sah_eimnce SC - caste ° a - New 81 - Chon cde ct tham gia tao khéa Index - Dit tham sé. Tao theo cAu Ignh. ~ Sit dung trong cu Ignh Create Table, Alter Table. - Sir dung lénh Create Index. CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } (column [ ASC | DESC ] [,...0 ]) Vi du: CREATE INDEX sach_idx ON (id) 82 XOA INDEX. Sir dung cong ey. - Vao Index amnager - Chon khéa Index -> Delete Teles] Pelartion devs | Check Constr | Tatler sah Seketedides: Toe Ides rae F cetounae Ebaxter & casa fp © nes Punmeapiemctey | padinces chasis auerenco Pee Sit dung cAu Ignh. Str dung lénh Drop Index. Drop Index Sach(sach_idx) KHUNG NHIN — VIEW KHAI NIEM KHUNG NHIN. Khung nhin (View) la m6t bang tam théi, c6 cau tric nhu mét bang, khung nhin khéng luu trit dir ligu ma n6 duge tao ra khi sir dung, khung nhin a d6i tugng thuge CSDL. Khung nhin dugc tao ra tir cau Iénh truy van di ligu (lénh Select), tray van tir mé6t hode nhiéu bang dit ligu. Khung nhin duge str dung khai thé dit ligu nhu mét bang dit ligu, chia sé nhiéu ngudi ding, an toan trong khai théc, khong anh huéng dit ligu géc. Co thé thyc hién truy van dit ligu trén cau tric ctia khung nhin. tie ia ‘atte type _| pubta| price | advance |royany ytd_sales 8U1023 | The Busy Executive's Oatabase Gull businges | 1389 | iga¢ | soco00| 10 | ans BUITT | Cooking wth Computers Surresttia| businges | 1389 | if. | socooo| 10 | 3076 au2075 | You can Combat Computer Stress! | tusinacs | gras | 20 | amissoo) 24 | 12722 BU7892 | Straight TalkAbou Computers business | 1382 | 19.99 | sioon00) 10 | 4005) M2222 Siicon Valley Gasionomic Treats | mod_cook | O87? | 12.92 oo) 12 | 2022 M3021 | The Gourmet wieraware mox_eook | o7r | 299 | 1s00000| 24 | 22248 The Susy Executive's Datatrase Gud} 19.98 | Algouata tntasystems ooking wi Cormauters: Surreptiiou) 11.95 | Alnodata Infaeystems You Can Combat Computer siresst | 2.99 | Newton Books 2 ? ine price pub id pub_name city 0736 | NewMoon Beoks Becton MA 0877 | Bret 2 Hardey washington | DG 1380 | Auuusls intusystens | Berkeley | CA ye22 | FiveLakesPualsing | chieaga | iL 1756 | Ramona Publishers | Gallas ™ Publishers table TAO KHUNG NHIN. Sir dung cong cy. - Chon chite nang Views cla CSDL. 84 - Nhan phai chudt. es ‘Bh rarest 9 servers ‘Greste Dake ee aezo una |Aosea te sey tenet 12a EN @y srrens src San tom ae san merce se ew . e fee Wie bgt. ‘Bite vrs Web ne(=SeE1 avn >) ==) a - Thém ede bang tham gia cu Ignh truy van dit ligu cho View 85 - Soan lénh truy van hoa danh dau cdc cét tham gia tao View. Ba sro te nelx) Go SG551 stars - Stra ddi Iénh Select theo y muén. - Ghi kich ban > dat tén view. Tao theo cu I¢nh. Sir dung Ignh Create View: CREATE VIEW VIDU as SELECT — dbo.authors.au_Iname, dbo.authors.au_fname, dbo.titles.title FROM —_—_dbo.authors INNER JOIN dbo.titleauthor ON dbo.authors.au_id = dbo.titleauthor.au_id INNER JOIN dbo. titles ON dbo.titleauthor.title_id = dbo.titles.title_id SU DUNG VIEW. - Chon View - Nhdn nat phai chudt. 86 2B ono 1b SERVERIPOHEDO Widens = Omtabaces ws Grae (8. mel ® Bra free 5 nae bag are Ey rales 65 Yene sed rose Ure fhe Puke dosteus Uitte Em bain Bay 8H ene (de syeersvanes eo Systen——efe/z000 1:25 Stes) (i aseeurers Hen Vow Deven Vw Al Tacks cu. Cony Debte Rename Properties Hee hye hign cdc chite nang tuong ty table. be oofoeame zeit ae =e | er 87 THU TUC LUU TRU KHAI NIEM THU TUC LUU TRO VA HAM. Tha tye Iu trit c6 thudt ngit Stored Procedure, 14 m6t déi tugng cia CSDL tuong ty nhu khung nin, tha tue liu trit c6 thé tgo ra tir cOng cy va cau lénh. THO tue duge thye hign nhu edu Iénh (¢6 thé thye hign tir SQL Query analyzer, ede vi tri goi cau Iénh T-SQL). Tha tyc hu trit duge két cdu tir m6t kich ban cau Iénh T-SQL, thi tye co hing die diém co ban sau: + Truyén tham sé. + Goi thi tue khdc. + Tra vé cdc gid trj tham sé, chuyén gia tri tham sé cho cae thi tye duge goi. + Tra vé gid tr] trang thai tha tue Ia thanh céng hay khong thinh céng. FG mazes sou serars FG sot sever Gaus iB) IWcoNGardonsty = ff Weoneponico qwedeueT) 1 Gl caehecas E usr bathed Puntore Bene (GE bate Wancematin Seve Di maragenert ‘Ga Rerletin Gd Set Gy Sioa Sevens [a adawrawevcine a adetonnrcacetil PBs nes [Pct adcveercosect. vcs [bo chectincbect Peereeny ee cin a erechoteb et ce arcleysanor envio Bea sorrcpetindyis 2 dua Bene 2 echt a rca gener 2 enrogeronyes ance [Bamndsnucceta earl Lenten etapa ‘ERESECRSESR SERGE ERE E EES 88 Thu tuc luu trit cé nhiéu uu diém so voi thyc hién cau lénh T-SQL tir cde may khach: + Lap trinh theo module: Thu tuc duge thiét lip trong timg CSDL mét lin, 6 thé goi thyc hign nhiéu lin trong mot tng dung, cé thé goi tir nhiéu émg dung. + Thye hign nhanh hon: Khi can thyc hién mét lugng lén cu Iénh T-SQL, thi tye lau tr thye hign nan hom vi khi may chai nhn duge nhiéu céu enh eting clia tai khoan tir may khach va céc Khi tha tue can goi nhidu lan trén cde may khdch thi thi tye thye tién, nhimg Lin sau may khdch sé chay thit tye da duge bién dich. + Lam gidm lu lrgng trén mang: Thay cho vi may khdch phai gti nhiéu dong Ignh tir cde img dung dén may chi, khi sir dyng thi tye thi né chi cn geri mot Ignh, tir dé dan dén lu lugng théng tin Iénh truyén qua mang giam. + An ninh bao mat hon: Khi khong muén cho mét user truc tiép khai thac mot di tugng hay bang dit ligu nao 4, ma can cho user d6 duge khai thée thi thit tye c6 thé giip ban gén quyén khai thie cho ngudi d6. Vige gin quyén khai thie nhu néi trén sé giip cho van dé an ninh bao mat trong CSDL t6t hon. PHAN LOAI THU TUC LUU TRU. Thi tue Iu trit duge phan thinh 5 logi nhu sau: System Stored Procedure. La thi tue duge liu tri tong CSDL Master, thi tue loai nay duge bat dau ing chit sp_ thi tuc logi nay thuéng duge sit dung trong quan tri CSDL va an ninh ‘bao mat. Vi du: Mudn biét tat ‘4c tién trinh dang thy hign béi user nao: sp_who @loginame='sa Két qué 89 Local Stored Procedure. Day 1a loai tha tuc thuéng ding nhat, nim trong CSDL do ngudi ding tao ra, thye hign mOt céng vige nao dé. Thu tue loai nay thung duge tao bei DBA (Database Administrator) hode ngudi lép trinh. Temporary Stored Procedure. Co chite nang tuong ty nhu Local Stored Preedure nhung thi tuc loai nay tw huy khi két néi tao ra né ngdt hodc SQL Server ngung hoat d6ng va nd duge tao ra trén CSDL TempDB. Extended Stored Procedure. Day 1a logi thi tuc str dyng chuong trinh ngoai vi di duge bién dich thanh DLL. Tén tha tye duge bat dau bing xp_. Vi dy thi tue xp_sendmail ding gui mail, tha tue xp_cmdshell ding thy hign lénh cua DOS (xp_cmdshell ‘dir c:\’). Remote Stored Procedure: La logi thii tuc sir dung thi tue cla mét server khic. THIET THU TUC LUU TRU’. Sir dung céng ey. - Chon CSDL can tao tht tuc trong Enterprise Manager —> Stored Procedures - Nhdn nit phai chudt -> New Stored Procedure... oe 90 - Dt tén thii tue, xc dinh role ngudi khai thac, soan kich ban cau Iénh. ‘low Stored Pocock ee ee = x Ten thi tue Role xac dinh quyen nguai dung Sir dyng cAu Ignh. Sir dung Iénh Create Procedure, dé tign xem xét ta xét theo cdc vi dy, cde vi dy duéi day thyc hign tao thi tye va thao tée vi CSDL pubs dé tign trong dit ligu mau, dé tim hiéu ct phap cau Iénh T-SQL ban xem phan cau Iénh T-SQL trong cig ti ligu nay. Thi tue khéng c6 tham sé. Thu tue sau sé thye hign ligt ké tat ca cdc téc gia, séch va nha xudt ban ma tac gid viét sich. Use Pubs CREATE PROCEDURE au_info_all AS SELECT? au_lname, au_fname, title, pub name FROM authors a INNER JOIN titleauthor t ON a.au_id = ta.au_id INNER JOIN titl N t.title id a.title_id INNER JOIN publishers p ON ON t.pub_id = p.pub_id co 91 Ké&t qua thye hign: Thi tuc c6 tham so. ‘Thi tye sau thy hign loc tim téc gia c6 tén, ho truyén theo tham sé. USE pubs co CREATE PROCEDURE au_info @lastname varchar (40), @firstname varchar (20) AS SELECT au_lname, au fname, title, pub name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t,title id = ta.title id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname @firstname AND au_lname = @lastname Go 92 Céch truyén tham sé: + Gan gid tri theo thir ty: EXECUTE au_info 'Dull', ‘Ann! + Gan gid tri theo tén bién EXECUTE au_info @lastname = 'Dull', @firstname = ‘Ann' + Gan gia tri theo tén bién, khéng theo EXECUTE au_info @firstname = 'Ann', @lastname = 'Dull' Thi tuc c6 tham 86 tity lua theo gid tri dua vao. Vi du nay sé dé cap dén vige truyén tham sé theo mau, gid tri tham sé duge ngam dinh khi tao tha tye va thi tuc khi thy hign sé kiém tra gid tri tham s6 nhap vio. USE pubs co CREATE PROCEDURE au_info2 @lastname varchar (30) @firstname varchar (18) = AS SELECT au_lname, au_fname, title, pub name FROM authors a INNER JOIN titleauthor ta ON a u_id = ta.au_id INNER JOIN titles t ON t le_id ta. tle_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname LIKE @firstname AND au_lname LIKE @lastname co " -0 & Tham sé % xac dinh gid tri tly y nhap vao tham sé, tham sé D% xc dinh gid tri dau tién ctia chudi phai bing chit D. Khi ngam dinh cdc gia tri nhu trén tham cé khong duge truyén gid tri sé ty nhan gid tri ngam dinh. C4ch truyén tham sé nhu sau: + Khéng truyén tham sé: EXECUTE au_info2 + Chi truyén tham sé dau, tham sé sau sé ngam dinh. EXECUTE au_info2 'Wh%' + Chi truyén mét tham sé, tham sé xon lai sé nhan gid tri ngam dinh. EXECUTE au_info2 @firstname = 'A%' + Tham sé thi nhét x4c dinh gia tri mét ky tu thuéc vi tri cé [CK] chi nhan ky ty ‘C’ ho&c ‘K’, [0B] chi nhan gid tri ‘0’ hoac ‘EB’. EXECUTE au_info2 '[(CK]ars[OE]n' dinh rd gia tri tham sé EXECUTE au_info2 'Hunter', 'Sheryl' + X4c dinh kiéu gia tri tham sé. EXECUTE au_info2 'H%', 'S%!' nhan gia tri + Xd Thi tue sit dung tham s6 ldy gid tri ra (tham tri) Vi du sau sé mé ta ky thudt sir dung tham tri, nhu trong cdc vi dy truéc ta sit dung tham sé dé truyén gid tri vao tén tham sé bat dau bang | chit @, tham sé duge bat diu bing 2 chit @@. Sé duge sit dung trén nhigu dong Ignh, sir dyng cing tir khéa OUTPUT xdc dinh 1a tham trj dé Ky gid tri ra, Vi du sau thye hign truyén tham s6 vao va lay gia tri ra: USE pubs Go CREATE PROCEDURE title @@SUM money OUTPUT AS SELECT 'Title Name! = FROM titles WHERE title LIKE @@TITLE SELECT @@SUM UM (price) FROM titles WHERE title LIKE @@TIT co sum @@TITLE varchar (40) = '%', tle E Tham sé bat dau bing 2 ky ty @@ xdc dinh duge sit dung cho nhiéu cau Ignh, sit dung cing tir khéa OUTPUT xée dinh la bién tham trj.. Vi du trén str dung bién @@Title xdc dinh diéu kién dua ra tén sich day 1a loai bién truyén vao sit 94 dung cho hai cau Iénh Select, bién @@Sum xac dinh li bién tham tri ding lay gid trj ra. C4ch sir dung tham sé nhu sau: DECLARE @@TOTALCOST money EXECUTE les_sum 'The&', @@TOTALCOST OUTPUT IF @@TOTALCOST < 200 BEGIN RINT | t PRINT 'All of these titles can be purchased for less than $200." END ELSE SELECT 'The total cost of these titles is $' + RTRIM(CAST(@@TOTALCOST AS varchar (20))) Vi du trén sit dung bién @@TOTALCOST vio vj tri bin @@SUM trong thi tuc. Két qua thyc hién nhu sau: The Busy Executive's Database Guide The Gourmet Microwave The Psychology of Computer Cooking (3 row(s) affected) Warning, null value eliminated from aggregate. All of these titles $200. an be purchased for less than This tue ste dung bién OUTPUT kiéu con tré (Cursor) Vi dy sau tao tht tuc co bién kiéu Cursor, bién nay sé quan ly mot bang dit ligu duge truy van bang cu Iénh Select, CREATE PROC! VARYING OUTPUT titles cursor @titles_cursor CURSOR 95 AS SET @titles cursor = CURSOR FORWARD ONLY STATIC FOR SELECT * FROM titles OPEN @t co es cursor Con tré duge dua vao bién kiéu Cursor c6 tén @Titles_cursor, huéng dich chuyén Forward (tién) va Static. Str dung bién nhu vi dy sau: USE pubs Go DECLARE @MyCursor CURSOR EXEC titles cursor @titles cursor = @MyCursor OUTPUT WHILE (@@FETCH_STATUS = 0) BEGIN FETCH NEXT FROM @MyCursor END CLOSE @MyCursor DEALLOCATE @MyCursor co Bién con tré duge dua vao vién @MyCursor, khi mé con tré vi tri ban ghi dau tién cia bang duge xée dinh, Trong vi dy trén str dung vong kip duyét timg ban ghi, vige xtt ly dit ligu thye hign trong ving lap. Thi tuc dat thuée tinh dn kich ban edu lénh, Vi dy sau sé dt thudc tinh WITH ENCRYPTION 4n van ban trong tha tue véi ngudi str dung. CREATE PROCEDURE encrypt_this WITH ENCRYPTION LECT * FROM authors 96 Go Khi str dung thi tuc hé thong sp_helptext 4é xem ni dung tht tuc: EXEC sp helptext encrypt_this Két qua nhu sau: The object's comments have been encrypted. SUA, XOA THU TUC Sir dung cong ey. - Chon tha tye cn sita, x6a > thye hign sita ndi dung hoi chtte nang xéa. Sit dung cAu lgnh. ~ Sita str dung Ignh Alter Procedure - Xéa str dyng Ignh Drop Procedure Ban doc cé thé ty tim hiéu vé User Defined Function tong Book Online, li déi tugng goi la ham thugc CSDL, 6 chite nang va cach thite hoat dong gan gidng thi tue. 97 TRIGGER KHAI NIEM TRIGGER. Trigger ld mét tha tue de bigt ma viée thye thi cua né ty dng khi cé sy kign xy ra, cdc su kign goi thi tye dae bigt ndy duge dinh nghia trong edu Ignh, thong thuong duge thyc hign véi cde sy kign lién quan dén Insert, Update, Delete dit igu. Trigger duge str dung trong vige bio dm toan ven dit ligu theo quy tie xac dinh, duge quan ly theo bang dit ligu hofe khung nhin. NHU'NG TRUONG HOP SU’ DUNG TRIGGER. - Sir dung Trigger khi cée bign phap ton ven dit ligu nhu Constraint, rule,... khong bo dim. Khac véi céc cOng cu bao dam toan ven dit ligu da néu, cdc cong cy nay sé thye hign kiém tra tinh toan ven trude khi dua dit ligu vo CSDL (can goi la Declarative Data Integrity), cdn Trigger thye hign kiém tra tinh toan ven khi cong vige da thye hign ri (cn goi la Procedural Data Integrity), - Khi CSDL chua duge chuan hoa (Normalization) thi co thé xay ra dit ligu thita, chira 6 nhidu vj tri trong CSDL thi yéu cdu dat ra 1A dit ligu can cp nhat théng nhat trong moi noi. Trong trudng hop nay ta phai sir dung Trigger. - Khi thay ddi day chuyén dit ligu gitta cdc bang v6i nhau (khi dit ligu bang nay thay d6i thi di ligu trong bang khdc ciing duge thay déi theo). DAC DIEM CUA TRIGGER. - MOt trigger cé thé thyc hign nhiéu céng vige (theo kich ban), c6 thé nhiéu su kign kich hoat thyc thi trigger, c6 thé tach roi cdc su kign trong mét trigger. - Trigger khong duc c tgo trén bang temprate hay system. - Trigger chi thye thi ty dng théng qua cae su kién ma kh6ng thye hién bang tay. - Trigger str dung duge véi khung nhin. - Khi trigger thyc thi theo cdc sy kign Insert hoe Delete thi dit ligu khi thay di sé duge chuyén sang cac bang Inserted Table, Deleted Tabla, la 2 bang tam théi chi chita trong b§ nhé, cdc bang nay chi duge sit dung véi céc Ignh trong trigger. 98 Cée bang nay thuong duge st: dung dé khéi phuc Iai phan dit ligu 4a thay déi (roll back). - Trigger chia thinh 2 logi Instead of va After: Instead of [a loai trigger ma hoat dng cia sy kign goi né sé bé qua va thay vio né la cdc Iénh thyc hign trong trigger. After (tuong dong véi tir khéa For) day 1a loai ngim dinh, khac véi loai Instead of thi loai trigger nay sé thye hign cdc Iénh trong né sau khi da thyc hign xong sy kign goi nd. TAO TRIGGER. Tao trigger duge thyc hién théng céng cy va cau Iénh: Tao trigger bang cong cy. - Chon bang dif ligu ho&e khung nhin. - Nhan nut phai chuét. - Chon All tasks > Manage Triggers... MEER —anace ners. cr Cony Marane Pesisio - Sogn kich ban tao trigger. & ae aa EET fe a Core | He | (Cu phap cy thé hon ban xem trong phan tiép theo) Tao trigger bing cau I¢nh. St dung lénh Create Trigger, eit phap chung nhu sau: 99 CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { {FOR | AFTER | INSTEAD OF } { [INSERT ][,] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS. [ {IF UPDATE (column ) [ { AND | OR } UPDATE (column ) ] n| | IF (COLUMNS_UPDATED () { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask { ...2 | 1 sql_statement [ ...n] Cac tham s6 co ban: + trigger_name: Tén trigger. + table/view: Tén bang hoc khung nhin. + For/After/Instead Of: Loai trigger. + { [DELETE] [,] [INSERT] [,] [UPDATE] }: Su kign khi ty déng goi thye thi trigger. + sql_statement [ ...n J: Kich ban cée edu lgnh xir ly cua trigger. Cée cu Iénh sau khéng duge thych thi trong kich ban cde cau Ignh xtr ly clia trigger: ALTER DATABASE CREATE DATABASE, DISK INIT DISK RESIZE DROP DATABASE LOAD DATABASE LOAD LOG RECONFIGURE, RESTORE DATABASE RESTORE LOG Dé cy thé hon ta xét mot sé vi du sau: 100 Vi du tao m6t trigger théng bao. CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE AS RAISERROR (50001, 16, 10) co Vi dy trén tgo mOt théng bio cho cdc client khi thyc hign thém hode sita dit ligu trén bang Titles, ma thong bio 14 50001, ld ma théng béo do ngudi ding dinh nghia. Dé tao théng bao ban thao téc nhu sau: - Vio menu Tools -> Manage SQL Server Messages... - Chon bing Messages -> New... ecvnunber FT] Seve [os-UerDerer =] Wewmeled Ban Scher Foss a AB Lergusge fein =] Bape ute indoor ert Th Cone Heb - D§t ma, soan ngi dung, kiéu thong bao (Serverity), ma théng bao sé duge sit dung trong cdc mg dung hode cau lénh yéu cau. 101 Vi du tao trigger tu dong giti Email khi duege thee thi. CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE, DELETE AS EXEC master..xp_sendmail 'MaryM', "Don't forget to print a report for the distributors.' Go Vi du tao trigger kiém soan khodng gid tri gitta 2 bang. Vi dy sau sé to trigger thye hign kiém soat pham vj mie Iuong cla mot nhan vién vira chin vio cé thudc gid tri dinh mite Itong trong bang mite Ivong hay khong CREATE TRIGGER employee _insupd ON employee FOR INSERT, UPDATE AS DECLARE @min_lvl tinyint, @max_lvl tinyint, gemp_lvl tinyi @job_id smallint SELECT @min_lvl = min_lvl, @max_lvl = max_lvl, Gemp_lvl = i.job_lvl, @job_id = i.job_id FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id JOIN jobs j ON ob_id = i.job_id IF (@job_id = 1) and (@emp_lvl <> 10) BEGIN AISERROR ('Job id 1 expects the default level of 10.', 16, 1) ROLLBACK TRANSACTION END ELSE IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lv1) 102 BEGIN RAISERROR ('The level for job _id:%d should be between %d and %d.', 16, 1, @job_id, @min_lvl, @max_1vl) ROLLBACK TRANSACTION END SUA, XOA TRIGGER. Sir dung cong cy. - Chon trigger trong myc Manage Triggers... - Thye hign stra noi dung hode xéa. Sita, xa theo cu Ignh. Sir dung lénh Alter trigger dé sira. - Sir dung lénh Drop Trigger dé x6a. (Ban cé thé tim hiéu chi tiét hon trong Book Online) 103 XUAT — NHAP D@ LIEU Trong chuong nay ban doc sé tim hiéu ky thuat trao déi dit ligu voi cdc mai trudng ngoai Server ctia SQL, c6 thé voi m$t CSDL khde, mét Server SQL khac, mOt hé quan tri CSDL khdc hoge néi ghép tap tin CSDL. SERVER LIEN KET - LINKED SERVER. Tuong ty nhu cdc hé quan tri CSDL Ién khdc (Access, Oracle), hé thing cung cdp cong cu lién két voi hé quan tri CSDL khac. Khi lign két 44 duge thiét lap, voi quyén han cia user lién két ban cé thé thyc hign khai thac dir ligu lién két trén SQL Server. Tao ODBC. ODBC viét tt cla cum tir Open DataBase Connectivity, la cong cy duge Windows cung c4p véi myc dich lam méi trudng trao ddi dit ligu gitta nhimg CSDL, gitta nhiéu hé quan tri CSDL voi img dung. ODBC tgo nhig chuan chung nhat két néi dén CSDL va img dung. Khi thye hign khai thée dit ligu thong qua ODBC, tmg dung lién két theo tén ODBC, quyén han khai thac thyc hign khi tao két néi ty ODBC dén CSDL. Céich tao ODBC: - Chon ODBC trong Control panel. eT UsaD3H | sem Ost} FeO] Die Teena Comet] Ate UerDa Saucee [ive Aa Nesta de One eT i soawe. | e000 Used nen wean eat wa oxen Uo ndsaecdzastesker AUse dau cours eer vateteveu, dara vedere carer ate 104 - Chon bang User DSN -> Add... Eee Ske aire whch you werd a step sits cuee i va Veoh FaPoVP Dive FT isos DEL tr race isos Peades ver cb) ieee PeedorTreber(eo) < = Chon Finish. ‘Te ond nas yc an OO dla ees ha eu a fervact oS Seve nom dyou art ioun tt wear? Nags Pubes Now yar bei ce? econ FED pie Eene “> ‘Whneh SOL Sewer do you nant io eennes! to? SS | Chon Driver ctia hé quan tri CSDL ctia CSDL can lién tao ODBC. Nhap tén ODBC (tén nay sé sir dung cho (mg dung khdc, nén nhip theo chuan chung dé dé sir dung), cdc tham sé khdc (6 day trén hinh str dung Driver cia SQL Server nén ban phai chon Server). Next. 105 eee How should SOL Server yey the ashen re ayn ID? (© Mi Winds NT authentcatzn who the nal oh To change the nett Iba used comrade vith SEL Se tek CereCrfguaen Cent Corian, ig Correct to SOL Servet o chiar defi sete forthe iin] crvetahon pire Logit i Next. I Change he defaults to eee Tec desis henna me tenoer seed pteradarsHinrepted 0 stamens foo te slered econ 6 Deb oben x decom qed arate I Use ANS! rls, nabs and wena aS Sere Regis SOU Sere Th Chon CSDL -> Next > Finish Sau khi tao xong trong danh sdch xuat hin ODBC ban vita tao, tur danh sch ban cé thé sira déi, x6a ODBC khi can thiét, 106 or Us | swt05 | FEDS] Die Ta] Coren] Au | LU Daasetcer Soe eer ees € Sf es Tao lign két tir Access. Tir h@ quan tri CSDL Access ban cé thé tao lién két dén cde hé quan tr CSDL khac (Acess, Dbase,...), hofe thong qua ODBC. Trong vi du minh hoa sit dung lién két tir Access véi ODBC (d6i voi SQL Server hod Oracle, My SQL thi Access phai lién két thong qua ODBC vi céc hé quan tri CSDL nay khong thye hién khai thc di ligu qua tap tin chi khai thac thong qua tén CSDL, ma Access chi thyc hign theo phuong thire mé tp tin). Céc buée thye hign nhu sau: - M@ hé quan tri CSDL Access. - MG hoje tao CSDL méi tir Access - Chon File -> Get External Data -> Link Tables. Paso Sean Sedo atone Popeiee 107 - Chon ODBC Databases. [Bromma GAN Xi I Ta patois SS a Ne Samoa yesh eines ‘Werna Ofc Acene (SDL pubs SOL Sever Sys Data Seu the Corps Ter lisa Use ‘MieweSarle Dalebare 2. Sse £ Machire Daia Souza este ts tus machi, andewna! be set dala sou ee ate peso = ul on he wacine. Syste daa ssuitescanhe uty abuses cntisrachine 0 ya qi sabe twee | Hen - Ok. - Nhap Login ID va mat khau. - Chon bang hoac khung nhin can lién két trong danh sch. 108 os to mtd eo ser (eo specnsrare he sasegnees| (fe tear - Nhan Ok, danh sach cdc bang trong Access duge khai thac tuong ty nhu cde bang khée, eee i8doan ke Dein “Non | | [eects [ED cesirtabeincesin ven (crest ne eat createtcbieby antetng dita @ gon |S een a Cena [sud | suane | sutrane | pnone [actos [ony | a Bennet Abnorm a1B6SD9952 623 Gaieman ‘Boley (CA ri Biathet Hie Regraly 5037455102 Se Hiciol EL Cowal OR GorsnCheyl «lS 57723 Daron La Bomby CA DeFiance hel «984702 3 Dati PL ay " cl Castlo Irae ——«BIBSHGRD/5 IRB Cram Od ew Aor bul ‘nn 4158337129 3410 Blend St Pale Ata (CA Siem ___Majoie 4158057000 Soe obu Su OaNand [cA Stesna Marga 6152072723 22 Grijbwr Hou Navtile —T Gingesby But roressaus Poa CoC Hunts ‘Shenl “158357120 |SHD Bone 3 Palo Ato [CA Waren La 15534900 5730 Moduby Linked Server. ee Seta ot] DDroweee (cere Betirane —[Miowskle ADOLEDRFomm =) Posie ns. Pare sso Pasting - Nh§p cdc tham sé: 110 + Tén Server. + Provider (Driver cia hé quan tri CSDL can thiét lién két, trong vi dy minh hoa thyc hign voi Access). soot Euro [Bbiernace, IESrescoums [Epnieee [Birsscbess [Sreyscumis [Elreiemirenpe nites [Ee aste Eanes WG ere Gee ‘ - Thue hign khai thac thong qua cu Iénh, trong cu ISQL phai chi da duéng dan, vi dy Select * from Biblio...Authors sé thyc hign ligt ké toan b6 danh sach cac ban ghi cla bang authors. PTE ae eT elest > fron Bablae. authors BaD keer Ageiers, Roy [Guayaneh con SERVER\OQNDO BO) SERVERNTran Dara Cora SS) wan OCH ‘74rene [int cats0 iil Tao bang cau lénh. Sit dung Ifnh sp_addlinkedserver tao server lién két. Vi du tao Linked Server Biblio: sp_addlinkedserver 'Biblio', ‘Access 97', 'Microsoft.Jet.OLEDB.4.0', 'ct\data\biblio.mdb! (Dusng dan phai phi hgp vai Server) Xa Linked Server. - Sir dyng céng cu: Chon Linked Server cdn xa -> thy hign xéa. - Sir dung Ignh : sp_dropserver [ @server = ] 'server' [, [ @droplogins = ] { 'droplogins' | NULL} ] SU DUNG BCP VA BULK INSERT NHAP DO’ LIEU. Bep li cau Ignh dang command prompt, ding xuat (export) vi nhp (import) di ligu gitta SQL Server va tap tin (dang text hoc excel). Cac tap tin tham gia xudt nhfp phai c6 cu trac dit ligu kigu bang (hang, c6t), bang dit ligu cia SQL Server khi thye hign nh§p dit ligu phai c6 cdu trie tong duong 6 sin. Bulk insert li cdu énh tuong ty bep nhung chi thy hign import dit ligu ma khéng export. Ca phap Iénh bep. Lénh bep duge thyc hign tai cita s6 Ignh (command prompt). bep {[[database_name.][owner].]{table_name | view_name} |"query"} {in | out | queryout | format} data_file [-m max_errors] [-f format _file] [-e err_file] LF first_row] [-L last_row] [-b batch_size] [-n] [-e] [-w] [-N] [-V (60 | 65 | 70)] [-6] [-a] [-C code_page] [-t field_term] |-r row_term] 112 [-i input_file] [-0 output file] [-a packet _size] [-S server_name[\instance_name]] [-U login id] [-P password] ET] EV] ERY Ed FE] Eh "hint [,..2]"] (ban tim hiéu thém trong book online) Vi du ste dung lénh bep. + Sir dung Iénh cé tir khoa out dé copy toan b9 dif ligu tir mét bing hode khung nhin ra tap tin. bep pubs. tleview. ¢ -Sservername Uusername -Ppassword + Sir dung Ignh Select 48 copy mét tp ra tp tin, c6 tir khéa queryout. bi BY au_lname" queryout FROM pubs..authors ORDER "SELECT au_fname, au_lname -Sservername - Uusername -Ppassword Két qua thye hién: Noi dung t4p tin Authors.txt Abraham — Bennet Reginald —_Blotchet-Halls Cheryl Carson Michel DeFrance Innes del Castillo Ann Dull Marjorie Green Morningstar Greene Burt Gringlesby Sheryl Hunter Livia Karsen 113 Charlene Locksley Steams MacFeather Heather — McBadden Michael O'Leary Sylvia Panteley Albert Ringer Anne Ringer Meander Smith Dean Straight Dirk Stringer Johnson White Akiko Yokomoto Mét sé tham sé co ban: - Out: Copy toan bé mét Table hode view ra tap tin, = Queryout: Copy tp dit ligu duge truy van theo edu Ignh. Chi ra ring cdu Ignh ding kigu ky ty 4@ phan dinh cdc o6t, néu khong chi thi cau Iénh ty nh§n tab (\t) dé phan dinh va ding new line dé xuéng dong méi. Ca phap Ignh Bulk Insert. Lénh Bulk Insert gan giéng lénh bep nhung Bulk Insert chi str dung dé nhap di ligu vio SQL Server (Insert), Ifnh nay duge thyc hign bing SQI Query Analyzer. Cui php chung: BULK INSERT [ [ ‘database_name',] [ ‘owner' }.] { 'table_name' FROM ‘data_file' } [ WITH BATCHSIZE [, ]CHECK_CONSTRAINTS ] [, ] CODEPAGE [ ='ACP' | ‘OEM' | 'RAW' | 'code_page' ]] [, ]DATAFILETYPE [ = [ = batch_size ]] [ [ C 114 { ‘char' | 'native'| ‘widechar' | 'widenative' } } ] ] FIELDTERMINATOR [ = 'field_terminator' ]] ] FIRSTROW [ = first_row ]] |] FIRE_TRIGGERS ] ] FORMATFILE = 'format_file_path' ] ] KEEPIDENTITY ] ] KEEPNULLS ] ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]] ] LASTROW [= Jast_row]] | MAXERRORS [ = max_errors ]] ] ] ] ] ORDER ( { column [ ASC | DESC ] } [..2])] ROWS _PER_BATCH [= rows_per_batch ]] ROWTERMINATOR [ = "row terminator’ ] ] CL CC CL [L CC {L {L {L (L {L (L (L [{,] TABLOCK ] Vi dy thye hign copy tod b9 dir ligu tp tin newpubs.dat vio bang publishers? (bang nay aa cé cau tric tuong tng), tp tin kiéu ky tu, ngan cach gitta céc cot a phiy *,’, xudng dong méi bing ky ty “\n’ (xuéng ding duéi va chuyé dong) BULK INSERT pubs..publishers2 FROM 'c:\newpubs.dat! WITH ( DATAFILETYPE = FIELDTERMINATOR ROWTERMINATOR = DETTACH VA ATTACH CO’SO DU’ LIEU. Mye nay sé noi vé ky thuat hay va ndi ghép tap tin CSDL vi Server. Gia str ban da cé céc tap tin ctia CSDL (g6m tap tin dit ligu va nhét ky c6 thé duge copy tir vj tri khac). Copy tap tin cia CSDL. Trude tién ta xem ky thuat copy cde tap tin CSDL sang mét vi tri khde (ma gidt vj tri), sau khi copy sang vj tri khac ban cé thé str dung sang Instance mdi. Cae buée thye hign nhu sau: - Stop dich vy SQL cia Instance c6 CSDL. 115 - Copy cdc tap tin cla CSDL sang vi tri can thiét. - Start dich vu SQL ctta Instance dé Dettach co sé dé ligu. tuc lam vige. La bude thye hién tach CSDL khéi Instance, inntance khéng quan ly CSDL nhung khde véi xéa CSDL a cdc t4p tin chita CSDL vin edn. - Chon CSDL can dettach. -> All tasks > Detach Database Bi Fie Acton View Toole Wind Heb OS @ + AGO OS eeeietot Bess Sg mer sass ooze i 8 o Oi Rrenpenzo undns x os DP Aoaten vate u Daren 2 RS rns ae EmatDea. Be tewvieintontne Ba amas oa = Sora So we GP sasens be ————— — Bere Dain ‘oral Alestore Detabese. ie Shirk Dats seer - Nhan Ok. ea Detchte denace on to saver othe cata ee canbe el eeerede ee ete eotetetecer Debate sae Cormac sing is dove Daldbae berate: STATUS, Thedasbave keane be tached Oc ene 7 Sia ata sea 116 Attach tp tin CSDL vao Instance. Mye nay gidi thigu ky thuat ghép ndi tap tin CSDL vao Instance, li bude tiép theo cia cde bude Copy va Detach. Cae bude thye hign nhur sau: - Chon Instance cin Attach CSDL -> Databases -> all tasks -> attach database... - Chon nit browse (...) cena eee nD MDF feof databace to alias (Pagal Neva) [Eine Fi Coeaton LTV Data MOF Wj CNDaeaOLTY Data LTV Loo OF Hi CXDaa\OLTY_LookOF ‘ alech at Speci detabose cme - Chon tp tin mdf ciia CSDL can attach, - Dt tén CSDL. - Xée dinh User owner. - Ok. IMPORT VA EXPORT CO SO’ DO LIEU. Phan nay sé trinh bay ky thuat nap va xudt dir ligu tir CSDL véi cde hg quin tri CSDL khéc hoc Instance, CSDL khédc cita SQL Server. Import — Nh§p dit ligu. Ding nhap dit ligu tir ngoai vaof CSDL tir h€ quan tri CSDL khée hode CSDL khac cia SQL Server. - Chon Databases -> All tasks -> Import Data, 117 By Fie Acton Vinw Tok Window Hels = hy zsERICONCDO Gn Bans 2 Om em New oO Se Pe | ah = BY G New window ree Hose: Sania = Data ne Gonsrate SOL Sci. oan = Cate Ose Servens Gog sere aap ies Fepcaon Colic - Next > Chon Data Source (Co thé la SQL Server, Oracle, Access,...), trong vi dy minh hoa chon Access. - Chon tp tin (file name) -> Next io ae Choose a Data Source For hte docx wart to cpp dea? You can cep dle one ol he tatewrgceese DaaSeuce ional Acces “ocowcl ele 2 dbase ad cvide aura rane and parvo. “Youimay ed eaesiy advarced coon. lene: [Cora EFHENVDocrmmwtSBUDPOE [] Ubemare It peer - Chon Instance cin chuyén dit ligu vao, user name., ten CSDL (cé trude hoac tao tai thai diém nay bang cach chon New) -> Next 118 [Choose a destination Tet db vane ace cas? You eo ead wel aang Deshi [Weve 08 Ponder AL Seve To.ornest in isesl'SOL Seal, jou et pec) th ere use name aidoassnnd Boner emvensooneno 7 Use ane attention Use SQL Seva: uthenaton denne: ee Restor [IP BHo =] _ Beth | ator con [Tues] oe | ep - Chon cach chuyén toan b6 bang dit ligu hay thong qua cau Iénh truyén van (trong vi du minh hoa chon bang dit ligu) -> Next io ae Specily Table Copy oe Query ‘Speciymetherts cory one ore tables /vews ete esol ect hom tedsieauce. Mice ccees Mesceet SOL server 6 nian) iis as hab © Ue amyl speci te dato baste - Chon cae bang, khung nhin can Import (c6 thé Iya chon mét s6 chtre nang khdc cy thé hon, ban doc ty tim hiéu), tén cde bang, khung nhin ctia SQL Server nhn dir ligu -> Next. 119 Mee Seleet Source Tables ond Views “eu can shosse rect mae tes mss comm. Yau cn eeyheccher ape nibarouesetcce(-Neeawomie conus “Tab ade (sence Desiaion Tae a Aes (Bese) Pua 2 BB Pilih (Bb te] Fused BB Wester labial sare a a saeent | Beniesrat | von ret | _ Heo - Chon chite ning thy hign ngay hay theo lich -> Next -> Finish Save, chedule, ard vepicate package Spo yaanteswedieOTS page You roy aor datser ‘hms te pactage be omcuel sls Bertie See Drs Packoge peck [Tes] coca ap - Xem théng bdo sau khi chuyén -> Done 120 Eames 5 Mirowt SOL Serr Cite Table [bo (bo) Yau] Stan Cen Dea tem Autre ible (abo uihos Stes Cate Tate | (buble Step Cony Daa tom Pubkners to bh} [bo] Pub shes] Sep ste Table 8 [ol [ee ue Step op Daa tie Tile utero ble [bo] ite Autor St Cate Table bi bl THes] een EXPORT - XUAT DU LIEU. Cowes Cet 178) Comets Complete 57 Compete Compt 245) Comeite fe Phan nay gidi thigu ky thuat xuat dit ligu ter mot CSDL cia SQL Server ra m6t hg quan trj CSDL khac hofe mt CSDL khac ciia SQL Server. Tuong ty nhu Import nhung Export thy hign Data Source la SQL Server, con Destination la hé quan tri CSDL khac hoic CSDL khac cia SQL Server (phan nay ban doc ty xem xét). Choose 2 Data Source Fo deo ou cy ata aca copy dao ove the Febobagcoucee Dassonce [9 Micciok DLE DE Powter SOL Saver Brees tetsu sever [SEREADONSDD © Ure udons htieeaion & Von) Saver Aulteticaion seman: fe | cq Tosca ioe $0L Sova. rua padi fw mei ne omese — [SERE =] Bete | _avaest [oe ae | ere | ae 121 SAO LUU, KHOI PHUC DU’ LIEU Chuong nay sé gidi thigu ky thuft sao liu (backup) va kh6i phyc (restore) dit ligu, 1a ky thuat thuong duge sir dung bao dam an toan dit ligu phong truéng hop CSDL bj hong, nhat ky dir ligu. Chire nang nay duge thye hign bing 2 phuong phap: Bang céng cy va cau lénh T-SQL. NHU’NG LY DO PHAI SAO LUU VA KHOI PHUC DU LIEU. CSDL SQL Server thi m6t s6 nguyén ky thuat sao uu va khéi phye dit ligu: Trong qué trinh thye hién quan nhan sau day bat budc ban phai xem xét + O dia bj hong (chita cdc tap tin CSDL). + Server bj héng. + Nguyén nhan bén ngoai (thién nhién, hoa hoan, mit cép,...) + User v6 tinh xéa dit ligu. + Bj v6 tinh hay cé y lam théng tin sai Ig i hack. CAC LOAI BACKUP. Backup dit ligu trong SQL Server gdm cdc logi sau: + Full Database Backups: Copy toan b§ CSDL (céc tp tin bao gdm céc bang, khung nhin, cdc déi tugng khac). + Differential Database Backuy file ké tir lin full backup gn nhat. Copy nhimg dit ligu thay déi trong Data + File or file group backups: Copy mét file don hay file group. + Differential File or File Group Backups: Thyc hign nhw Differential Database nhung copy phan dit ligu thay d6i cua file don hode file group. + Transaction log backups: Ghi nhan tat cd cdc transaction chita trong transaction log file ké tir Kin transaction log backup gin nhdt. Véi logi sao lu nay ta cé thé khéi phuc dit ligu tai m6t thoi diém. 122 CAC MO HINH PHC HOI DU LIEU. + Full Recovery model: La m6 hinh phyc hdi toan b6 hoat déng giao dich cua dif ligu (Insert, Update, Delete, hogt déng béi Iénh bep, bulk insert). Voi mé hinh nay ta cé thé phye héi dé ligu tai mt thoi diém trong qué khir da duge Iu trong transaction log file. + Bulk-Logged Recovery Model: M6 hinh nay duge thye thi cho cdc thao tae bep, bulk insert, create index, writetext, updatetext, cdc hoat dng nay chi nhat ky sut kign vao log dé biét ma khOng sao luu toan b6 dit ligu, chi tiét nhu trong full recover. Cac sy kign Insert, Update, Delete vin duge nhat ky va khéi phye binh thudng. + Simple Recovery Model: Voi mé hinh nay ban chi phyc hai lai thoi diém backup gan nhat ma khéng theo thoi diém khéc trong qua kh. Cach dat mé hinh khéi phye: - Chon CSDL. - Nhan nit phai chu6t -> Properties -> Options -> Recovery Siitaons Gener | D2 Fles| TracocionLog| Fhyroupe Opin | Pmsisons esses 1 Resiet accest (at ee 1 Recunie mger PAu shin I Palo update attics Patocreste tats I Tor pace detection FP Use questa Conpaiy Love [Dstsbor earpatiiy ve a Xét vi dy sau: Gia sit ta cé mot CSDL duge backup theo chién luge nhu hinh vé: Log bacane! y 6B 666 6 sunday | Monday | Tuestay |Wednesday} Thursday | \ét saturday ” a Ful Diferential Differential database satabase database backup back backup Nhin hinh trén ta thay CSDL duge lap lich Full Database Backup vio ngay cha nhit, Differential Database Backup vio ngiy thir ba va thir nam, con Log Database Backup vao 5 ngay trong tun, ngay thir sau c6 sy cb voi CSDL data file bi hong, dn dé dat ra 1a phai phuc hdi dir ligu va CSDL hoat dng binh thudng. Ta phai im cae bude sau + Thc hign Backup log file (gia sit log file khong bi hong). + Khoi phuc Full Database cua ngay chi nhit. + Phuc hdi Differential Database ciia ngay thir nam. + Khéi phue Transaction log backup ngay thir nam, SAO LUU CO’SO DU LIEU - BACKUP DATABASE. Truée khi xem xét ky thuat sao luu CSDL, ta théng nhat mt s6 thuat ngit bang tiéng Anh nhu sau: + Backup: La qué trinh copy toan bé ho&c mét phan database, transaction log, file, file group thanh lap mét backup set duge chita trong backup media (disk hode tape) bing cach sir dung mét backup device (tape drive name hojc physical filename). + Backup Device: Mét file vat ly hoc mét drive tape. 124 + Backup file: Mdt file chita Backup set. + Backup media: LA Disk hodc tape. + Backup set: M6t b6 backup mot lin backup don chita trén backup media. Cée bude thye hign backup nhu sau: - Chon CSDL can backup. - Nhan phai chudt -> All Tasks -> Backup Database... eee Ger | Open | Te Hone pmo | CC — ¢ panacea © Daigo ifs © eosisger Dinan (© etuie exing media Mr sche rs [52] ae ee - Nhap cae tham sé, Iya chon kiéu. KHOI PHUC DU’ LIEU — RESTORE DATABASE. La chite nang thye hign khéi phye dit ligu da sao uu, tiy theo chién luge backup ma ban cé thé phuc héi dén thoi diém nao, thu duge b6 dit ligu trong qua khir nhu thé nao, Khdi phye dit ligu duge thye hign theo thir ty backup, thong tin nay duge hru trit trong msdb Céc bude thye hign nhu sau: 125 - Chon muc Databases -> Nhan nit phai chuét -> All Tasks -> Restore Database... - Nhjp tham sé, chon mé hinh khéi phyc. 126 PHAN QUYEN, BAO MAT Chuong nay sé gidi thigu ban doc ky thuat phan quyén, quan ly nguéi ding, dat céc mite bao mat cho CSDL. CHE BO BAO MAT - SECURITY MODE. Nhu da gap trong phan cai dit SQL Server, SQL Server c6 2 ché d6 bao mat: + Windows Authentication Mode (Windows Authentication) + Mixed Mode (Windows Authentication and SQL Server Authentication) Windows Authentication. La ché 49 bdo mat ma nhing User truy nhap SQL Server phai la nhig User ctia Windows. Khi Server dat 6 ché d@ bao mat nay, nhimg User phai la nhimg User duge Windows quan ly méi duge truy nhap. ‘windows NT comaindees! seeunity windows NT computer-level ssuurity SQL Server oan’security a @ & and permissions Nhin trén hinh ta thay khi thye hign ché d6 nay ngudi str dung muén khai thac SQL. Server phai théng qua 4 bude xéc thyc (1- Domain, 2- Computer, 3- SQL Server, 4- Database). SQL Server Authentication. 127 Khi thiét lap 6 ché d6 bao mat nay, nhimg User duge quyén khai thac phai la nhimg User do quan tri SQL Server tao ra, ma nhiing user cia Windows khong duge khai thédc. Tuy nhién, SQL Server cho phép thiét lap hai ché 46 Windows Authentication Mode (Windows Authentication) va Mixed Mode (Windows Authentication and SQL Server Authentication), ché 49 Mixed Mode Ia su két hop cia Windows Authentication va SQL Server Authentication, & ché d6 nay cd user clia Windows va SQL Server dé cé thé thiét lap dé truy nhap SQL Server. SQL Server Secutty Decision Tree Tethentien [Connect hed Tomecionscceaer) LbsGL Save. | maa Ene, Dat ché dd. - Nhan phai chuét chon tén Server (Instance). - Chon Properties. = Chon bang Security. 128 penned sererSetras | Osiabae Setinas | fetes | Actie Oretan | Geral | Mevoy | Rosner — Seasty | comecionr | © Estas © Spon cal -Siaiup sowes ecaunt 4 Stan and un SOL Sevverinthelbowing account © sytem acoret © Thr account i ance Halo - Chon ché d6 bao mat -> Ok SERVER ROLE, DATABASE ROLE. Role la déi tugng xac dinh nhom thuéc tinh dé gan quyén cho cac user tham gia khai thac SQL Server. Server Role. Nh6m cde quyén thye hién quan tri hé théng, gm cdc nhém sau: + Bulk Insert Administrators: Duge phép thyc hién Bulk Insert. + Database Creators: Duge phép tao va stra d6i cdu tric CSDL. + Disk Administrators: Cé thé quan trj céc file trén dia. i dich vu dang chay ctia SQL Server. + Proccess Administrator: Quan tr} + Security Administrators: Quan tri hg théng bao mat, + Setup Administrators: Quan tri cdc thi tue mé rong (xp_). 129 + System Administrators: Quan tri hé thong SQL Server. Xem cy thé nhu sau: - M6 rong Server (nhan dau ‘+’ phan tén Server). - MérOng Security. - Chon Server Roles: Gore [premn tarde pat Con pr ny athe veri 2 a Sqraesevies 2 anata Sess Database Role. Role la déi tugng ma théng qua né ngudi quan trj cé thé gin quyén khai thac cho ngudi sir dung. Role do CSDL quan ly, khi tao CSDL hé théng ty dat mot sé Role ngam dinh. NN NTE a Nguoi nhimg Role ngam dinh ta cé thé tao Role méi. Tao Role theo céng cu. - Chon Roles trong CSDL -> Nhin phai chugt -> New Database Role. - DAt tén, chon user (chon user c6 thé Lim sau). - Nhan Ok. Sau khi tao xong, thye hign gin quyén khai thic cho Role. - Chon Role can gan quyén, Fee | Bom Saige scot er ‘eaten © sss Se Gi. SUL Sve one slag der Stearns rd Stole aches abn - Chon Permissions... - Dat cdc quyén cho timg déi tugng trong CSDL. cca Parison | Bp rvs 6 tieatiece (7 Leto) es prsine a tere [SELECT [NSEAT [UPDATE [OELETE [exec [oal [= er 2 oso a cae Néu chon quyén nhin 6 chon xuat hign déu chon mau xanh, néu cm nhin 6 chon xuat hign dau mau dd. Cé thé at quyén khai théc d4i véi role cho timg c6t cia bang dit ligu. Moi thao tac x6a, stra duge thye hign nhu cae déi tugng khac. Tao theo edu lénh. Sir dung cau Iénh sp_addrole [ @rolename = ] 'role* [. [ @ownername = ] ‘owner’ | Vi dy: Thém Role cé tén Managers: EXEC sp_addrole 'Managers' QUAN TRI NGU’O1 DUNG. Nguoi ding trong SQL Server duge chia thanh 2 mire: Ngudi truy nhap vio SQL Server goi l Login, ngudi khai thic CSDL goi li User. Login. La déi tugng duge quyén truy nhap vao SQL Server, tly theo ché 46 bao mat cia SQL Server ma nhiing login 1a account cia Windows NT hay cia SQL Server, login do Server quan ly tryc tiép, Tao bang céng cu. - Chon - Nhan phai chuét -> New Login... ing Security cua Server -> Logins Stee eee Get | Seve Rides | Db dec | Q— Auantiain | © Window Athenian S01 Sever duthentoaton Parma Default Spaciy he dla arguage an dabei log Daiabace: Frater Lenguace: Froeteut OF - Nh§p cdc tham s6: Néu chon Account ctia Windows NT thi ban cé thé chon trong danh sch. Néu tgo login cia SQL Server thi ban nhgp tén mi, mit khau, chon login thugc server role nio, cé thé gan quyén truy nhap khai thac CSDL nao Tao bang céu lénh, Sit dung cau Iénh sp_addlogin [ @loginame = ] '/ogin' [ @passwd = ] ‘password ] [. [| @defdb =] database’ | [. [@deflanguage =] Vanguage' ] »[ @sid =] sid] » | @encryptopt = ] ‘encryption option’ | Vi du: Tao login cé tén ‘Albert’, mat khau ‘corporate’ EXEC sp_addlogin 'Albert', 'food', ‘corporate! Moi thao tac sita, x6a duge thy hign nhu cdc d6i tugng khdc. User. ‘User 1a d6i tugng khai thac CSDL, néu login chi xdc dinh truy nhap vao SQL. Server thi User la login ID tham gia khai thac CSDL, user do CSDL quan ly true tigp. - Chon CSDL -> users - Nhan phai chugt -> new user... New User Geral | (Boer eS ns Detabae le mrtg E Fi actin aucun Donen eros aeeee tea [E tcsmectoeste Dh devecatawiier - Chon Login, nh§p user name, chon ole ma user thuge >Ok Cac thao tac xéa, sita thye hign nhu cdc déi tugng khdc, dé gan quyén cho user ban c6 thé chon lai user vita tao cho CSDL sau dé vao nhan vio Permissions. 134 NHAN BAN D@ LIEU Chuong nay ban sé gidi thigu véi ban ky thudt lim giim liu lngng dit ligu giao dich véi SQL Server khi da cau hinh nhiéu Server trén mang. GIO! THIEU VE NHAN BAN DO LIEU. Nhan ban di ligu tén tiéng anh goi la Replication, 1a céng cy duge str dung copy mt ho§e nhigu CSDL dén mt hoge nhiéu server (SQL Server) khéc, cde Server duge dit trong mang may tinh ngi b6 (LAN), ngudi khai thée 6 thé thye hign truy nhap dén CSDL cé trong Server duge chuyén dit ligu dén. Dat ligu gitta cae may duge thc hign déng b véi nhau theo lich hodc theo su kign, khi ed yeu cdu, Nhan ban dir ligu cé nhimg wu diém sau: + Dit ligu duge hu tri 6 nhiéu noi, higu qua trong viée co nhiéu img dung cing truy nhap, khai théc. + Thich hgp céc img dung phan tich dit ligu OLTP ciia DataWare House. + C6 thé khai thc dit khi khong két n + Giam thiéu xung khic do s6 lugng I6n cae giao dich trén mang, dén Server. + La m@t giai phap an toan khi Server bj Idi hodc bao dudng. Mé hinh nhfn ban. Dich vu nhan ban dit ligu gdm cdc thianh phan co ban sau: Publisher, Distributor, Subscribers, Publications, Articles, Subscriptions. s dit ligu nhan ban cho cdc server khéc. Mét publisher cé thé thiét lap nhiéu b9 dit ligu nhan ban (goi ld publication), Distributor: La server quan ly céc théng tin nhan ban, luu trit dit ligu trong cdc giao dich thye hign nhn va chuyén dit ligu tir Publisher dén cdc Subscriber. Remote distributor li server tach ri khéi publisher va duge cdu hinh Ia distributor. Local distributor la m6t server duge cdu hinh la Publisher va Distributor. Subscriber: La server nhan dit ligu nhin ban. Subscriber gin lién vi publication (la may chi nhin dir ligu nhan ban ctia mét b6 dir igu cdu hinh nhan ban). 46i tugng cla CSDL cau hinh dé nhan ban, Article: La mét bang, tap dit ligu ho’ Publication: La m6t tap gdm m6t hode nhiéu article. Subscription: LA mdt giao dich yéu cdu ban sao b9 dit ligu hode cdc déi tugng cla CSDL thyc hign nhin ban. Trong méi giao dich publisher thye hign diy (push subscription) dit ligu, subscriber thyc hign kéo (pull subscription). 135 ‘Custom ppleation Fupticher Fernote Distibutor Publication Database Distibution Database Subseaee Southwest Redon uibsetbar End Reale Gubsoror NNovthiweat Region ‘Subserition Database Subscription Database Subscrptisn Detabase Nhan ban dit ligu duge thye hign theo nhtmg mé hinh co ban sau: + Central Publisher: La mé hinh Publisher va Distributor thiét 14 Gém cae m6 hinh sau: trén mot may. - M6t Publishers va m6t Subscriber: Publisher and Distributor ‘subscriber - M6t Publisher va nhiéu Subscriber. Publisher and Distributar Ge - Publisher va Subscriber duge thiét Ip trén mot may: Server A fublshies pueation 4 Subscribes to pubeaten 2 server 8 Pubiates puoieen 2 + Publisher va Distributor khong thiét Idp trén mét may: Publisher Distributor aw + Republisher: La m6 hinh Publisher xuat ban dit ligu dén Subscriber, sau dé Subscriber duge thiét lap la Publisher xut ban dir ligu dén Subscriber khac. Slow (or sxpansica) network link: Publishing Subscriber Duong truyén gitta hai may duge thiét lap 1a Publisher cé thé téc 46 tha phi hop véi vj tri xa nhau, Vi dy mé hinh gitta cde ving céch xa nhau: oslo Subscriber London =7 “Publishing 277 subscriber Paris subscriber New York Subscriber Lishon ‘subscriber ‘entral Subscriber: La m6 hinh Subscriber thiét apn nhan dit ligu xuat ban tir nhiéu Publisher. Publishers S subsérlber Nhirng kiéu nhan ban dé ligu. C6 3 kigu nhan ban dit ligu Snaphot, Transaction, Merge. Snapshot replication: La kiéu nhan ban thye hign sao chép, phan tén dit ligu hode cae d6i tugng ciia CSDL tao mét thoi diém. Snapshot thuéng duge str dung cho nhiing tinh hung sau: + Dit ligu thuéng [a tinh, it thay déi. + Nhan ban sé lugng dit ligu nho. Distibution database ( sep Dats or transactions Se Hitry and arr \._Distuibuior Transaction replication: La kiéu nhan ban ma bat dau bang nhan ban snapshot, sau dé sé thye hign nhan giao dich dit ligu theo cde sy kign insert, update, delete va nhimg thay di lién quan dén thye hign stored procedure, index view. Nhan ban kiéu nay cho phép thyc hign loc dit ligu tai xudt ban, cho phép user stra d6i dit ligu nhan ban tai subscriber va chuyén dit ligu 43 stra d6i dén Publisher ho¥e Subscriber khéc, dit ligu sita di nay c6 thé coi 1a dit ligu duge xuat ban. Nhan ban kiéu nay duge thye hign khi + Muén sira déi dit ligu duge xuat ban chuyén dén Subscriber, thoi gian thyc hign theo gidy, hoge tite thei. _ + Can giao dich trén toin b6 hé théng nbén ban dir ligu (dir ligu 6 thé chuyén dén tit ca cde Subscriber hoc khong chuyén dén Subscriber nao). 139 + Subscriber thuéng xuyén két néi véi Publisher. Sidon |, apateaten ‘database Subsesiber pinup 1 ita data and cetera How ranean History and enor Merge replication: La kigu nhin ban dit tigu cho phép thye hign nbén sita di dit ligu trén nhiéu Subscriber, c6 thé két ndi (online) hoae khéng két ndi (offline) dén oe ital cata ana sxheme awe. New cata cnanges ESP History ant erste 140 Publisher. Dit ligu s€ duge déng b9 theo lich hod theo yéu cau, dit ligu cp nhat thoi diém sau sé duge chip nhan Kiéu nhan ban nay thye hign khi: + Nhiéu Subscriber cé nhu cdu cp nhat dit ligu va chuyén dit ligu cap nhat dén Publisher hode Subscriber khac. + Subscriber yéu cau nhfn hoac chuyén dit ligu khi offline, déng b6 dit ligu véi cdc Subscriber va Publisher sau. CAU HINH PUBLISHER VA DISTRIBUTOR. Trude khi thyc hign cdu hinh céc mdy thanh Publisher hay Distributor ta phai thye hign chay dich vy SQL Server Agant trong chite ning Service manager. cde bude cau hinh nhur sau: - Chon Server can cdu hinh -> Replication - Nhin phi chugt > Configure Publishing Subscription and Distribution... agar savers Presta soe eames) se "2B Ere wmtocma ee : gence oto OS se cmonm ees chara {Banton so pL Management ee , = Beran revise 2 tai 5 Sirie epee SB eta = Bicone - Thy hign thao cdc buée: Eiaranlisen nahi asta eaters seas oa 141 - Dat tn CSDL cia Distribution. nfiqure Publishing and Distribution Wirerd for SERVER: G Provide Disb OntaleaxeInfrmation ‘Select nae arclocalin ots dt ton taboo nd let The dttatn dtr sees charges asain pblesicrs uti Subs bes canbe visi has dares hrc rfomaien fo svencht aioe alco Dison daabit none [eso Fede fhe dbo dlabare te (CsProgan FlesW erect SOL Seren WSS0L\Dats Foe athe dee (CoPregan Fenivewsar Sal ServerWSSQL.Dam The paths rust tert dsks tow alto SERVER and beg «bel cve er end cle it eearele. 1 Maaoed dive sand reli pale ate va aves [ae] met | __ tee - Chon Server cau hinh thanh Publisher. Cine nna eons Enable Publishers rable server toiethie Dishbut ae tay ate configured ae Publisher “To sattha log rlemaicn and hang ets eraser. sett ardthan ack ha proarics (aon, epdtmd sever: ee itor DE New Publication... 143 + Thue hign theo cde buée: - Chon CSDL can xut ban dit ligu hodc déi tugng. - Chon kiéu nhan ban (trong vi du nay thue hién kiéu Merge) Eee) Select Publication Type ‘Sell the publics ie hates uppots be racuemens of your apeaton © snap eablicalion ~The Pht peicay epazee Subcibe de wt ‘update anapchet This aoproate Wer the Subasber data reod nat be emery plese (eign pict ata cece athe Pleo ry Sbecabei Changes ate eroednarnceal at ue Publser This spats able comers, comerled See - Chon phién ban SQL Server cua Subscriber. reseed Specily Subscriber Types ‘Wha typos Sts il subse to ts pts? Select a fhe per of Subsobathatjouetpelte subsite othe plan 7 Seve! conn SL Seve 200 1 Seceruoing SOL Sever ein 20 F Hierogencus data ses sucha: Oc Miase Aecesse revs nig fer yetronto| SUL Sere Subeerbrs that ae carves naming SL Server arson 70 comet urs pops thot 18 fee nS Sener 200 Myauceles! hi Susie pe, te ne popes nl abe Sra sn [ST] cee | tee - Chon Article tham gia Publication. 144 Speciy Ailee Inert waes shaw untied otete ‘raze the dso cies publ 2 le | ier iil Dala i » «tek (ie once Hep - Dat tén cho Publication. ‘Solect Publication Name and Descxintion @ ‘Seber Snare set detergent sles Bibicaiennane, z= °° ~ Pibiction decors - Két thie, TAO PUSH SUBSCRIPTION. Bude nay thye hign tgo tha ty dy nay) dén Subscriber, duge thye hi Peeermeneer besten ov dabaie her Publis SEVER F Latientleaton nee sete ‘The plea rw can conan ay chaacle excep! *I]'17<2 "200% fy (push) tir Publisher (Distributor trong vi trén Publisher. Cac bude thyc hign nhur sau: 145 = Chon Publication cia Publisher -> Nhdn phai chudt > Push new Subscription... - Chon Subscriber. (Chose Suberibere (Cote en o ete Subscibe o woune ol Sota Select anne mere Subserbers inthe eloublet Select acgeup rare to slat Siderbor thal ogy ‘Sustbrs = gma 3 Bsr G0 2 erst Sdeces Book [Hew Carvel Hsp - Chon CSDL trén Subscriber néu da c6, néu chua cé thye hién chon chic nang tao mdi. Bn Choose Destination Database Specie abscitondbskove a he SQL Serve Subse) ‘Sakcrption databace rane = _ fre i le The spectmd lave mut eri aac Sudzenber hen he subsp ino tock [Cue] _ Coens tt 146 - Chon lich thye hign déng b6 dit ligu. Set Distbution Agent Schedule Specly Foe hequerty he Caibhon Ape) ups the subsp ‘Whon shad he Distieuton Ager woe tho aubscction? ~ Coctuesh = povdes ran lerey beter un an acon occus aU Pubichas and wossoaedio lhe Senator Ua he flowin chee (Gear: cvew1cayal evan VFeafe/beween T20000SWad ——Charca rrssu0ra - Két thic. Sau khi thiét lap xong trén Subscriber sé cé CSDL theo tén di tao. TAO PULL SUBSCRIPTION. Buée nay thye hign tao cong cu kéo dit ligu nhan ban ti Publisher ve Subscriber, duge thye hign trén Subscriber. - Chon Subscription cia Subscriber -> Nhdn phai chugt -> New Pull Supcription. - Thy hign theo cdc buée: + Chon Publication 147 Choose Publication Thessethe publeten 6 tichycu war essen Sele ne ntti em oe the lla sever: "gh SERVER lag) SERVERSOONG00 esi Saver Exgerd 9 Pubdshero dips patbojcrscccessbe by he age used to cores to ‘SERVEANOONGOO and tee te sw sreruncut chee ct | _ ws - Chon Agent tham gia két néi Publisher. Speedy Semchvonization Agont Losin ‘Spry he og ney the yrelerston ogee carmen the Fuchher arabes The geehnoriesion spt oan boca 80 Say Age soon ent rroudedinthepibleson eects ths pubtesbon Uhenthe ager cannes tothe Fulah © Use SOL Save: Aortcatin i (|p Sree eee es trae athe aecoue helene piston acc it cack ie] coer | ues | 148 - Chon CSDL dich. Send Choose Destination Databere Choosetheeabaee a vAih I subtest ‘Sele the dts in hich erate he abst Noaivarsd oe - Thye hién tiép cdc bude va két thuc. Néu da tgo Push Subscription véi mOt CSDL sé khong duge tgo Pull Subscription véi CSDL 46. THYC HIEN DONG BOQ DU LIEU. Sau khi thiét lap theo céc m6 hinh nhan ban xong, ban cé thé thyc hién dong a ligu bang cécl - Thy hign theo lich. - Theo yéu cau: Chon Subscription (Push hoac Pull) -> Nhan phai chugt -> Start Synchronizing pbonilane Dige ats [eer [aabison0o — Sau Khi thye hign xong dit ligu sé duge déng bé gitta Publisher va Subscriber. Ngoai thye hign theo céng cy ban ¢6 thé tim hiéu thye hign nhan bin theo cau lénh T-SQL hoac Stored Procedure. 149 Phan 2. CAU LENH T-SQL Trong phan nay sé gidi thiéu c4u trac, ky thuat soan kich ban lénh T-SQL, d6i véi cdc hé quan tri CSDL Foxfro, Access thi cau lénh thyc hién truy van, khai thic CSDL 1d ng6n ngit truy vin SQL (Structure Query Language), cdc I¢nh duge thye hign theo timg cau lgnh ma khéng thy hign theo kich ban hoic theo tap hgp nhiéu cau Iénh v6i nhau. Déi voi hé quan tri CSDL Oracle thi ng6n ngit truy van dit ligu la SQL/PL (SQL Plus), con SQL Server ngén ngit ¢6 tén Transact-SQL viét tit 1a T-SQL. DINH NGHIA DU LIEU (DATA DEFINITION LAGUAGE - DDL). Phan nay sé xem xét cdc Iénh lién quan dén tao méi, stra déi, x6a cdc déi tugng lién quan dén Table, View va cdc déi tugng khac. Tao kiéu dir ligu moi. Tao kiéu dit ligu dang user-defined. Cai phap: sp_addtype [ @typename = ] he, [ @phystype = } system_data_type £ L@nulltype = | 'null_type" | [, [@owner =] 'owner_name' ] Vi du: sp_addtype ssn, ‘varchar(11)’, ‘NOT NULL’ Xéa kiéu dir ligu da tao. Ca phap: sp_droptype | @typename = ] "type" Vi dy: Sp_droptype ssn Tao rang bude (Constraint). Tao ring buge duge thy hign trong 2 cau Iénh Create Table hoge Alter Table: Check, Default, Foreign Key, Primary Key, Unique. 150 Xét mét sé vi du sau: + Tao mét Check. trong bang authors. ALTER TABLE authors ADD CONSTRAINT chau_id CHECK(au_id LIKE ‘[0-9][0-9][0-9]-[0-9][0-9}- [0-9][0-9] [0-9][0-9]") + Tao Check trong bang Publishers. ALTER TABLE publishers ADD chpub_id CHECK(pub_id IN (‘1389°, “0736", “0877’, ‘162°, ‘1756°) OR pub_id LIKE “99[0-9][0-9]") +Tgo ring bude Default, ALTER TABLE authors ADD DEFAULT ‘UNKNOWN’ for au_Iname + Tao ring budc Foreign Key. ALTER TABLE titles ADD CONSTRAINT FK_pub id FOREIGN KEY(pub_id) REFERENCES publishers(pub_id) + Tao rang budc Primary Key. ALTER TABLE authors ADD CONSTRAINT UPKCL_auidind PRIMARY KEY CLUSTERED (au_id) + Tao rang buge Unique. ALTER TABLE stores ADD CONSTRAINT UNC_name_city UNIQUE NONCLUSTERED(store_name, city) Xéa rang bude. Str dung Drop trong cc cau Iénh Create Table hoc Alter Table. + Vidu x6a Constraint sir dung cau Iénh Alter Table. ALTER TABLE authors DROP CONSTRAINT UPKCL_auidind Hién thi rang bude. sp_helpconstraint titltes Tao bang. Dé tao bang dit ligu c6 thé sir dung 2 cau Iénh Create Table hoac Select Into. bang tam thdi local (la bang chi hign véi phién hign thai, tén bing duge bat ing mét dau #) CREATE TABLE #MyTempTable (cola INT PRIMARY KEY) INSERT INTO #MyTempTable VALUES (1) + Tao bang tam théi global (hign vi tat ca cdc phién, tén bang duge bat dau bang 2 dau #). CREATE TABLE ##MyTempTable (cola INT PRIMARY KEY) 151 INSERT INTO ##MyTempTable VALUES (1) + Tao bang dit ligu. [sooo erent that rer kekrtrtet Jobs table ttrtrteee +/ CREATE TABLE jobs ( job_id smallint IDENTITY (1,1) PRIMARY KEY CLUSTERED, job_desc varchar (50) NOT NULL DEFAULT 'New Position - title not formalized yet', min_lvl tinyint NOT NULL CHECK (min_lvl >= 10), max_lvl tinyint NOT NULL CHECK (max_lvl <= 250) ) [J oodopOnoceooreoooOooEoce: employee table */ CREATE TABLE employee ( emp_id empid CONSTRAINT PK_emp_id PRIMARY KEY NONCLUSTERED CONSTRAINT CK_emp_id CHECK (emp_id LIKE, "[A-Z] [A-Z] [A-Z] [1-9] [0-9] [0-9] [0-9] [0-9] [FM] ' or emp_id LIKE '[A-Z]-[A-2] [1-9] [0-9] [0-9] [0- 9] [0-9] [FM]'), fname varchar (20) NOT NULL, minit char(1) NULL, lname varchar (30) NOT NULL, job_id smallint NOT NULL DEFAULT 1 REFERENCES jobs (job_id), job_1vl tinyint DEFAULT 10, pub_id char(4) NOT NULL DEFAULT ('9952') REFERENCES publishers (pub_id), hire date datetime Not NULL DEFAULT (getdate ()) ) [* SetboemomOne publishers table *** #/ 152 CREATE TABLE publishers ( pub_id char(4) NOP NUL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN ('1389', '0736', 'O877', "1622", '1756') OR pub_id LIKE '99[0-9][0-9]"'), pub_name varchar (40) NULL, city varchar (20) NULL, state char (2) N country varchar (30) NU: DEFAULT ('USA') ) Xéa bang. Sir dung Ignh Drop Table. + Xéa bang trong CSDL hign thoi: Drop Table MyTable + Xa bang trong CSDL khac. DROP TABLE pubs.dbo.authors2 Déi ten bang. Str dung tha tue sp_rename + Déi tén bang: Sp_rename titltes, books Sita cdu true bang. Str dung Ignh Alter Table. + Thém m6t c6t vio bang. CREATE TABLE doc exa ( column_a INT) Go ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL GO EXEC sp_help doc_exa co DROP TABLE doc_exa co + X6a m6t ct khdi bang. CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR (20) NULL) 153 Go ALTER TABLE doc_exb DROP COLUMN column_b Go EXEC sp_help doc_exb Go DROP TABLE doc Go exb Tao Index. Sir dung Ignh Create Index + Tao Index. SET NOCOUNT OFF USE pubs IF EXISTS (SELECT name FROM sysindexes WHERE name = 'au_id ind") DROP INDEX authors.au_id_ind Go USE pubs CREATE UNIQUE CLUSTERED INDEX au_id_ind ON authors (au_id) GO Xem théng tin Index. St dung tha tue sp_helpindex + Xem Index ciia bing authors. sp_helpindex authors X6a Index. Str dung Ignh Drop Index. + Xa Index cita bang authors. DROP INDEX authors.au_id_ind Tao khung nhin. St dung Iénh Create View. + Tao View. USE pubs IF EXISTS INFORMATION SCHEMA. VIEi WHERE TABLE NAME NAME FROM tles_view') 154 DROP VIEW titles view Go CREATE VIEW titles view AS SELECT title, type, price, pubd FROM tit] Go X¢a khung nhin, Str dung Ignh Drop View. + Xéa khung nhin. USE pubs IF EXISTS (SELECT TABLE NAME FROM INFORMATION SCHEMA. VIEWS WHERE TABLE_NAME = 'title DROP VIEW titles view GO Déi tén khung nhin. Str dung lgnh thi tye sp_rename, + Déi tén view. sp_rename titles_view, view_titles THAO TAC VOI DU LIEU (DATA MANIPULATION LANGUAGE - DML). Phan nay sé xem xét ce cau Iénh thao tac voi dit ligu nhu Insert, Select, Delete. Lénh Insert - Chén diff ligu vao bang. Su dung cdu Ignh Insert. + Chen dit ligu vao tat cd cdc c6t, theo thit te ctia trong bang. IF EXISTS (SELECT TABLE NAME FROM INFORMATION_SCHEMA. TABLES WHERE TABLE_NAME = 'T1") DROP TABLE T1 Go CREATE TABLE Tl ( column_1 int, column _2 varchar (30)) INSERT Tl VALUES (1, 'Row #1!) 155 + Chen dit ligu vao cdc c6t khong theo thie tu. IF EXISTS (SELECT TABLE NAME FROM INFORMATION SCHEMA. TABLES WHERE TABLE_NAME DROP TABLE T1 'T1') Go CREATE TABLE T1 ( column_1 int, column _2 varchar (30)) INSERT T1 (column 2, column_1) VALUES ('Row #1',1) + Chen dit liéu s6 gid tri it hon sé cét. IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA. TABLES WHERE TABLE NAME = 'T1') DROP TABLE T1 co CREATE TABLE T1 ( column_1 int identity, column_2 varchar (30) CONSTRAINT default_name DEFAULT (‘column default'), column_3 int NULL, column_4 varchar (40) NSERT INTO T1 (column_4) VALUES (‘Explicit value!) INSERT INTO T1 (column_2,column_4) VALUES ('Explicit value', ‘Explicit value') INSERT INTO T1 (column_2,column_3,column_4) VALUES (‘Explicit value',-44,'Explicit value") UBCT * FROM T1 + Chen dit liéu voi bang c6 c6t dit liéu IDENTITY. Vi dy sau s& thye hign chén dit ligu vio bang c6 ct kigu IDENITY, e6t 6 kigu IDENTITY sé ty dng gan gid tri khi hing méi dugc tao, nén ngudi nhip sé khong nhap vi sia d6i. Tuy nbién v6 thé st dung cdu I¢nh SET IDENTITY_INSERT dé nh§p gid tri. 156 IF EXISTS (SELECT TABLE NAME FROM INFORMATION_SCHEMA. TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 co CREATE TABLE Tl ( column 1 int IDENTITY, column 2 varchar (30)) INSERT Tl VALUES ('Row #1') INSERT Tl (column_2) VALUES (‘Row #2") SET IDENTITY_INSERT Tl ON INSERT INTO T1 (column_1,column_2) VALUES (-99,'Explicit identity value') uBCT * FROM T1 Lénh Insert - Chén dir ligu vao bang két hgp lénh SELECT. Cau Ignh nay duge thyc hign gan tuong ty nhu cau Ignh chén dtr ligu sir dung tir kha VALUES, nhung gid tri chén vao duge truy van tir cau Iénh SELECT. Déi vi cée c6t dit ligu c6 kiéu Nehar, Nvarchar hé try Unicode thi khi chén dit ligu truc tiép phai gan thém tién t6 N, vi dy Lname=N’John Smith’. + Chen di ligu duoc truy van tie cdc c6t trong lénh SELECT. USE pubs INSERT INTO MyBooks SELECT * FROM titles WHERE type = 'mod_cook' + Chen dit liéu dugc truy van tit mét sé cét. USE pubs INSERT INTO MyBooks SELECT title id, title, type FROM titles WHERE type = 'mod_cook' Lénh Update ~ Sita dit ligu. 157 Lénh Update str dyng stra dir ligu trong bang hoe View, xem xét cu phip théng qua ede vi dy sau. + Stea dit liéu sic dung lénh Update str dung ménh dé SET. UPDATE Northwind.dbo. Products SET UnitPrice = UnitPrice * 1.1 WHERE CategoryID = 2 Hodc gan gid tri tryuc tiép: UPDATE authors SET au WHERE au_fname "Annie! Hodc gan gid tri NULL cho mét cét. UPDATE publishers SET pub_name = NULL + Sita dit ligu sit dung ménh dé Where xéc dinh hang duege stva dit liu UPDATE authors SET , city = 'Bay City! 'CA' AND city = 'Oakland' + Sita dit liéu sic dung ménh dé From, sic dung thong tin tit m6t bang khac. UPDATE titles SET ytd_sales = t.ytd_sales + s.aty FROM titles t, sales s WHERE, e_id = s.title id AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales) Hode vi dy gid trj xdc dinh 1d ting tir bang khac UPDATE titles SET ytd sales = (SELECT SUM(aty) 158 FROM sales WHERE sales.title id = titles.title id AND sales.ord_date IN (SELECT MAX (ord date) FROM sales)) FROM titles, sales + Sta dit liéu si dung ménh dé Top, xac dinh sé lugng hang dau tién dugc sta dit lieu. UPDATE authors SET state = '22' FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS tl WHERE al hors.au_id = tl.au_id Lénh WriteText — Sita dir ligu Text, Image. Lénh WriteText duge sir dung cap nhat c6t c6 kiéu Text hode Image. Dit ligu kiéu Text va Image thuéng cé kich thuéc Ién, c6 thé dén Gyga byte, nén kim viée voi kiéu dir ligu nay phai str dung con tr. Dé str dung duge Iénh nay trude hét ngudi quan trj (Administrator) phai dat thugc tinh select into/bulk copy 8 true, thye hign dat nhw sau: USE master ‘pubs', ‘select into/bulkcopy', 'TRUE' Voi c6t dir ligu kiéu Text, Image ta c6 thé gin gia tri NULL hoje str dung cdc Iénh WriteText, Update Text dé gan gid tri, khi str dung cdc lénh trén, hang dir liu c6 c6t can chén da tn tai (khong déng thoi véi cu Iénh Insert), Riéng déi voi cét dit ligu kiéu Text ban cé thé sir dung Iénh thém dit ligu nhu cdc cét kiéu chudi khde nhung kich thude cia dit ligu t6i da chi duge 4096 ky ty. + Thue hid chen doan van ban vao cét dit ligu kiéu Text. DECLARE @ptrval binary (16) SELECT @ptrval = TEXTPTR(pr_info) FROM pub_info pr, publishers p WHERE p.pub id = pr.pub_id AND p.pub_name = 'New Moon Books! 159 WRITETEXT pub_info.pr_info @ptrval 'N Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!! Go ‘Xem vi du trén ta thay, dé chén dit ligu vio c6t Text hodc Image ta phai sir dyng con trd kiéu binary hoge varbinarry, con tr6 s8 duge xée djnh vao c6t text, image va hang tuong tmg da cé trong bang dit ligu, sau dé str dung Iénh WriteText 48 gan gid tri. Trong thy té khi thyc hién lénh nay ta thuong thye hign thong qua thi tuc luu trit cla CSDL, gid tri duge gén qua bién, Lénh WriteText thudmg duge sit dung khi c6t dir ligu 46 li NULL hode dé toan b6 dit ligu d4 6 (khong chén thém). L@nh UpdateText — Sita dit ligu Text, Image. Lénh UpdateText c6 chite nang thyc hign sita dit ligu kiéu Text, Image, tuy nhién UpdateText khéc WriteTex, UpdateText cé thé stta., x6a dit ligu theo timg doan hoe thém dit ligu vao phan dit ligu 44 6 cita ct dit ligu. + Cui phap chung: UPDATETEXT { table_name.dest_column_name dest_text_ptr } { NULL | insert_offset } { NULL | delete_length } [ WITH LOG ] [inserted data | { table_name.sre_column_name src_text_ptr } ] Trong a6: - Insert_offget: Xée dinh vj tri theo byte dit ligu s& duge dit vio hoge bat dau xda. - Delete_length: Xac dinh 49 dai dir ligu duge xéa tinh tir vi tri insert_offset. Viée chén, x6a, sita dit ligu duge diéu khién théng qua cdc tham si insert_offset, delete_offset, vi du mudn sta dir ligu, dau tién phai xdc dinh vi tri bat dau can sia dit ligu (insert_offset) va 46 dai dit ligu can siza, bat dau tir vi tri can x6a dit ligu méi s€ duge chén vao. + Vi du sita noi dung cét kiéu Text. 160 USE pubs Go EXEC sp_dboption 'pubs', 'select into/bulkcopy', ‘true! GO DECLARE @ptrval binary(16) SELECT @ptrval = TEXTPTR(pr_info) FROM pub info pr, publishers p WHERE p.pub_id = pr.pub_id AND p.pub_name = 'New Moon Books! UPDATETEXT pub _info.pr_ info @ptrval 88 1 'b' GO EXEC sp_dboption 'pubs', ‘select into/bulkcopy', ‘false’ Go Cursor - Diéu khién con tré. Cursor la kiéu bién xae dinh con tro cho mét tap dit ligu, 14 két qua clia cau Iénh Select. Cursor dugc két hop cing Iénh Fetch dé xac dinh vi tri hang trong tap dit ligu, Cursor c6 2 kiéu Cursor thong thudng va Scroll Cursor. Céc thao tae thye hign véi Cursor: + Declare: Khai bio. + Open: Mé con tré dé lam vige véi tap dir ligu. + Fetch: Dich chuyén vj tri hang trong tap dit ligu. + Close: Dong con tré. + DeAllocate: Giai phéng con tré. + Vidu siz dung Curcor, ligt ké danh sdch cdc hang ctia bang Authors. USE pubs GO DECLARE authors_cursor CURSOR FOR SELECT au_lname FROM authors WHERE au_lname LIKE "B%" ORDER BY au_lname OPEN authors cursor -- Perform the first fetch. FETCH NEXT FROM authors cursor 161 -- Check @@FETCH STATUS to see if there are any more rows to fetch. WHILE @@FETCH_STATUS = 0 BEGIN -- This is executed as long as the previous fetch succeeds. FETCH NEXT FROM authors cursor END CLOSE authors_cursor DEALLOCATE authors cursor Go + Vidu sie dung Cursor, gid tri c6t duge dua vao bién. USE pubs co Declare the variables to store the values returned by FETCH. DECLARE @au_lname varchar (40), @au_fname varchar (20) DECLARE authors_cursor CURSOR FOR SELECT au_lname, au_fname FROM authors WHERE au_lname LIKE "B&" ORDER BY au_lname, au_fname OPEN authors. ursor Perform the first fetch and store the values in variables. -- Note: The variables are in the same order as the columns -- in the SELECT statement. FETCH NEXT FROM authors_cursor INTO @au_lname, @au_fname -- Check @@FETCH STATUS to see if there are any more rows to fetch. 162 WHILE @@FETCH STATUS = 0 BEGIN Concatenate and display the current values in the variables. PRINT "Author: " + @au_fname + " "+ @au_lname -- This is executed as long as the previous fetch succeeds. FETCH NEXT FROM authors cursor INTO @au_Iname, @au_fname END CLOSE authors_cursor DEALLOCATE authors cursor Go + Vi du siz dung Scroll Cursor, con tré cho phép siz dung cdc phuong thitc: LAST, PRIOR, RELATIVE, ABSOLUTE. USE pubs Go -- Execute the SELECT statement alone to show the -- full result set that is used by the cursor. SELECT au_lname, au_fname FROM authors ORDER BY au_lname, au_fname -- Declare the cursor. DECLARE authors cursor SCROLL CURSOR FOR SELECT au_lname, au_fname FROM authors ORDER BY au_lname, au_fname OPEN authors_cursor -- Fetch the last row in the cursor. FETCH LAST FROM authors cursor -- Fetch the row immediately prior to the current row in the cursor. FETCH PRIOR FROM authors cursor 163 -- Fetch the second row in the cursor. FETCH ABSOLUTE 2 FROM authors cursor -- Fetch the row that is three rows after the current row. FETCH RELATIVE 3 FROM ai hors cursor -- Fetch the row that is two rows prior to the current row. FETCH RELATIVE -2 FROM authors ursor CLOSE authors_cursor DEALLOCATE authors_cursor Go Lénh Delete — X6a dir ligu. Sit dung Iénh Delete dé xa dit ligu, két hop cing diéu kién dé xéa mt hay nhiéu hang dit liu trong bang. + X6a tat ca cdc hang cia bang. USE pubs DELETE authors + Xda m6t tap cdc hang. USE pubs DELETE FROM authors WHERE au_lname = 'McBadden!' + X6a m6t hang ta vi tri con tré. USE pubs DELETE FROM authors WHERE CURRENT OF complex _join_cursor Trong vi dy trén con tré da duge mé cé tén complex_join_curcor. 164 + Xda cde hang dya vao lénh truy van khdc hodc lién két cdc bang. /* S$QL-92-Standard subquery */ USE pubs DELETE FROM titleauthor WHERE title_id IN (SELECT title id FROM titles WHERE title LIKE 'tcomputers’') /* USE pubs DELETE titleauthor FROM titleauthor INNER JOIN titles ON titleauthor.title_id = titles WHERE t LIKE ‘computer nsion */ id + Xéa dit ligu sur dung tir khéa Top. DEL authors FROM (SELECT TOP 10 * FROM authors) AS tl WHERE authors.au_id = tl.au_id Lgnh Truncate Table — X6a dit ligu toan bang. Tuong ty nhu cau Iénh Delete, Ignh Truncate Table sir dyng xéa dit ligu toan bang, thao tac nay giéng lénh Delete khi khéng cé diéu kign Where nhung lénh Truncate Table thye hign nhanh hon, TRUNCATE TABLE authors Lénh Go — Nhom Ignh, Ih Go khéng tham gia thao tae voi CSDL, lénh Go xdc dinh nhém cac Ignh véi nhau, nhém Iénh duge xéc dinh tir vj tri dau tién hodc tir tir 1énh Go trude d6 dén Iénh Go tiép theo, Khi gap Ignh Go nhém Iénh sé duge giti ngay dén SQL. Server dé thyc hign. 165 USE pubs co DECLARE @MyMsg VARCHAR (50) SELECT @MyMsg = 'Hello, World.' GO -- @MyMsg is not valid after this GO ends the batch. -- Yields an error because @MyMsg not declared in this batch. PRINT @MyMsg co SELECT @@VERSION; -- Yields an error: Must be EXEC sp_who if not first statement in == batch. sp_who co Contrrol-of-Flow - Diu khién lung. Tuong ty nhu céc ng6n ngi lap trinh thiét ké img dung, T-SQL cho phép thiét lap kich ban cau lénh, cho phép str dung cdc Iénh diéu khién khéi, ludng, vong lap, diéu kign, r8 nhanb,... Sau day 1a bang cde Iénh: Tir khéa Méta BEGIN...END Khéi Iénh GOTO Lénh nhay IF...ELSE, Lénh digu kign RETURN Thoat WAITFOR Che thy hign 1énh WHILE..BREAK..CONTINUE | Ving lip, thoat khoi vong lap, quay lai lap CASE Ré nhanh DECLARE, Khai béo PRINT In théng bao RAISEERROR Tra lai ma 161 EXECUTE (EXEC) Thye hign Iénh 166 TRUY VAN DU’ LEU. Trong trude ta di xem xét nhiing cau Iénh thao téc véi dit ligu nhw Insert, Update, Delete, phan nay ta s& xem xét cdc edu Ignh khai thée truy van dit ligu nhu Select, cde phép Join,... L@nh Use - Chon Co sé dit ligu. Su dung Ignh Use dé chon CSDL trong kich ban cdu lénh. Use Pubs Select - Truy van tat ca cdc cOt tir mdt bang, Lénh Select duge sir dung truy van dir ligu tir m6t hode nhiéu bang, tir khung nhin, két qua dua lai mét tap dit ligu gdm cdc hang, c6t. USE Northwind Go SELECT * FROM Shippers Go Order by - Truy van sap xép danh sach theo thir tu. ASC la sap xép ting, DESC la sap xép gidm, khi xdc dinh sip xép ting ban co thé khong can dat tir khoa ASC ma hé théng ty xac dinh la ASC. USE Northwind Go SELECT * FROM Shippers ORDER BY CompanyName DESC Go Truy van m6t s6 e6t, xae dinh thir ty cac eft. 167 USE Northwind co SELECT OrderID, ProductID, UnitPrice, Quantity Discount FROM [Order Details] ORDER BY OrderID ASC Go én cde edt khi truy van. USE Northwind Go SELECT OrderID as [Order ID], ProductID as [Product ID], UnitPrice as [Unit Price], Quantity, Discount FROM [Order Details] ORDER BY OrderID ASC Go Lénh Case - Phan lép dit ligu. Case a cu Ignh ré nhanh, thudng duge sir dung phan [dp dit ligu trong cau énh Select. Vi du str dung Iénh Case don gian: USE pubs Go SELECT Category = CASE type WHEN ‘popular _comp' THEN 'Popular Computing’ WHEN 'mod_cook' THEN 'Modern Cooking! WHEN 'business' THEN 'Business! WHEN 'psychology' THEN 'Psychology' WHEN 'trad_cook' THEN 'Traditional Cooking' ELSE 'Not yet categorized’ END, CAST(title AS varchar(25)) AS ‘Shortened Title', price AS Price FROM titles WHERE price IS NOT NULL 168 ORDER BY type, price COMPUTE AVG(price) BY type co Vi du str dung Iénh Case tim kiém: USE pubs co SELECT "Price Category! = CASE WHEN price IS NULL THEN 'Not yet priced! WHEN price < 10 THEN 'Very Reasonable Title! WHEN price >= 10 and price < 20 THEN 'Coffee Table Title' ELSE 'Expensive book!" END, CAST (title AS varchar(20)) AS ‘Shortened Title' FROM titles ORDER BY price co Ké&t qua thye hign nhu sau: Price Category Shortened Title Not yet priced Net Etiquette Not yet priced The Psychology of Co Very Reasonable Title The Gourmet Microwav Very Reasonable Title You Can Combat Compu Very Reasonable Title Life Without Fear Very Reasonable Title Emotional Security: Coffee Table Title Is Anger the Enemy? Coffee Table Title | Cooking with Compute Coffee Table Title Fifty Years in Bucki Coffee Table Title | Sushi, Anyone? Coffee Table Title | Prolonged Data Depri Coffee Table Title | Silicon Valley Gastr Coffee Table Title | Straight Talk About Coffee Table Title | The Busy Executive's 169 Expensive book! Secrets of Silicon V Expensive book! Onions, Leeks, and G Expensive book! Computer Phobic And Expensive book! But Is It User Frien (18 row(s) affe Dat tén cho cét. ‘Str dyng dau phy xac dinh tén c6t, t6i da 1a 30 ky tu. SELECT ‘sum’= SUM(ytd_sales) FROM titles Khi can thé hign dau phay trén gid tri hode tén cOt ta can str dung 2 dau lién nhau. Vidy ‘I don’’t understand.’ Chuii ky ty trong két qua truy van. Sit dung dau phay trong chudi ky ty. SELECT ‘The publisher’’s name is’, publisher=pub_name FROM publishers Cae gid tri tinh toan dirge. Déi cdc kiéu dit ligu tinh todn duge sit dung cdc phép toan 4, -, *, /, %. SELECT title_id, ytd_sales*2 FROM t Truy van kiéu dir ligu Text, Image. Dé truy van dit ligu Text, Image c6 thé sir dung 2 lgnh Select hoge ReadText, Khi str dung Iénh Select dé truy van kiéu dit ligu nay thi chi uy van duge dir ligu c6 49 dai xdc dinh truée bang cau Ignh S SET TEXTSIZE 25 170 SELECT pub_id, pr_info FROM pub_info Ngim dinh kich thude sir dung cho truy van li 4096 (4K). Tir khéa Distinet — Truy van cae hang khac nhau theo Dé truy vin cdc hang dit ligu khac nhau theo c6t ta sir dung tir khéa Distinct, USE pubs SELECT DISTINCT au_id FROM titleauthor Xéc dinh bang trong ménh dé From. USE pubs SELEC? p.pub id, p.pub_name FROM publishers p Ménh dé Where. Ménh dé Where xac dinh didu kién cdc hang dugc truy van, biéu thir trong ménh dé Where xée dinh theo biéu thite logic. Céc phép toan, cau Ignh xéc dinh gm: - Cée phép toan so sinh: =, >, <>, !<, >. - Tit khéa xée dinh pham vi: Between, Not Between. - Danh sich: In, Not In. - Theo mau dinh dang: Like, Not Like. - Gi tri NULL: Is Null, Is Not Null - Cée phép toan logic: And, Or. + Tit khoa Between: SELECT UnitsInStock, ProductID, ProductName 171 FROM Northwind.dbo. Products WHERE UnitsInStock BETWEEN 15 AND 25 ORDER BY UnitsInStock + Tit khéa Not Between. SELECT UnitsInStock, ProductID, ProductName FROM Northwind.dbo. Products WHERE UnitsInStock NOT BETWEEN 15 AND 25 ORDER BY UnitsInStock + Tit khéa In, Not In. USE pubs SELECT au_lname, state FROM authors WHERE state IN ('CA', 'IN', 'MD') USE pubs SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper < 50) USE pubs SELECT au_lname, au_fname FROM authors WHERE au_id NOT IN (SELECT au_id FROM titleauthor WHERE royaltyper < 50) + Tit khéa Like. 172 Tir khéa Like duge str dung tuong ty nhu phép so sinh, phép Like duge thyc hién cho dit ligu kiéu chudi, phép Like duge xem 1a phép so sénh theo dinh dang cia chudi, vige dinh dang xc dinh theo mét sé tir khéa sau: % — Xéc dinh bat ky chudi ky ty nao hoe khong cé ky ty nao tai vi tri MOt ky ty bat ky nao do. [] Métky ty ndo 46 nim trong pham vi, vi du [a-f] [‘] Xé4c dinh mot ky ty khéng thuge pham vi ndo 46, vi dy [*a-f]. ‘Vi dy str dung tir khéa Like véi %: USE pubs Go SELECT phone FROM authors WHERE phone LIKE '415%!' ORDER by au_lname co Vi dy tu khéa Not Like voi % USE pubs CT phone FROM authors WHERE phone NOT LIKE '415%! ORDER BY au_lname Vi du sit dung tir khéa Like véi ménh dé Escape: Escape duge sit dung loai bé mot ky ty hoc chudi khdi phép so sdnh. USE pubs Go IF EXISTS (SELECT TABLE NAME FROM INFORMATION SCHEMA. TABLI WHERE TABLE NAME = 'mytb12') DROP TABLE mytb12 co USE pubs co CREATE TABLE mytb12 ( cl sysname ) Go INSERT mytb12 VALUES (‘Discount is 10-15% off") INSERT mytbl2 VALUES (‘Discount is .10-.15 off') Go SELECT cl FROM mytb12 WHERE cl LIKE '%10-15!% off%' ESCAPE '!' Go Vi du sir dung tir khéa Like véi []: USE pubs GO SELECT au_lname, au_fname, phone FROM authors WHERE au_lname LIKE '[CK]ars[eo]n! ORDER BY au_lname ASC, au_fname ASC Go + Gid tj NULL. Gia tri NULL duge nh§p bing céch dat ngim dinh hode gan theo cau lénh. Bé tim gid tr NULL trong bang sit dung tir khéa Is Null hoe Is Not Null. SELECT title_id, type, advanc FROM pubs.dbo.titles WHERE advance IS NULL 174 TAO BANG BANG LENH SELECT INTO. Lénh Select Into truy van dit ligu, dit ligu duge dua vao mét bang méi. Néu thuéc tinh select into/bulkcopy duge dat cé thé tao bang cé dinh, néu thuge tinh khong duge dat ta cé thé tgo bing tam thoi. SELECT Shippers.*, Link.Address, Link.C Link.Region, Tink. Po: code INTO NewShippers FROM Shippers JOIN LinkServer.DB.dbo.Shippers AS Link ON (Shippers pperID = Link.ShipperID) LENH COMPUTE BY. Khi thye hign véi cdc ham tinh toan SUM, AVG, MIN, MAX, COUNT thuéng duge str dyng véi céc ménh dé GROUP BY, COMPUTE BY (khéng ap dyng céc him tinh toan véi dit ligu kiéu Text, Image). + Su dung Group By: Tit khéa Group By duge str dyng nhém theo cét, c6 thé két hgp cae ham tinh toan, USE Northwind SELECT OrdD.ProductID AS ProdID, SUM (OrdD. Quai y) AS AmountSold FROM [Order Details] AS OrdD JOIN Products as Prd ON OrdD.ProductID = Prd.ProductID AND Prd.CategoryID = 2 GROUP BY OrdD.ProductID + Ste dung ménh dé Compute: Tinh toan toan b6 gid tri. USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) 175 + Ste dung ménh dé Compute By: Tinh ton theo nhém (tuong ty Group By). USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) BY type TOAN TU UNION. Toan tir Union thye hign hgp 2 tp véi nhau, phép ton nay thyc hign chi iy dai dign khi cé hai hang cita hai tp trimg nhau. Gia str cé 2 bang dé ligu nhu sau: Table] Table2 | columna Columns Columnc column char (4) int char (4) int abe 1 ghi def 2 kl ghi 3 Imno Thye hign todn tir Union: SELECT * FROM Tablel UNION SELECT * FROM Table2 Két qua thye hign: ColumnA ColumnB abe def 2 ghi 3 jk 4 176 mno 5 Khi str dung tir khéa ALL ton b@ cdc hang cia hai tp dit ligu sé duge hop lai, khOng loai bé nhimg hang tring nhau. SELECT * FROM TableA UNION ALL (| SELEC UNION SELECT * FROM Table * PROM TableB Go St dung todn tir Union véi Select Into: USE Northwind IF EXISTS (SELECT TABLE_NAME FROM INFORMATION SCHEMA. TABLES WHERE TABLE NAME = 'CustomerResults') DROP TABLE CustomerResults co USE Northwind SELECT ContactName, CompanyName, City, Phone INTO CustomerResults FROM Customers WHERE Country IN ('USA', 'Canada') UNION SELECT ContactName, CompanyName, City, Phone FROM SouthAmericanCustomers ORDER BY CompanyName, ContactName ASC co TRUY VAN DU’ LIEU TU NHIEU BANG. Truy van dé ligu tir nhiéu bang duge xa dinh theo quan hé gitta cdc c6t cia cdc bang voi nhau. C6 thé truy van thong qua diéu kién lién két trong ménh dé Where ho§e ttr khéa Join. 177 Theo diéu kién lign két. Sit dung diéu kign lién két theo c6t gita cdc bang, théng tin can truy van duge dat 6 nhidu bang khac nhau, dé truy van duge cdc théng tin nhu trén phai xac dinh diéu kign lién két gitta céc bang. + Lién két bang nhau. SELECT P.ProductID, SupplierID, S.CompanyName FROM Suppliers AS 8, Products AS P WHERE S.SupplierID = P.SupplierID AND P.UnitPrice > $10 AND S.CompanyName LIKE N'F%! D6i voi cau lénh truy van theo diéu kién lién két noi trén, cdc hang chita gid Null cia c6t tham gia lién két sé khong duge ligt ké, cau Ignh nay tuong duong v6i Iénh Inner Join (sé xem trong phan sau). tri + Lién két khéng bang nhau. Lién két dang nay sir dung cdc phép toan so sénh >, >=, <, <=, >, >, !< USE pubs SELECT p.pub_name, p.st a te FROM publishers p, authors a WHERE a.s > p.st and p.pub_name = 'New Moon Books! ORDER BY au_lname ASC, au_fname ASC ) a-,au_lname, a.au_fname, + Tue lién két bang nhau. Tu lign két trong mot bang, cu lénh dang nay thudng duge sir dung trong vige xéc dinh nhing cp gid tri nio cdc cOt trong bang cé quan hé véi nhau theo ign két. 178 USE pubs SELECT aul.au_fname, aul.au_lname, au2.au_fname, au2.au_lname FROM authors aul, authors au2 WHERE aul.zip = au2.zip and aul.city = 'Oakland' ORDER BY aul.au_fname ASC, aul.au_Iname ASC + Tue lién két khong bang nhau. USE pubs SELECT aul.au_fname, aul.au_lname, au2.au_fname, au2.au_lname FROM authors aul, authors au2 WHERE aul.zip = au2.zip AND aul.city = ‘Oakland!’ AND aul.st. = 'caA' AND aul.au_id < au2.au_id ORDER BY aul.au_lname ASC, aul.au_fname ASC + Truy van dit liéu tir nhiéu hon 2 bang dit liéu. Truy van dang nay thyc hién diéu kign lién két theo timg cap cdc bang véi nhau. USE pubs SELECT a.au_lname, a.au_fname, t.title FROM authors a, titleauthor ta, titles t WHERE a.au_id = ta.au_id AND ta.title id = t.title id AND t.type = 'trad_cook! ORDER BY t.title ASC + Lién két ngodi trdi. Nhu nhimg diéu kign lién két noi trén, nhiing hang cé cét la Null sé khong duge dua ra tap két qua, cau Iénh lién két ngoai sé dua ra nhimg hang chita gid tri Null noi trén. Xac dinh lién két ngoai bang toan tir *, USE pubs SELECT a.au_fname, a.au_lname, p.pub_name 179 FROM authors a, publishers p WHERE a.city *= p.city ORDER BY p.pub_name ASC, a.au_iname ASC, a.au_fname ASC Bang authors sé dua ra cd nhimg hang c6 ct c6 cét city 1a Null, khi d6 chua co pub_name, két qua nhu sau: au_fname au_lname Reginald Blotchet-Halls NULL Michel DeFrance NULL Innes del Castillo NULL Ann Dull NULL Marjorie Green NULL Morningstar Greene NULL Burt Gringlesby NULL Sheryl Hunter NULL Livia Karsen NULL Charlene Locksley NULL Stearns MacFeather NULL Heather McBadden NULL Michael O'Leary NULL sylvia Panteley NULL Albert Ringer NULL Anne Ringer NULL Meander smith NULL Dean Straight NULL Dirk stringer NULL Johnson White NULL Akiko Yokomoto NULL Abraham Bennet Algodata Infosystems Cheryl Carson Algodata Infosystems (23 row(s) affected) + Lién két ngoai ph USE pubs SELECT a.au_fname, a.au_lname, p.pub_name FROM authors AS a, publishers AS p WHERE a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC 180 Két qua thuc hién: au_fname Abraham Bennet Algodata Infosystems Cheryl carson Algodata Infosyst: ULL NULL Binnet & Hard. NULL NULL Five Lakes Publishing NULL cece NULL Lucerne Publishing NULL New Moon Books NULL Ramona Publishers NULL Scootney Books Lénh Join — Truy van tir nhidu bang. Phan trén ta di xem xét ky thudt truy van di ligu tir nhiéu bang str dung diéu kign lign két, trong ty nhu cdc phép todn so sdnh, *=, =* SQL Server cung cap cau Iénh Join thay thé cdc phép todn néi trén. + Inner Join — Lién két trong. Thay vi xéc dinh diéu kign lin két trong ménh dé Where thi & day ta chi cin xdc dinh lién két trong ménh dé From. Lién két bang: USE pubs SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city = p.city ORDER BY a.au_lname DESC Lién két khong bing: USE pubs 181 SELECT p.pub_name, p.state, a.au_Iname, a.au_fname, a.state FROM publishers p INNER JOIN authors a ON a.state > p.state WHERE p.pub name = 'New Moon Books! ORDER BY au_lname ASC, au_fname ASC + Tu lién két trong bang. Ty lién két bang: USE pubs SELECT aul.au_fname, aul.au_lname, au2.au_fname, au2.au_lname FROM authors aul INNER JOIN authors au2 ON aul.zip = au2.zip WHERE aul.city = 'Oakland' ORDER BY aul.au_fname ASC, aul.au_lname ASC Ty lién két khong bang: USE pubs SELECT aul.au_fname, aul.au_iname, au2.au_fname, au2.au_lname FROM authors aul INNER JOIN authors au2 ON aul.zip = au2.zip WHERE aul.city ‘Oakland' AND aul.state = 'CA' AND aul.au_id < au2.au_id ORDER BY aul.au_lname ASC, aul.au_fname ASC + Lién két nhiéu hon 2 bang. USE pubs SELECT a.au_lname, a.au_fname, t.title FROM authors a INNER JOIN titleauthor ta 182 ON a.au_id = ta.au_id JOIN titles t ON ta.title id tle id WHERE t.type = 'trad_cook! ORDER BY t.title ASC + Lién két ngoai tréi - LEFT OUTER JOIN. Lién két ngoai trai tuong ty nhu phép toan *=. USE pubs SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_iname ASC, a.au_fname ASC + Lién két ngoai phaii — RIGHT OUTER JOIN. Lién két ngoai phai tuong ty nhu phép toan =*. USE pubs SELECT a.au_fname, a.au_inmame, p.pub_name FROM authors a RIGHT OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC + Lién két ngodi 2 phia~ FULL OUTER JOIN. La phép lién két trai hoc phai USE pubs SELECT? a.au_fname, a.au_iname, p.pub_name FROM authors a FULL OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC Két qua nhu sau: 183 au_fname au_lname pub_name Reginald Blotchet-Ha NULL Michel DeFrance NULL Innes NULL Ann NULL Marjorie NULL Mornings NULL Burt, NULL NULL NULL NULL NULL NULL NULL sylvia NULL Albert NULL Anne NULL Meander NULL Dean NULL Dizk NULL Johnson NULL. Akiko Yokomoto NULL Abraham Bennet Algodata Infosystems Carson Algodata Infosystems NULL Binnet & Hardley NULL Five Lakes Publishing NULL. NULL Lucerne Publishing NULL New Moon Books NULL Ramona Publishers NULL Scootney Books + Gid tr] Null va phép Join. Gi tri Null khéng xc dinh trong phép so sénh cia ménh dé Where (chi sir dyng véi cde phép so sinh Is Null hoge Is Not Null), trong phép Join ta cé thé xe dinh gidng nhau gitta 2 gid tri Null. Xét vi du sau: Gia str c6 2 bang dit ligu cé gid tri nhu sau: 184 1 one two NULL three 4 four 4 join4 Thye hign phép Join nhu sau: SELECT * FROM tablel tl JOIN table2 t2 ON tl.a = t2.c ORDER BY tl.a Két qua thyc hién: (1 row(s) affected) TRUY VAN TONG HOP. Vige sit dung céc him tinh toan nhu SUM, AVG,... thuéng duge thyc hién theo cée ménh dé WHERE, GROUP BY, HAVING. Khi xéc dinh diéu kign c6 sit dung cac ham tinh toan thi phai sir dyng ménh dé HAVING ma khéng duge str dung trong ménh dé WHERE. Cac ham tinh toan c6 thé tom tat nhu sau: SUM([ALL | DISTINCT]) Tinh tong tat cd hode nhiing hang khac nhau. AVG([ALL | DISTINCT] Tinh trung binh tit ca hoje nhimg hang khée nhau. COUNT([ALL | DISTINCT] Dém sé hang tit ca hode nhiing hang khée nhau. COUNT(*) pém cdc hang duge Iya chon. MAX(), Tinh gia tri lén nhat, 185 MINO. Tinh gid tri nh nhat. Cac him SUM, AVG chi kim vigc véi dit ligu dang s6, cde him SUM, AVG, COUNT, MAX, MIN bo qua gid trj Null, him COUNT(*) dém ca hang cé gid tri Null. Sir dung ham tinh toan. + Tinh tong toan bd. USE pubs SELECT SUM(ytd_sales) FROM titles + Tinh tong, trung binh co diéu kign. USE pubs SELECT AVG(advance), SUM(ytd_sales) FROM titles WHERE type = 'business! Ménh dé Group By. Group by duge thyc hign nhém cdc hang theo gid tri c6t xde dinh, céc ham tinh toan sé duge thye hign theo nhém néi trén. USE Northwind SELECT OrdD.ProductID AS ProdID, SUM (OrdD. Quai y) AS AmountSold FROM [Order Details] AS OrdD JOIN Produ ON OrdD.ProductID = Prd.ProductID AND Prd.CategoryID = 2 GROUP BY OrdD.ProductID as Prd Két qua thyc hién nhu sau: 186,

You might also like