You are on page 1of 227

GIO TRNH

QUN TR V PHT TRIN NG DNG VI MICROSOFT SQL SERVER

MAI CH VIT-BIN DCH Nm 2012

H qun tr SQL Server 2000

MC LC
MC LC.....................................................................................................................................................................2 M U .......................................................................................................................................................................5 PHN I. QUN TR SQL SERVER ...........................................................................................................................6 BT U VI SQL SERVER.................................................................................................................................6 TM HIU V H QUN TR CSDL SQL SERVER...........................................................................................6 M HNH HOT NG CA SQL SERVER TRN MNG MY TNH. .........................................................8 CC THNH PHN CA SQL SERVER..........................................................................................................13 CC THNH PHN CA SQL SERVER..........................................................................................................13 CI T SQL SERVER.....................................................................................................................................15 QUN TR SERVER..............................................................................................................................................24 INSTANCE ........................................................................................................................................................24 IU KHIN CC DCH V CA SQL SERVER...........................................................................................24 QUN TR SERVER..........................................................................................................................................28 THIT LP KT NI N SERVER. ..............................................................................................................29 CU HNH KT NI MNG CA SERVER....................................................................................................38 QUN TR CC CLIENT..................................................................................................................................39 QUN TR C S D LIU.................................................................................................................................46 CU TRC C S D LIU...........................................................................................................................46 QUN L C S D LIU. ............................................................................................................................51 BNG D LIU TABLE ....................................................................................................................................59 CC CHUN TC. ...........................................................................................................................................59 THIT K BNG D LIU..............................................................................................................................61 TO BNG D LIU. ......................................................................................................................................69 KHA INDEX........................................................................................................................................................77 THIT K KHA INDEX. ................................................................................................................................77 TO KHA INDEX...........................................................................................................................................79 XA INDEX. .....................................................................................................................................................80 KHUNG NHN VIEW .........................................................................................................................................81 KHI NIM KHUNG NHN. ............................................................................................................................81 TO KHUNG NHN..........................................................................................................................................81 S DNG VIEW. ..............................................................................................................................................83 TH TC LU TR

Trang

H qun tr SQL Server 2000


................................................................................................................................................................................84 KHI NIM TH TC LU TR V HM. ...................................................................................................84 PHN LOI TH TC LU TR. ..................................................................................................................86 THIT LP TH TC LU TR. ...................................................................................................................86 SA, XA TH TC ........................................................................................................................................93 TRIGGER ...............................................................................................................................................................93 KHI NIM TRIGGER. ....................................................................................................................................93 NHNG TRNG HP S DNG TRIGGER...............................................................................................93 C IM CA TRIGGER. ............................................................................................................................94 TO TRIGGER..................................................................................................................................................94 SA, XA TRIGGER. .......................................................................................................................................98 XUT NHP D LIU ......................................................................................................................................99 SERVER LIN KT LINKED SERVER..........................................................................................................99 S DNG BCP V BULK INSERT NHP D LIU. ...................................................................................105 DETTACH V ATTACH C S D LIU. ...................................................................................................108 IMPORT V EXPORT C S D LIU........................................................................................................110 EXPORT XUT D LIU. ..........................................................................................................................114 SAO LU, KHI PHC D LIU .....................................................................................................................115 NHNG L DO PHI SAO LU V KHI PHC D LIU. .....................................................................115 CC LOI BACKUP.......................................................................................................................................115 CC M HNH PHC HI D LIU...........................................................................................................116 SAO LU C S D LIU - BACKUP DATABASE. ...................................................................................117 KHI PHC D LIU RESTORE DATABASE..........................................................................................118 CHNG X. PHN QUYN, BO MT .............................................................................................................120 CH BO MT SECURITY MODE......................................................................................................120 SERVER ROLE, DATABASE ROLE................................................................................................................122 QUN TR NGI DNG. ............................................................................................................................126 NHN BN D LIU .........................................................................................................................................128 GII THIU V NHN BN D LIU. ........................................................................................................128 CU HNH PUBLISHER V DISTRIBUTOR. ...............................................................................................134 TO PUBLICATION.......................................................................................................................................136 TO PUSH SUBSCRIPTION. .........................................................................................................................138 TO PULL SUBSCRIPTION. .........................................................................................................................140 THC HIN NG B D LIU.................................................................................................................142 PHN II. CU LNH T-SQL..................................................................................................................................143 NH NGHA D LIU (DATA DEFINITION LAGUAGE - DDL). .............................................................143 THAO TC VI D LIU (DATA MANIPULATION LANGUAGE - DML). ................................................148 TRUY VN D LU. ......................................................................................................................................159 TO BNG BNG LNH SELECT INTO. .....................................................................................................166

Trang

H qun tr SQL Server 2000


LNH COMPUTE BY. ....................................................................................................................................166 TON T UNION. ..........................................................................................................................................167 TRUY VN D LIU T NHIU BNG. ......................................................................................................169 TRUY VN TNG HP..................................................................................................................................176 TRUY VN LNG NHAU. ..............................................................................................................................179 UPDATE, DELETE, INSERT VI LNH TRUY VN LNG NHAU.............................................................182 LNH READTEXT C TEXT, IMAGE. ....................................................................................................183 THAO TC D LIU NGOI. .......................................................................................................................183 MT S HM C BN..................................................................................................................................186 TRANSACTION PHIN GIAO DCH. .........................................................................................................191 LOCKING KHA.........................................................................................................................................195 GRAND GN QUYN..................................................................................................................................198 REVOKE TC QUYN.............................................................................................................................202 DENY T CHI QUYN.............................................................................................................................203 TR GIP.......................................................................................................................................................204 PHN III. PHT TRIN NG DNG VI SQL SERVER ................................................................................204 GII THIU....................................................................................................................................................205 KT NI VI SQL SERVER BNG ADO. .....................................................................................................205 KT NI VI SQL SERVER BNG SQL-DMO. ............................................................................................224

Trang

H qun tr SQL Server 2000

M U
Khi nhu cu pht trin ng dng v qun tr vi s lng bn ghi ln, kch thc ln, nhiu kiu d liu phc tp (m thanh, hnh nh,) th vic t ra vi cc hng phn mm l pht trin cc h qun tr c s d liu ln. Vic nhng nh lp trnh pht trin ng dng trn h qun tr c s d liu ln cng i hi pht c nhng nm bt tch cc v s pht trin ca cc h quan tr c s d liu. Trong lch s n ny, h qun tr c d d liu ta c th im nhanh gm cc h sau: Foxpro, Access, MySQL, SQL Server, Oracle, mi h qun tr c s d liu u c nhng phin bn, phin bn sau pht trin tin b hn, p ng tt hn yu cu thc t t ra phin bn trc. Trong gio trnh ny s gii thiu cho bn c h qun tr CSDL (c s d liu) Microsoft SQL Server. SQL Server l h qun tr c s d liu ln do hng Microsoft pht trin, c ci t v chy trn h iu hnh Windows, SQL Server t ra kh ph bin v thn thin vi ngi dng thng qua giao din ha trn Windows. SQL Server pht trin theo cc phin bn 6.0, 6.5, 7.0, 8.0 (phin bn 2000), 2003, 2005. Vi mc ch gip cho bn c, c bit l sinh vin i hc chuyn ngnh Cng ngh thng tin c th nm bt c nhng k nng qun tr c s d liu cng nh k thut xy dng ng dng t cc ngn ng lp trnh (Visual Basic, Visaul Basic.net, ASP, ASP.net) trn h qun tr CSDL SQL Server, gio trnh ny s trnh by mt cch d hiu, theo hng pht trin ng dng, h qun tr CSDL SQL Server 2000.

Trang

H qun tr SQL Server 2000

Phn 1.

QUN TR SQL SERVER

BT U VI SQL SERVER
TM HIU V H QUN TR CSDL SQL SERVER Gii thiu SQL Server. SQL Server l h thng qun tr c s d liu quan h (Relational DataBase Management System- RDBMS) s dng cc lnh gio chuyn Transaction-SQL trao i d liu gia Client Computer v Server Computer. SQL Server c mt s c tnh sau: Cho php qun tr mt h CSDL ln (ln n vi tega byte), c tc x l d liu nhanh p ng yu cu v thi gian. Cho php nhiu ngi cng khai thc trong mt thi im i vi mt CSDL v ton b qun tr CSDL (ln n vi chc ngn user). C h thng phn quyn bo mt tng thch vi h thng bo mt ca cng ngh NT (Network Technology), tch hp vi h thng bo mt ca Windows NT hoc s dng h thng bo v c lp ca SQL Server. H tr trong vic trin khai CSDL phn tn v pht trin ng dng trn Internet Cho php lp trnh kt ni vi nhiu ngn ng lp trnh khc dng xy dng cc ng dng c th (Visual Basic, C, C++, ASP, ASP.NET, XML,...). S dng cu lnh truy vn d liu Transaction-SQL (Access l SQL, Oracle l PL/SQL).

Cc n bn ca SQL Server. SQL Server c cc n bn chnh sau: Enterpise Manager: L n bn y ca SQL Server c th chy trn 32CPU v 64GB RAM. C cc dch v phn tch d liu Analysis Service. Standard: Ging nh Enterprise nhng b hn ch mt s tnh nng cao cp, c th chy trn 2CPU, 4GB RAM.

Trang

H qun tr SQL Server 2000 Personal: Phin bn ny ch yu chy trn PC, nn c th chy trn cc h iu hnh Windows 9x, Windows XP, Windows 2000, Windows 2003 Developer: L phin bn tng t nh Enterprise nhng b gii hn bi s user kt ni n. Desktop Engine: L phin bn mt engine ch chy trn desktop v khng c giao din ngi dng (GUI), kch thc CSDL gii hn bi 2GB. Win CE: S dng cho cc ng dng chy trn Windows CE. Trial: Phin bn dng th, b gii hn bi thi gian. SQL Client: L phin bn dnh cho my khch, khi thc hin khai thc s thc hin kt ni n phin bn SQL Server, phin bn ny cung cp giao din GUI khai thc cho ngi s dng. SQL Connectivity only: L phin bn s dng ch cho cc ng dng kt ni n SQL Server, phin bn ny khng cung cp cng c GUI cho ngi dng khai thc SQL Server. Cc phin bn ny c ci t ph thc vo b ci t m bn chn hoc la chn khai ci t (v d phin bn Enterprise, Standard, Personal, bn phi chn theo b ci t, phin bn SQL Client, Connectivity, do bn chn trong cc hp thoi trong qu trnh ci t).

Mt s tnh nng ca Enterprise manager. D ci t H tr m hnh Client/Server. Thch hp trn cc h iu hnh Windows. Hot ng vi nhiu giao thc truyn thng. H tr dch v Data Warehousing. Thch hp vi chun ANSI/ISO SQL-92. H tr nhn bn d liu. Cung cp dch v tm kim Full-Text. Sch tr gip- Book Online.

Trang

H qun tr SQL Server 2000 M HNH HOT NG CA SQL SERVER TRN MNG MY TNH. M hnh chung SQL Server trn mng. SQL Server l h qun tr CSDL hot ng trn mng, c th thc hin trao i d liu theo nhiu m hnh mng khc nhau, nhiu giao thc v phng thc truyn tin khc nhau.

Trong s trn th hin ba kiu kt ni ng dng n SQL Server: Kt ni trn Desktop: C th trn cng my tnh vi SQL Server hoc kt ni qua mng ni b. Kt ni qua mng din rng: Thng qua ng truyn mng xa kt ni n SQL Server.

Trang

H qun tr SQL Server 2000 Kt ni qua mng Internet: Cc ng dng kt ni thng qua my ch Internet, dch v IIS thc hin ng dng trn Internet (ASP, JSP, ASP.net,)

M hnh Desktop. Nu xt trn mt my Desktop s kt ni trao i d liu c th hin nh sau:

Trn mt Desktop c th c nhiu ng dng, mi ng dng c th thc hin thao tc vi nhiu CSDL.

M hnh Client/Server. Nu xt theo m hnh client/server, ng dng trao i vi SQL Server theo s sau:

Trang

H qun tr SQL Server 2000

Nh s trn nhn thy SQL Server cho php cc ng dng kt ni theo cc phng thc sau: OLE DB, ODBC, DB-Library, Embedded SQL, y l cc phng thc kt ni h ch cho nhng nh pht trin ng dng.

Trang 10

H qun tr SQL Server 2000 Nu xem xt c th hn ta c th xem s sau:

Trong s trn cho thy, SQL Server c th thc hin trao i d liu vi cc ng dngt heo nhiu giao thc truyn tin khc nhau (TCP/IP, NetBeUI, Names Pipes,), cc ng dng c th s dng nhiu phng thc kt ni khc nhau (OLE DB, ODBC, DB-Library).

M hnh kt ni ng dng trn mng Internet. Nu xt ring cc ng dgn kt ni vi SQL Server trn mng Internet, cc my ch SQL Server s c qun l thng qua cc h thng my ch Trang 11

H qun tr SQL Server 2000 mng, h iu hnh mng, cc ng dng (COM+, ASP, IIS) s thng qua my ch mng kt ni n SQL Server, m hnh ny c th p dng cho cc mng ni b, din rng, ng dng c khai thc trn trnh duyt Internet Browser. Xem xt m hnh di y:

Trang 12

H qun tr SQL Server 2000 CC THNH PHN CA SQL SERVER. SQL Server c cu thnh bi nhiu thnh phn khc nhau, cc thnh phn c mi quan h trong mt h thng, phi hp vi nhau to thnh mt gii php hon chnh, nng cao hiu qu qun tr, phn tch, lu tr d liu. Relational DataBase Engine.

y l mt engine c kh nng cha d liu di nhiu quy m khc nhau, theo dng bng, h tr nhiu phng thc kt ni ADO, OLE DB, ODBC.

Replication. L cng c dng nhn bn d liu, bn c th to mt Server khc vi b d liu ging b d liu trn Server chnh. Cng c to c ch t ng b d liu gia Server chnh v Server nhn bn. Mc ch ca vic to Server nhn bn l gim ti cho Server chnh, nng cao hiu qu phc v vi s lng ngi, phin giao dch ln. Trang 13

H qun tr SQL Server 2000 Data Transformation Service DTS. L cng c gip bn chuyn d liu gia cc Server qun tr CSDL khc nhau, DTS c th chuyn d liu t SQL Server sang Oracle, Access, DB, trc khi chuyn d liu DTS nh dng kiu d liu chuyn sang h qun tr CSDL khc. Analysis service. L cng c gip khai thc phn tch d liu, hay khai ph d liu theo phng thc a chiu. T mt tp d liu sn c bn c th khai ph ri t a ra nhng nhn nh, phn tch, nh gi v d on theo lnh vc no , mi chiu trong ng cnh ny c coi l mt tiu ch xem xt ca d liu. English query. y l cng c tra cu d liu bng ting anh, c php c th s dng theo vn phm ting anh thng thng. SQL Server tools. L b cng c cung cp giao din cho ngi qun tr nh Enterprise amanger, Query Analyzer ,SQL Server sau khi ci t SQL Server group gm nhng thnh phn c bn trong group nh sau:

Mt s cng c quan trong: Enterprise manager, Query Analyzer, Profiler, cc cng c s c gii thiu khai thc sau.

Trang 14

H qun tr SQL Server 2000 CI T SQL SERVER.

Chun b ci t. Ty theo mi trng ca my tnh ca bn m thc hnh ci t phin bn no, bng sau l tham s vi SQL Server 2000 phin bn Standard.

Computer

Intel hoc tng ng Pentium 166 MHz hoc cao hn

Memory (RAM)

Enterprise Edition: Ti thiu 64 MB, 128 MB hoc nhiu hn. Standard Edition: Ti thiu 64 MB. Personal Edition: Ti thiu 64 MB trn Windows 2000, ti thiu 32 MB trn cc h iu hnh khc. Developer Edition: Ti thiu 64 MB. Desktop Engine: Ti thiu 64 MB trn Windows 2000, ti thiu 32 MB trn h iu hnh khc.

Hard disk

SQL Server database components: T 95 n 270 MB, thng thng 250 MB. Analysis Services: Ti thiu 50 MB, thng thng130 MB. English Query: 80 MB Desktop Engine: 44 MB

Monitor

VGA hoc phn di cao hn. 800x600 hoc phn di cao hn.

Trang 15

H qun tr SQL Server 2000 Thc hnh ci t. - S dng a CD ROM c b ci t SQL Server 2000 (tu theo yu cu ca bn l Standard, Personal hay Enterprise,...) - Chy trnh Autorun.exe (thng t chy khi a a vo my tnh)

Trong mn hnh trn ta c mt s la chn: SQL Server Components: S thc hnh trong bc tip. SQL Server 2000 Prerequisites: Dng ci t nhng yu cu c cung cp sn cho vic ci t nu h thng trong my ci t cha .

Trang 16

H qun tr SQL Server 2000 - Chn SQL Server Components.

- Chn Install Database Server.

Trang 17

H qun tr SQL Server 2000 - Chn Next.

Nu ci t SQL Server trn chnh my bn ang ngi th s dng Local Computer Nu ci t dng kt ni vi my khc th s dng Remote Computer sau nhp tn my hoc chn v tr my bng cch s dng Browse - Chn next.

- Chn tu chn theo ch dn (to mi, thay i ci c, thm cc chc nng khc,...). - Trong trng hp chn to mi (la chn th nht) sau n Next. Trang 18

H qun tr SQL Server 2000

- Nhp tn ca bn, tn c quan, sau n Next, Yes.

Trong ca s hin ln 3 la chn: 1. Ci t cc cng c truy vn: S dng cho cc my khch khng lu tr d liu nhng c chc nng truy vn d liu n SQL Server c CSDL 2. Ci t Server v cc cng c truy vn: Ci t SQL Server c d liu v cc cng c ca my khc truy vn d liu Trang 19

H qun tr SQL Server 2000 3. Ci t kt ni: Dng cho cc my ch s dng kt ni n Server, thng dng ci t cho cc my s dng cc ng dng kt ni n server - Chn la chn 2, sau n Next

Dng cc la chn chn kiu ci t: + Typical: Ci t nhng chc nng c bn c h thng nh sn (chc nng thng thng). + Minimum: Ci t nhng chc nng ti thiu ca h thng. + Custom: La chn nhng chc nng cn ci t theo yu cu ca ngi dng.

Trang 20

H qun tr SQL Server 2000 Trong cch la chn Custom ta cn thm bc chn cc chc nng nh sau:

- n nt Next tip tc.

Trang 21

H qun tr SQL Server 2000 Trong ca s trn ta cn nhp tn, mt khu ca user c ng k truy nhp vng, thng thng SQL Server ci t c thc hin theo quyn Administrator ca my tnh ch, khi bn la chn nt chn Use a Domain User account. - n nt next tip tc.

Trong ca s trn cho php ta s dng 2 la chn: + La chn th nht: Ngi dng s dng h thng bo mt ca Windows (h iu hnh ca my ch ci t thng thng khi ci t dng la chn ny). + La chn th hai: Ngi dng s dng h thng bo mt ca Windows v ca h qun tr CSDL SQL Server. Trong cc trng hp trn u c th s dng tn v mt khu c cung cp theo vng (domain) ca h iu hnh. Nu s dng la chn th 2 ta s dng tn v mt khu ca ngi qun tr vng (Administrator). i vi SQL Server ta c th thay tn Administrator bng tn sa (vit tt ca t System Administrator). Vn thc hin chn ch bo mt no s c bn trong nhng bi sau.

Trang 22

H qun tr SQL Server 2000 - n next tip tc.

Trong ca s trn ta c 2 la chn: + Per Seat for: La chn cho php xc nh s thit b (khi nim s c gii thiu sau) trn mi v tr khai thc h thng theo bn quyn c php ca Microsoft. + Processor License for: Xc nh s Processor cho php s dng theo bn quyn c cung cp bi Microsoft. Ngoi vic ng k bn quyn ti thi im ny, ta c th ng k bn quyn trong cng c iu khin ca Control Panel.

Trang 23

H qun tr SQL Server 2000

QUN TR SERVER
INSTANCE SQL Server h tr nhiu hot ng trn mng, nh cc m hnh xem xt trc ta c th thit lp nhiu my tnh ci t SQL Server, cc my tnh c th lin kt vi nhau, trao i d liu vi nhau. Tuy nhin mt my tnh cng c th thit lp nhiu h thng SQL Server khc nhau, mi h thng u c mt tn quy nh, mi h thng nh vy gi l mt Instance. Mi Instance trn mt my tnh c coi nh mt h thng SQL Server c lp, tng t nh cc h thng SQL Server ci t trn cc my tnh khc nhau.

IU KHIN CC DCH V CA SQL SERVER. SQL Server sau khi ci t xong, khi ng my thng thng s c thit lp c biu tng gc di, tri mn hnh nh sau:

Trang 24

H qun tr SQL Server 2000 Biu tng my ch c vi my tnh ci t phin bn SQL Server v l biu tng ca trnh qun l dch v Service Manager.

Gm cc dch v c bn sau: + Distributed Transaction Coordinator - DTC. + Microsoft Search. + SQL Server. + SQL Server Agent. Cc dch v ny ta c th bt u, tm dng hoc kt thc, mi dch v u iu khin cc ng dng, cng c qun tr ca SQL Server. thc hin iu khin dch v u tin ta lm nh sau: Services -> Start/Continue (Pause, Stop) dch v khi ng t ng khi khi ng h iu hnh hy chn vo nt chn Auto-start service when OS starts.

Dch v MS SQLServer.

Trang 25

H qun tr SQL Server 2000 Dng qun l tt c cc file gm cc CSDL m SQL Server qun l, l thnh phn x l tt c cc lnh ca Transact-SQL c gi t cc trnh ng dng client, phn phi cc ngun ti nguyn khi c nhiu user cng truy nhp mt lc. y l dch v qun tr c bn, khi ngt dch v ny h thng s ngng tt c cc cng vic khai thc d liu. Dch v SQLServerAgent. H tr cc tnh nng cho php lp thi biu cc hot dng theo tng giai on tren SQL Server, hoc thng bo cho ngi qun l h thng v nhng s c ca h thng, bao gm cc thnh phn Jobs, Alerts, Operator.

Dch v Microsoft Search. Cung cp dch v tm kim v tm kim vn bn vi cc php ton c bn sau: + K t (chui): =, >, >=, <, <= c so snh vi mt chui hng. + So snh chui nh trong vn bn hoc chui c kch thc ln, vn bn.

Trang 26

H qun tr SQL Server 2000

Dch v MS DTC. L dch v cho php trong mt phin giao vn c th s dng d liu c phn phi trn nhiu server khc nhau, thc hin theo cc bc c bn sau: + Gi cc th tc lu tr trn cc server xa s dng SQL Server + T ng gi hoc to cc phin giao vn cc b v cc giao vn vi cc my ch t xa + To b d liu c cp nht hoc c phn phi bi cc server xa. Xem xt s hot ng sau:

Nh s trn khi client triu gi mt th tc c sn n server cc b, khi c yu cu d liu trn server khc, thng qua dch v MS DTC server cc b s triu gi cc th tc t server t xa, kt qu c th to c b d liu c tp trung t nhiu server khc nhau. Trang 27

H qun tr SQL Server 2000

QUN TR SERVER. Nh nu trn mi Instance c coi l mt h thng qun tr CSDL SQL Server v c th gi tt l Server. Server c chc nng qun tr ton b h thng ca SQL Server (d liu, bo mt, ngi dng, tc v, cc dch v khc,...). Cc ng dng hoc cc cng c khai thc d liu (GUI) s thc hin khai thc d liu do Server qun l khi c kt ni n Server. Tuy nhin mt vn quan trng l Server phi sn sng phc v.

Thc hin qun tr Server l vic thc hin cc cng vic sau: + Bt/tt/tm dng dch v ca SQL Server.

Trang 28

H qun tr SQL Server 2000 + G b hoc ci t Server (Instance).

+ Thay i, nng cp phin bn. THIT LP KT NI N SERVER. khai thc c d liu ca h thng SQL Server ta phi thc hin kt ni (connect) n Server, vic kt ni c th thc hin t cc v tr: ng dng, cng c khai thc ca SQL Server l SQL Client. Trong phn ny ta s xem xt vic kt ni t SQL Client n Server. Mi Server khi ci t c mt tn l tn ca Instance c t. Trn mt mng my tnh nu c quyn hn ta hon ton c th thc hin kt ni n Server ni trn. T mt my SQL Client c th thc hin ng thi kt ni n nhiu Server khc nhau, y cng chnh l u im ca SQL Server. Nu bn ci t phin bn SQL Server trn my tnh bn cng phi lm tian b cc bc kt ni nh SQL Client, phin bn SQL Server c coi nh gm 2 phn: H thng qun tr, cng c khai thc SQL Client. D s dng cng c no khai thc c ci t trn my tnh ca bn, quyn hn khai thc, qun tr ph thuc vo user thc hin kt ni. Qun tr Server Group. Server Group l cng c dng qun l cc kt ni (s thc hnh sau) tng t nh khi nim th mc trong h iu hnh, trong cc Server Group cha cc Server Group con hoc cc kt ni n Server. Trang 29

H qun tr SQL Server 2000 Cc bc thc hin nh sau: - Vo chc nng Enterprise manager nh hnh di

- Di chuyn vo mc trong bng cch nhn vo du + ca cy cc i tng. - Chn New SQL Server group to group mi

Trang 30

H qun tr SQL Server 2000

- Nhp tn group -> Ok Cc thao tc i tn, xa c thc hin bng cch nhn phi chut vo group

cn thao tc.

Trang 31

H qun tr SQL Server 2000

Thit lp kt ni n Server (thit lp Server). L bc thit lp kt ni n Server t Client, Server khc. Cc kt ni c th hin bng tn ca Server kt ni n (hay cn l tn ca Instance), chnh v vy nn tn cc kt ni trn mt Client l duy nht, khng trng nhau trong ton b client. Trc khi thc hin to kt ni ta phi chun b cc tham s sau: + Tn Server (Instance) mun kt ni n + User name v Password ca Server ta cn kt ni n (tham s ny do ngi qun tr Server cp). Cch lm nh sau: - Vo Enterprise v chn Server group

Trang 32

H qun tr SQL Server 2000 - Nhn nt phi chut vo ca s bn phi, chn New SQL Server Registration.

- Nhp tn Server.

- Nhn Add -> Next

Trang 33

H qun tr SQL Server 2000

- Chn ch bo mt (thng thng chn The Windows account information chn ch bo mt ca Widnows, phn ny s xem xt k trong bi sau) -> Next -> Chn Server Group.

- Nhn Finish.

Trang 34

H qun tr SQL Server 2000

Khi mn hnh xut hin thng bo Registered successfully l vic thit lp thnh cng. - Nhn Close. Sau khi thit lp xong kt ni xut hin trn danh sch cc kt ni.

Kt ni nh thit lp c quyn hn khai thc ph thuc vo user kt ni, trong v d trn quyn hn ph thuc vo user truy nhp vo Windows, tuy nhin trong nhng bi sau s gii thiu cch thac to user, s dng user ca SQL Server thc hin to kt ni v khai thc. xa hoc sa thng tin cho kt ni chn Delete hoc Edit khi nhn nt phi chut vo tn kt ni cn thao tc. Trang 35

H qun tr SQL Server 2000

Xem v thay i tham s cho Server. thay i tham s cho Server, hy chn tn kt ni -> nhn nt phi chut -> chn Properties.

Tuy nhin cc tham s trn c th bn cha xem xt, nn trong bi ny ch gii thiu m s xem xt mt s tham s c bn trong nh bi lin quan. Bt/tt/tm dng/kt ni/ngt kt ni Server. Ta c th thc hin tm iu khin dch v MS SQL Server t kt ni. - Chn tn kt n - Nhn nt phi chut Trang 36

H qun tr SQL Server 2000

Trang 37

H qun tr SQL Server 2000 CU HNH KT NI MNG CA SERVER. cc Client hoc cc ng dng kt ni c n Server, ta phi cu hnh cc phng thc kt ni ph hp vi kt ni mng. Kt ni mng c th s dng kt ni thng qua Proxy, thng qua mng Internet. Khi s dng kt ni no i na th trc ht ta phi chn giao thc ph hp vi giao thc mng ng s dng. Thc hin bng cch chn Server network utility

- Chn giao thc a vo danh sch enabled s dng v a v danh sch Disabled khng s dng. - Chn Properties chn cng, tham s ca giao thc. - Chn Enable WinSock proxy thc hin kt ni qua Proxy. - Chn Force protocol encryption s dng kt ni qua Internet khng dng Fire Wall vi SQL Server.

Trang 38

H qun tr SQL Server 2000 QUN TR CC CLIENT. Khi Server sn sng cho kt ni, vic tip theo l xem xt n cc client kt ni n server. Trong phn ny ta s xem xt cu hnh client kt ni n server. Cc client kt ni n server u thc hin trn c s h thng truyn tin ca mng my tnh, tuy nhin cc ng dng client kt ni n server thc hin khai thc d liu trn server thng qua mt s phng thc kt ni sau: - OLE DB: C 2 kiu Microsoft OLE DB Provider for SQL Server v Microsoft OLE DB Provider for ODBC. - ODBC: Kt ni thng qua SQL Server Enterprise Manager v SQL Query Analyzer s dng SQL Server ODBC. - DB-Library: S dng lnh SQL Server isql. Cu hnh Net-Library. Nh xem xt trc mi Instance khi cu hnh xc nh mt a ch v s hiu cng ring, nn vic kt ni thng qua Net-Library l kt ni thng qua a ch v nh vy kt ni xcnh c n Instance. Trn Server thng thng c cu hnh theo TCP/IP Sockets v Named Pipes Net-Libraries, trn client thng thng cu hnh theo Thc hin cu hnh ta s dng Client network utility.

- Chn Client network utility.

Trang 39

H qun tr SQL Server 2000

- Chn giao thc v cc tham s lin quan tng ng vi server, c th thc hin nh tn Server sang tn mi trn bng Alias. Cu hnh ODBC. ODBC vit tt ca t Open DataBase Connectivity, l cng c kt ni m. ODBC c Windows cng cp dn khi ci t, c s dng lm kt ni trung gian gia ng dng v cc h qun tr CSDL (Dbase, Access, SQL Server, Oracle,). Thng qua ODBC ng dng ch cn xc nh tn ca ngun trong ODBC (gi l Data Source) v ti khon khi truy nhp thc hin quyn m khng cn quan tm n c s d liu ang nm u. Thng thng khi ci t h qun r CSDL mi th Windows s t cp nht vo danh sch cc Driver iu khin ODBC ca h qun tr CSDL . Thc hin to ODBC cho SQL Server nh sau: - Chn ODBC trong Administrative tools (Control panel).

Trang 40

H qun tr SQL Server 2000

- Chn bng Drivers, trong danh sch kim tra xem c SQL Server

cha Nu cha c kim tra cch ci t SQL Server (thng thng Windows t cp nht). - Chn bng User DSN (Data Source Name) -> Add.

Trang 41

H qun tr SQL Server 2000

- Nhn Finish.

- Nhp tn DSN (y l tn s c s dng cho ng dng), thng tin m t, tn Server (Instance). - Nhn Next.

Trang 42

H qun tr SQL Server 2000

Trong ca s c 2 la chn: S dng ch bo mt k tha ca Windows NT hoc ca SQL Server (s xem xt sau), trc ht bn hy chn la chn k tha ca Windows NT (lc ny quyn khai thc l quyn ca ngi truy nhp vo Windows). - Nhn Next, chn hp chn Change the default database to -> chn c s d liu (vic to c s d liu s xem xt bi sau, ti bc ny bn hy chn mt c s d liu v d c tn l Pubs, y l c s d liu v d do SQL Server t thit lp lm mu).

- Nhn Next -> Finish.

Trang 43

H qun tr SQL Server 2000

kim tra kt ni c thnh cng khng bn nhn Test Data Source sau o nhn Ok kt thc v thu c mn hnh sau:

Trn danh sch cc Data Source c tn DONGDO va c to, Data Source to ra s c s dng trong ng dng client.

Trang 44

H qun tr SQL Server 2000 Cu hnh OLE DB. OLE DB l phng thc kh quen thuc i vi ngi lp tnh CSDL (lp trnh trn Desktop hoc trn Internet). OLE DB s dng vi nhiu h qun tr CSDL khc nhau, mi h qun tr c c php ring v ch nh driver iu khin cho n. Vi SQL Server thng thng s dng 2 phng thc kt ni s dng OLE DB: - Microsoft OLE DB Provider for SQL Server (SQLOLEDB): Khng s dng ODBC, xc nh driver cho SQL Server. - Microsoft OLE DB Provider for ODBC: S dng ODBC to (trong phn trc).

Trang 45

H qun tr SQL Server 2000

QUN TR C S D LIU
Trong chng ny ta s xem xt cu trc vt l, to, xa, sa tham s ca c s d liu. CU TRC C S D LIU. Chc hn khi nghin cu n h qun tr CSDL SQL Server bn xem xt n cc h qun tr CSDL nh DBase hoc Access, vi h qun tr CSDL nh trn mi c s d liu khi s dng (thc hin m CSDL) s m trc tip t tp tin cha CSDL, tp tin cha CSDL s c mt tp tin chnh (v d *.dbf hoc *.mdb) v tp tin ph nhng khi ta thao tc ta ch cn quan tm n tp tin chnh. Nn trong cc ng dng thng thng ta thng dng cc thao tc m (open) m tp tin chnh cha CSDL v ng (close) ng tp tin chnh cha CSDL m khng cn quan tm n vic kt ni n CSDL cha (khng c phng thc kt ni). SQL Server qun l trc tip cc CSDL, danh sch mi Server s gm danh sch cc tn CSDL, tn cc CSDL l duy nht, khng trng nhau. Mi CSDL SQL Server s qun l cc cu trc vt l ca n. Chnh t cch thc qun l nh trn m vic qun tr c s d liu c mt s c im sau: + Client khai thc CSDL trc ht phi thc hin kt ni n Server qun tr CSDL . + Ch thc hin khai thc vi cc CSDL c tn trong danh sch cc CSDL m Server qun l. + Khng c cc phng thc m CSDL trc tip t tp tin nh Dbase hoc Access. + Khi kt ni n Server, Client ch thc hin c quyn khai thc theo quy nh nh sn trong CSDL (phn quyn trong CSDL). Cu trc c s d liu. C s d liu trong SQL Server lu tr theo 2 phn: phn d liu (gm mt tp tin bt buc *.mdf v cc tp tin ph *.ndf) v phn nht k (*.ldf). Nh vy mt c s d liu c t nht 2 tp tin. Cu trc logic trong CSDL gm cc table, view v cc object khc. Sau y l cu trc mt CSDL.

Trang 46

H qun tr SQL Server 2000

S qun tr c s d liu ca SQL Server. C s d liu trong SQL Server chia thnh 2 loi: C s d liu h thng (do SQL Server sinh ra khi ci t) v c s d liu ngi dng (do ngi dng

to ta). C s d liu h thng gm: - Master: Lu tr cc thng tin login account, cu hnh h thng, thng tin qun tr cc CSDL, l CSDL quan trng nn thng c sao lu bo m an ton cho h thng. - Tempdb: Cha cc table tm thi v cc th tc c lu tr tm thi. Cc table v th tc ni trn c lu tr trong CSDL ny phc v cho cc user. - Model: c s dng khi template c s dng cho cc CSDL c to trn mt h thng. - Msdb: S dng bi SQL Agent. Trang 47

H qun tr SQL Server 2000 Tp tin ca cc CSDL ni trn nh sau: Tp tin CSDL master primary data master log tempdb primary data tempdb log model primary data model log msdb primary data msdb log Cu trc vt l ca CSDL. Nh cc cu trc cc CSDL h qun tr CSDL thng thng (Dbase, Access), SQL Server cng qun l tp tin d liu ca CSDL dng vt l theo trang (page) v phn on (extent). Page. SQL Server qun l mt page c kch thc l 8KB, nh vy 1MB c 128 page, trong mi trang c 96 byte cha thng tin ca trang. C 8 kiu page nh sau: Tn Ni dung Data Cha tt c cc kiu d liu loi tr text, ntext v image Index Cc kha Index. Text/Image Text, ntext, and image data. Global Allocation Map, Cha cc thng tin nh v ca cc extent. Secondary Global Allocation Map Page Free Space Cha thng tin khong trng ca page. Index Allocation Map Cha cc thng tin v Extent s dng cho Index v Page. Bulk Changed Map Cha thng thng tin v cc lnh BACKUP LOG. Differential Changed Cha cc thng tin lnh BACKUP DATABASE. Map i vi cc tp tin nht k (*.ldf), cc bn ghi c ghi li lin tc, khng Tn tp tin vt l Master.mdf Mastlog.ldf Tempdb.mdf Templog.ldf Model.mdf Modellog.ldf Msdbdata.mdf Msdblog.ldf Kch thc ngm nh 11.0 MB 1.25 MB 8.0 MB 0.5 MB 0.75 MB 0.75 MB 12.0 MB 2.25 MB

Trang 48

H qun tr SQL Server 2000 phn trang.

D liu trong mt trang s bt u lu tr t sau phn thng tin Header, v lu tr lin tip, mi hng c kch thc ti a l 8060byte. Ring i vi d liu kiu text, ntext, image y l kiu d liu phc tp v c kch thc ln, SQL Server s c chin lc qun l khc, phn tran ring nhm tng hiu qu truy vn d liu. D liu trong SQL Server c lu tr trn a v to ch mc Index theo cu trc d liu kiu B-Tree Plus (c th tham kho thm trong nhng ni dung cu trc d liu nng cao). Extent. Extent l n v dng cha cc table v index, mi extent c 8 page hay 64KB. SQL Server c 2 kiu extent: - Uniform: Ch dng lu tr cho mt i tng,. - Mixform: C th dng lu tr 8 i tng. Cu trc Extent nh sau:

File. Tp tin lu tr mt CSDL trong SQL Server c 3 loi.

Trang 49

H qun tr SQL Server 2000 Primary data file: L file chnh lu tr d liu (*.mdf = Master Data File), mi CSDL c mt file primary, lu tr im bt u ca mt CSDL v cc im kt ni n cc file lu tr tip theo (sencondary). Secondary data file: L tp tin lu tr d liu sau Primary data file, mt CSDL c th c nhiu tp tin sencondary. Loi tp tin ny cho php mt CSDL c th phn tn d liu nhiu ni trn my tnh hoc trn mng. Log file: L loi tp tin lu tr thng tin nht k ca CSDL. Gi s to mt CSDL c tn MyDB, thng thng h thng ngm nh cc tp tin nh sau:

Trang 50

H qun tr SQL Server 2000 Cc tp tin lu tr d liu phn thnh tng trang, cc trang nh s id lin tip theo tng file:

File group. SQL Server s dng cng c file group gip ngi dng d dng qun l file, cc file lu tr d liu ca mt CSDL c th nhm thnh tng nhm, gm 2 kiu nhm chnh: - Primary: L nhm bt buc c, dng xc nh cho file primary (*.mdf) v nhng file khc. - User-defined: Nhm do ngi dng to ta, t t tn d qun l. QUN L C S D LIU. To c s d liu. Theo l thuyt c s d liu, trc khi to CSDL ta phi thc hin phn tch cc thng tin lin quan mc ch s dng CSDL cho i ton ca mnh: Tn CSDL, cc table, rng buc, tun theo cc chun CSDL (phn ny s bn k trong bi sau) Trong cc thao tc vi CSDL v i tng khc s gm 2 phn: Phn thao tc theo cng c wizard v cu lnh T-SQL.

Trang 51

H qun tr SQL Server 2000 To theo cng c: - Vo Enterprise Manager -> Databases.

- Nhn nt phi chut/hoc menu Action -> New Database

- Nhp tn CSDL.

- Xc nh tn logic, tn vt l, tn nhm ca tp tin v cc tham s khc.

Trang 52

H qun tr SQL Server 2000

- Xc nh tn logic, vt l, tham s khc tp tin nht k.

To theo cu lnh. S dng cu lnh Create Database to CSDL, cng c thc hin lnh:

Trang 53

H qun tr SQL Server 2000 - Trong Enterprise Manager -> Databases -> Tools -> SQL Query

Analyzer - Chn CSDL Master.

Trang 54

H qun tr SQL Server 2000 - Son lnh trong ca s lnh:


USE master GO CREATE DATABASE QLTV ON ( NAME = Sales_dat, FILENAME = 'c:\program server\mssql\data\qltv_dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log', FILENAME = 'c:\program server\mssql\data\qltv_log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO

files\microsoft

sql

files\microsoft

sql

- Nhn F5 hoc nt thc hin.

Cng c SQL Query Analyzer cho php bn thc hin tng cu lnh bng cch bi en vo on lnh cn thc hin sau nhn F5 hoc nt thc hin. Khi to CSDL mi th n phi ng v tr CSDL Master, khi mun thc hin lnh vi mt CSDL c th c no bn phi chn vo CSDL v thc hin lnh. Trong on lnh trn lnh User Master thc hin chn CSDL Master bng cu lnh; lnh Use xc nh CSDL thc hin.

Trang 55

H qun tr SQL Server 2000 Lnh Go xc nh cu lnh kt thc v bt u cu lnh khc, cu lnh c hiu l dng lnh. Trong lnh T-SQL mt s lnh khc nhau vn c th nm trn mt dng lnh nn trong mt s tnh hung kich bn cu lnh khng cn s dng lnh Go. Xa c s d liu. Xa theo cng c. - Chn vo CSDL. - Nhn nt phi chut -> Delete.

- Chn Yes. Xa theo cu lnh. - S dng lnh Drop Database Drop Database QLTV

Sa tham s. Sa theo cng c. - Chn CSDL. - Nhn nt phi chut - Chn Properties.

Trang 56

H qun tr SQL Server 2000

- Thay i tham s khi cn thit: + Restrict access: Ngn truy nhp. + Read only: t thuc tnh ch c. Sa theo cu lnh. - S dng cu lnh Alter Database, v d sau thc hin thm tp tin secondary vo 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

- Sa tham s da vo th tc h thng sp_dboption: + Sa i thuc tnh read only: Trang 57

H qun tr SQL Server 2000 USE master EXEC sp_dboption 'qltv', 'read only', 'TRUE'

+ Sa thuc tnh autoshring : USE master EXEC sp_dboption 'qltv', autoshring, TRUE

+ Sa thuc tnh single user: USE master EXEC sp_dboption 'qltv', single_user

Mi cu lnh lin quan bn c th tra cu, tham kho trong Book Onlines.

Trang 58

H qun tr SQL Server 2000

BNG D LIU TABLE


CC CHUN TC. Trong thit k c s d liu, vic tun th ngt ngo nhng chun l vic ht sc quan trng, n gip cho vic qun tr d liu c hiu qu, khc phc d tha, thun li trong qun tr d liu ln, hiu qu vi d liu phc tp. Gm 3 chun c bn: Chun th nht. Chun th nht xc nh cu trc ca mt bng khng th cha cc trng lp li. Ta c th ly v d nh sau gi s mun lu tr thng tin mt quyn sch, mi quyn sch c th c mt hoc nhiu tc gi tham gia bin son, nu khng tun theo chun th nht nh nu trn th trong mt bng d liu sch c th c nhiu trng d liu xc nh thng tin tc gi.
ID Tn sch NXB Tc gi 1 Tc gi 2

Trong v d trn bn nhn thy thng tin Tc gi c lp li 2 ln, kh phc bng cch to ra mt bng lu tr danh sch tc gi ca sch (s bn trong chun sau). Chun th hai. Chun th hai xc nh trong cc hng d liu, mi ct u ph thuc vo ct kha chnh. Ta xem xt mt trng hp vi phm chun th hai nh sau: Gi s xt tnh hung sinh vin mn sch trong mt th vin, vic mn sch c nht k theo bng nh sau:
Id_sach Id_Sinhvien Ngy mn Sc khe sinh vin

Xem xt trong bng trn ta thy mi hng ph thuc vo kha id_sach v id_sinhvien, nhng thng tin Sc khe sinh vin khng ph thuc vo id_sach, nn thng tin ny cn chuyn sang bng v thng tin ca sinh vin.

Chun th ba.

Trang 59

H qun tr SQL Server 2000 Chun th ba xc nh bn ghi tun th theo chun th hai v khng c bt k phn ph thuc chuyn tip no. Phn ph thuc chuyn tip tn ti khi mt bng cha mt ct c trng. Ct ny khng phi l kha nhng vn xc nh cc ct khc. Ta xem xt mt v d vi phm chun nh sau: Gi s trong th vin c mt bng lit k sch tn trong kho, khi sinh vin mn sch s lng sch m sinh vin mn s tng, nu nht k mn sch c thc hin theo bng sau:
Id_sach Id_Sinhvien Ngy mn S lng mn

Bng trn bn thy mi ln sinh vin mn sch s lng sch c m id_sach m sinh vin c m id_sinhvien s tng ln v tng s l S lng mn, thng tin ny l thng tin tch ly theo id_sach, id_sinhvien, ngy mn. Theo bng trn ta thy khng vi phm chun th hai nhng vi phm chun th ba v ct S sch mn l ct ph thuc chuyn tip, ct ny cn phi c chuyn sang bng khc l bng Sinh vin mn sch:
Id_sach Id_Sinhvien S lng mn

Khi no cn chun tc. Mt c s d liu cn c chun tc khi: - D liu ln, phn tn. - Khng xc nh r nhm d liu. - D liu phc tp. - Bc u tin khi xy dng ng dng. Khi no khng cn chun tc ha. Mt s tnh hung s khng cn chun tc ha, nu theo nh thit k theo chun th vic a ra mt mu tin truy vn c th phi thc hin truy xut t nhiu bng vi nhau, iu ny c ngha ta phi thc hin kt hp cc bng vi nhau (tuy theo lut) nn thi gian truy xut c th rt ln m yu cu thc t t ra trong tnh hung ny l phi nhanh, th truy xut theo mt bng c sn l nhanh hn, sau y l mt s trng hp khng cn chun tc ha (ty theo tnh hung): - Thng tin tnh ton. Trang 60

H qun tr SQL Server 2000 - Thng tin s kin. - S phn hoch. THIT K BNG D LIU. Table (bng d liu) l mt thnh phn c bn ca CSDL, mt CSDL c thit k t mt hoc nhiu bng d liu, mi bng d liu c cu trc t cc hng v ct d liu, mi hng dng m t mt i tng, vn , s kin,... ct th hin thuc tnh ca cc i tng, s kin,... ca hng. D liu cng ct c cng kiu (data type). Ngoi cc hng, ct bng cn c cc kha, lin kt, rng buc,... Trc khi bt tay vo thit lp bng d liu trc ht ta phi xc nh xem bng s xy dng nh th no, da trn mt s thng tin sau: - Kiu d liu trong bng. - Cc ct, kiu d liu tng ng (v di nu cn thit). - Ct no cho php gi tr NULL (l gi tr m phn d liu thuc hng, ct xc nh khng c gn gi tr no, v vy nn 2 phn t c cng gi tr NULL l khng bng nhau). - Gi tr ngm nh (l gi tr m khi cha nhp vo n nhn gi tr ny). - Ch s Index, kha chnh, kha ngoi. Kiu d liu. SQL Server gm nhng kiu d liu sau: Binary: L kiu d liu cha dng s h hexa, gm 3 kiu d liu Binary, Varbinary, Image. Text: L kiu k t, cha ch ci, k hiu, s, gm nhng kiu d liu sau: - Char: Kiu k t, khi xc nh di th di trong CSDL s xc nh theo di t trc m khng theo di d liu thc c, khng s dng vi k t dng Unicode, di ti a l 8000. - Nchar: Tng t nh Char nhng s dng vi k t Unicode, di ti a 4000. - Nvarchar: Tng t nh NChar nhng kch thc trong CSDL s l kch thc thc d liu hin c, khng tnh theo kch thc t trc, kch thc ti a l 4000. - Varchar: Tng t nh Nvarchar nhng khng h tr Unicode. Trang 61

H qun tr SQL Server 2000 - Text: Kiu vn bn, cha c k t xung dng, lu tr theo dng vn bn, c kch thc ln, c th ln n vi Gb, c ch qun l kiu d liu theo dng con tr v cch thc chn v cp nht s khc, kiu d liu ny khng h tr cho Unicode. - Ntext: Tng t nh Text nhng c h tr Unicode. Data/Time: Kiu d liu ngy, thi gian, ngy v thi gian, gm 2 kiu: - DateTime: y c ngy v thi gian. - SmallDataTime: Ch ngy hoc thi gian. Numeric: D liu kiu s, gm cc kiu d liu sau: - Int, smallint, tinyint, bigint: S nguyn - Float, real, decimal, numeric: S thc. Monetary: Tin t: - Money, Smallmoney. Bit: Kiu s 0, 1. Sql_variant: L kiu d liu xc nh theo kiu d liu khc, mt ct d liu c nh ngha d liu kiu ny c th lu tr nhiu d liu c kiu khc nhau trong cng mt bng. V d c th lu tr nhiu kiu d liu int, binary, char, nhng khng cha d liu kiu text, ntext, image, timestamp, sql_variant. Timestamp: L kiu d liu c kch thc 8 byte, lu tr dng s nh phn do h thng t sinh ra, mi gi tr timestamp trong CSDL l duy nht. Table: L kiu d liu c bit lu tr tp hp cc hng (dng bng), mc ch s dng chnh l lu tr tm thi tp hp cc hng sau truy vn.

Text in row. Nh xem xt trc, d liu kiu char, varchar c di ti a l 8000byte, d liu kiu text, ntext c 2 kiu lu tr: lu tr trc tip, lu tr qun l theo kiu con tr. - i vi lu tr theo kiu trc tip, kch thc ti a i vi text l 8000, i vi ntext l 4000 (kch thc 1 k t m Unicode l 2 byte, m khng Unicode l 1 byte). - Lu tr, qun l theo con tr kch thc ln n GB. lu tr d liu theo kiu con tr u tin ta phi t chc nng Text in row v trng thi On, thuc tnh ny hiu ng c vi kiu d liu image. Trang 62

H qun tr SQL Server 2000 S dng th tc sp_tableoption thay i thuc tnh, thuc tnh thay i theo bng d liu. Gi s bt chc nng text in row nh sau: Sp_tableoption N'TacGia', 'text in row', 'ON' Tt chc nng text in row nh sau: Sp_tableoption N'TacGia', 'text in row', 'OFF' cp nht d liu khi thuc tnh c bt, ta phi dng lnh READTEXT, UPDATETEXT, WRITETEXT (s bn k cu lnh ny sau).

Auto number. t ct d liu kiu s, tng t ng khi mt hng c thm, ct kiu ny khng sa d liu. D liu kiu ny tng ng vi vic khi thm hng d liu chn thm gi tr dng s theo hm NewID().

Rng buc d liu. c mt CSDL khi lu tr d liu c tin cy, chnh xc cao, nhanh v thun tin trong khai thc d liu th ton vn d liu l vn ht sc quan trng. Khi rng buc c thit lp, d liu khi nhp vo CSDL s c kim sot, tin cy thng tin s c bo m. C nhiu kiu rng buc d liu, mt CSDL c th gm mt hoc nhiu rng buc, rng buc c th trn mt bng, trn nhiu bng. Ton vn d liu chia thnh 4 loi: - Ton vn thc th (Entry integrity): Mi thc th u c xc nh theo mt kha, khi bit kha ta hon ton c th xc nh c thc th tng ng. Kha nh vy coi l kha chnh. - Ton vn theo min (Domain integrity): L loi ton vn c hiu ng vi cc ct d liu trong mt phm vi no , v d kiu d liu cng l mt dng ca ton vn min, rng buc theo kha check cng l ton vn theo min. - Ton vn dng tham chiu (Referential integrity): Khi mt bng c quan h vi mt bng khc theo mt mi quan h, trong mi quan h s c mt kha chnh (nh phn ton vn thc th) v mt kha ngoi, kha ngoi s l kha tham chiu ca kha chnh, gi tr ca kha ngoi s thuc tp cc gi tr ca kha chnh hoc gi tr NULL. Trang 63

H qun tr SQL Server 2000 Rng buc kiu quan h (Relationship) gi l ton vn kiu tham chiu. - Ton vn do ngi dng nh ngha (User-defined integrity): L ton vn do ngi dng nh ngha, quy nh d liu nhp vo theo quy cch, gi tr c kim sot cht ch, ton vn kiu ny cng c th xy dng trn c s cc ton vn trc.

Entry integrity

Reference integrity

Data integrity

Domain integrity

User-defined integrity

Bn loi ton vn ni trn ta c th thng rng buc trong SQL Server nh sau: Kiu ton vn Entry integrity 1. 2. 3. Domain integrity 1. 2. 3. 4. Referential integrity 1.

k tng ng vi cc kha, quy tc, Cng c trong SQL Server Rng buc Primary key Rng buc Unique Ct Identity Gi tr ngm nh Default Rng buc kha ngoi Foreign Key Rng buc Check Thuc tnh NOT NULL Rng buc Forelgn Key Trang 64

User-defined integrity

2. 1. 2. 3.

H qun tr SQL Server 2000 Rng buc Check Rules Stored procedures Triggers

Cc kha. Kha chnh Primary Key. L mt hoc t hp nhiu ct d liu xc nh duy nht trong mt bng, gi tr kha chnh lun khc NULL. V d: Bng danh sch tc gi vit sch. Trong v d trn bng d liu c kha chnh l mt ct d liu id, khi ct xc nh l kha chnh bn cnh xut hin biu tng cha kha, thuc tnh Allow Nulls khng c anh du.

Trang 65

H qun tr SQL Server 2000 V d: Bng d liu lu tr thng tin nht k mn sch.

Trong v d trn bng d liu c kha chnh c t hp t 3 ct d liu id_sach, id_sinhvien, ngay_muon, ba ct trn xc nh duy nht mt sinh vin c mn mt loi sch trong mt ngy (gi s quy ch xc nh nh vy), cc ct tham gia kha chnh gi l candidate key. Kha ngoi. Theo chun thit k CSDL, khi lu tr thng tin sch phi c mt ct cha thng tin nh xut bn. Mt nh xut bn c th xut bn nhiu quyn sch v mt quyn sch ch xut bn mt nh xut bn. Nn trong thit k ta phi c: + Bng d liu lu tr danh sch cc nh xut bn: C kha chnh i din cho nh xut bn. + Bng d liu lu tr sch: C cha thng tin nh xut bn. + Quan h gia nh xut bn v sch: M kha nh xut bn thuc bng nh xut bn v thng tin nh xut bn thuc bng sch, ct thng tin nh xut bn thuc bng sch tham gia quan h trn gi l kha ngoi (Foreign key). Ct d liu l kha ngoi c th c quan h vi nhiu kha chnh nhiu bng, mt bng c th c nhiu kha ngoi, kha ngoi c th c gi tr NULL, gi tr ca kha ngoi lun nm trong tp gi tr ca kha chnh trong mi quan h thit lp. Trang 66

H qun tr SQL Server 2000 Kha ngoi v kha chnh phi c cng kiu d liu, cng kch thc.

Rng buc Unique. Unique l rng buc xc nh trn mt hoc t hp ct d liu, ct hoc t hp ct d liu c xc nh rng buc loi ny l duy nht.

Mt bng d liu c th c nhiu rng buc duy nht, mt ct trongmrang buc loi ny cho php nhn gi tr NULL, rang buc duy nht c th s dng lm tham chiu cho kha ngoi. Rng buc Check.

Trang 67

H qun tr SQL Server 2000 L rng buc khng ch d liu nm trong mt phm vi no . Rng buc ny s kim tra d liu khi nhp vo.

Trang 68

H qun tr SQL Server 2000 Gi tr ngm nh Default. Gi tr gn cho ct d liu khi thm bn ghi v cha nhp d liu vo ct ny.

TO BNG D LIU. Sau khi xc nh y cc thng tin thit k CSDL, bc tip theo l thc hin to cu trc CSDL. to cu trc CSDL bc quan trng l to bng d liu. Khi to CSDL h thng t ng to ra mt s bng d liu ngm nh, cc bng d liu ny s cung cp, qun l thng tin qun tr ca CSDL, cung cp mt s hm h thng tr gip bgi dng. To bng cng c. - Chn CSDL - Chn Tables

Trang 69

H qun tr SQL Server 2000 - Nhn phi chut ca s bn phi

Trang 70

H qun tr SQL Server 2000 - Chn New Table.

t kha chnh. xc nh kha chnh ta thc hin chn nhng ct tham gia kha bng cch gi phm shift v chn chut -> nhn chut phi -> chn Set primary key.

Xc nh Identity. - Chn ct d liu -> Chn yes trong mc Identity -> t seed (gi tr khi u) -> t increment (bc t ng tng). Trang 71

H qun tr SQL Server 2000

To bng bng cu lnh. Gi s cn to bng tn NXB c cu trc nh sau:

S dng lnh Create table, kch bn cu lnh nh sau: Create table NXB(id int not null primary identity(1,1), Ten Nvarchar(100), Ghi_chu Ntext) Sa cu trc bng. S dng cng c. Trang 72 key

H qun tr SQL Server 2000 - Chn bng cn sa i ca CSDL. - Nht phi chut -> chn Design Table.

- Thc hin sa cu trc bng. Sa dng cu lnh. sa cu trc bng d liu ta s dng cu lnh Alter table. - Thm mt ct vo bng c:
ALTER TABLE NXB ADD Dia_chi NVARCHAR(100) NULL

- Xa ct t bng c.
ALTER TABLE NXB_Drop column_Dia_chi

Xa bng. S dng cng c. - Chn bng - Nht chut phi - Chn Delete -> Yes. S dng lnh. (Drop Table) Drop Table NXB Trang 73

H qun tr SQL Server 2000 Bng d liu c tham gia mi quan h Relationship khi xa bn cn ch : Nu bng cha kha ngoi th vic xa thc hin bnh thng, nu bng cha kha chnh ca mi quan h th khng xa c.

Nhp d liu vo bng. S dng cng c. - Chn bng d liu - Nht chut phi -> Open Table -> Return all rows

- Nhp d liu theo ng quy cch kiu d liu, rng buc nu c.

Vic sa, xa c thc hin trc tip. i vi cc ct l dng s, tng t ng khng cn nhp d liu. lu li d liu nhp bn di chuyn con tr sang hng khc. Trang 74

H qun tr SQL Server 2000 S dng cu lnh. S dng lnh Inert into. Insert into NXB(Ten, Dia_chi) values(NKim ng, Nh Ni) Nu ct d liu h tr Unicode th trc gi tr nhp vo bn phi thm km k t N (nh v d trn). To, sa rng buc, kha. Phn ny nhm thc hin thao tc vi cc rang buc, kha: ralationship, check, unique,... S dng cng c. - Chn chc nng Design table. - Chn biu nt Manage Indexes/Keys...

Trang 75

H qun tr SQL Server 2000 - Chn bng tng ng.

S dng cu lnh. c th hn ta thc hin theo v d c s cu trc sau:

Create Table NXB(id int not null primary key identity(1,1), Ten Nvarchar(100), Ghi_chu Ntext, Dia_chi nvarchar(150))

Trang 76

H qun tr SQL Server 2000 Go Create Table ChungLoai(id int not null primary key identity, ten 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)

KHA INDEX
THIT K KHA INDEX. Index l mt kha quan trng i vi CSDL c bit l c s d liu ln. Index c thit lp t mt hoc nhiu ct d liu ca bng d liu. cc gi tr ca kha Index s c sp xp v lu tr theo mt danh sch (bng khc). Mi gi tr trong kha Index l duy nht trong danh sch, mi gi tr kha Index s lin kt n gi tr trong bng d liu (lin kt dng con tr). Vic lu tr d liu ca bng c kha Index c thc hin theo cu trc cy B-Tree nhm tng tc truy xut d liu i vi a (thit b th cp).

Khi tm kim mt gi tr trong ct d liu, m ct ny tham gia to kha Index, u tin cu lnh xc nh v tr ca gi tr nm trong kha Index bng php duyt cy, sau thc hin tm theo lin kt n bn ghi cha gi tr tng ng vi kha trong bng. Trang 77

H qun tr SQL Server 2000 S v d di y gm kha Index c to t ct emp_id ca bng employees.

Vic thit k kha Index da trn nhu cu truy vn, chn d liu trn mt bng, xc nh da vo mt s tham s sau: + Ct thng c s dng lm kha truy vn d liu (xc nh ct tham gia kha Index). + Tp lnh thng s dng truy vn cn tc cao (xc nh tp ct tham gia truy vn). + D liu nhp vo bng c kha Index cn nhanh hn hay truy vn cn nhanh hn (xc nh t clustered hoc nonclustered). + Lng d liu nhp ng lot nhiu hay t (xc nh tham s fillfactor). Clustered Index. Khi kha t thuc tnh Clustered, d liu ca bng s c sp xp vt l trn a, nh vy khi thit k kha dng ny d liu c chn v s tm ng v tr trn a lu tr (vng a dnh cho bng d liu), chnh v vy m c th xy ra trng hp phi dch chuyn danh sch cc gi tr c a. Nhng vic to kha Index dng ny s khng cn sp xp gi tr dng logic m khi truy nhp a bo m d liu c sp xp. Bng d liu ch c th to ti a mt kha Lustered Index.

Nonclustered Index.

Trang 78

H qun tr SQL Server 2000 D liu Index khng sp xp dng vt l m ch sp xp logic, d liu ca bng lu tr gi tr kha Index c sp xp, nhanh trong nhp d liu. Unique Index. Xc nh d liu ca ct tham gia kha Index khng lp li. Fill Factor. Khi to kha Index, d liu tham gi to kha Index s c phn theo mc ca B-Tree, cc mc c phn theo page d liu, gi tr Fill factor xc nh phn khong trng ti a ca page theo t l phn trm. Nh khong trng ny m tc b tr cu trc Index, tc truy lc thng tin trong cy c ci thin. TO KHA INDEX. To theo cng c. - Chn chc nng Design table - Vo bng Index manager.

- New - Chn cc ct tham gia to kha Index - t tham s. Trang 79

H qun tr SQL Server 2000 To theo cu lnh. - S dng trong cu lnh Create Table, Alter Table. - S dng lnh Create Index. CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )

V d: CREATE INDEX sach_idx XA INDEX. S dng cng c. - Vo Index amnager - Chn kha Index -> Delete ON sach (id)

S dng cu lnh. S dng lnh Drop Index. Drop Index Sach(sach_idx) Trang 80

H qun tr SQL Server 2000

KHUNG NHN VIEW


KHI NIM KHUNG NHN. Khung nhn (View) l mt bng tm thi, c cu trc nh mt bng, khung nhn khng lu tr d liu m n c to ra khi s dng, khung nhn l i tng thuc CSDL. Khung nhn c to ra t cu lnh truy vn d liu (lnh Select), truy vn t mt hoc nhiu bng d liu. Khung nhn c s dng khai thc d liu nh mt bng d liu, chia s nhiu ngi dng, an ton trong khai thc, khng nh hng d liu gc. C th thc hin truy vn d liu trn cu trc ca khung nhn.

TO KHUNG NHN. S dng cng c. - Chn chc nng Views ca CSDL. - Nhn phi chut.

Trang 81

H qun tr SQL Server 2000

- Chn New View.

- Thm cc bng tham gia cu lnh truy vn d liu cho View

Trang 82

H qun tr SQL Server 2000 - Son lnh truy vn hoc nh du cc ct tham gia to View.

- Sa i lnh Select theo mun. - Ghi kch bn -> t tn view. To theo cu lnh. S dng lnh Create View: CREATE VIEW VIDU as SELECT FROM dbo.authors.au_lname, dbo.authors.au_fname, dbo.titles.title 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 S DNG VIEW. - Chn View - Nhn nt phi chut.

Trang 83

H qun tr SQL Server 2000

Thc hin cc chc nng tng t table.

TH TC LU TR
KHI NIM TH TC LU TR V HM. Th tc lu tr c thut ng Stored Procedure, l mt i tng ca CSDL tng t nh khung nhn, th tc lu tr c th to ra t cng c v cu lnh. TH tc c thc hin nh cu lnh (c th thc hin t SQL Query analyzer, cc v tr gi cu lnh T-SQL). Th tc lu tr c kt cu t mt kch bn cu lnh T-SQL, th tc c nhng c im c bn sau: + Truyn tham s. + Gi th tc khc. + Tr v cc gi tr tham s, chuyn gi tr tham s cho cc th tc c gi.

Trang 84

H qun tr SQL Server 2000 + Tr v gi tr trng thi th tc l thnh cng hay khng thnh cng.

Th tc lu tr c nhiu u im so vi thc hin cu lnh T-SQL t cc my khch: + Lp trnh theo module: Th tc c thit lp trong tng CSDL mt ln, c th gi thc hin nhiu ln trong mt ng dng, c th gi t nhiu ng dng. + Thc hin nhanh hn: Khi cn thc hin mt lng ln cu lnh TSQL, th tc lu tr thc hin nhanh hn v khi my ch nhn c nhiu cu lnh cng mt lc u phi kim tra tnh hp l quyn ca ti khon t my khch v cc tham s khc. Khi th tc cn gi nhiu ln trn cc my khch th th tc thc hin mt ln u tin, nhng ln sau my khch s chy th tc c bin dch. + Lm gim lu lng trn mng: Thay cho v my khch phi gi nhiu dng lnh t cc ng dng n my ch, khi s dng th tc th n ch cn gi mt lnh, t dn n lu lng thng tin lnh truyn qua mng gim. + An ninh bo mt hn: Khi khng mun cho mt user trc tip khai thc mt i tng hay bng d liu no , m cn cho user c khai thc th th tc c th gip bn gn quyn khai thc cho ngi . Vic gn quyn khai thc nh ni trn s gip cho vn an ninh bo mt trong CSDL tt hn. Trang 85

H qun tr SQL Server 2000 PHN LOI TH TC LU TR. Th tc lu tr c phn thnh 5 loi nh sau: System Stored Procedure. L th tc c lu tr tng CSDL Master, th tc loi ny c bt u bng ch sp_ th tc loi ny thng c s dng trong qun tr CSDL v an ninh bo mt. V d: Mun bit tt c cc tin trnh ang thc hin bi user no: sp_who @loginame='sa' Kt qu:

Local Stored Procedure. y l loi th tc thng dng nht, nm trong CSDL do ngi dng to ra, thc hin mt cng vic no . Th tc loi ny thng c to bi DBA (Database Administrator) hoc ngi lp trnh. Temporary Stored Procedure. C chc nng tng t nh Local Stored Prcedure nhng th tc loi ny t hy khi kt ni to ra n ngt hoc SQL Server ngng hot ng v n c to ra trn CSDL TempDB. Extended Stored Procedure. y l loi th tc s dng chng trnh ngoi vi c bin dch thnh DLL. Tn th tc c bt u bng xp_. V d th tc xp_sendmail dng gi mail, th tc xp_cmdshell dng thc hin lnh ca DOS (xp_cmdshell dir c:\). Remote Stored Procedure: L loi th tc s dng th tc ca mt server khc. THIT LP TH TC LU TR. S dng cng c. Trang 86

H qun tr SQL Server 2000 - Chn CSDL cn to th tc trong Enterprise Manager > Stored Procedures - Nhn nt phi chut -> New Stored Procedure

- t tn th tc, xc nh role ngi khai thc, son kch bn cu lnh. S dng cu lnh. S dng lnh Create Procedure, tin xem xt ta xt theo cc v d , cc v d di y thc hin to th tc v thao tc vi CSDL pubs tin trong d liu mu, tm hiu c php cu lnh T-SQL bn xem phn cu lnh T-SQL trong cng ti liu ny. Th tc khng c tham s. Th tc sau s thc hin lit k tt c cc tc gi, sch v nh xut bn m tc gi vit sch. Use Pubs CREATE PROCEDURE AS SELECT au_lname, FROM authors a ON a.au_id =

au_info_all au_fname, title, pub_name INNER JOIN titleauthor ta ta.au_id INNER JOIN titles t

Trang 87

H qun tr SQL Server 2000 ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id GO Kt qu thc hin:

Th tc c tham s. Th tc sau thc hin lc tm tc gi c tn, h truyn theo tham s.

USE pubs GO 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 publishers p = ta.title_id INNER JOIN

ON t.pub_id = p.pub_id WHERE au_fname = @firstname

AND au_lname = @lastname GO Trang 88

H qun tr SQL Server 2000 Cch truyn tham s: + Gn gi tr theo th t: EXECUTE au_info 'Dull', 'Ann' + Gn gi tr theo tn bin EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann' + Gn gi tr theo tn bin, khng theo th t EXECUTE au_info @firstname = 'Ann', @lastname = 'Dull' Th tc c tham s ty la theo gi tr a vo. V d ny s cp n vic truyn tham s theo mu, gi tr tham s c ngm nh khi to th tc v th tc khi thc hin s kim tra gi tr tham s nhp vo. USE pubs GO CREATE PROCEDURE au_info2 @lastname varchar(30) = 'D%', @firstname varchar(18) = '%' 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 LIKE @firstname AND au_lname LIKE @lastname GO

Tham s % xc nh gi tr ty nhp vo tham s, tham s D% xc nh gi tr u tin ca chui phi bng ch D. Khi ngm nh cc gi tr nh trn tham c khng c truyn gi tr s t nhn gi tr ngm nh. Cch truyn tham s nh sau: + Khng truyn tham s: EXECUTE au_info2 + Ch truyn tham s u, tham s sau s nhn gi tr ngm nh. EXECUTE au_info2 'Wh%' Trang 89

H qun tr SQL Server 2000 + Ch truyn mt tham s, tham s xn li s nhn gi tr ngm nh. EXECUTE au_info2 @firstname = 'A%' + Tham s th nht xc nh gi tr mt k t thuc v tr c [CK] ch nhn k t C hoc K, [OE] ch nhn gi tr O hoc E. EXECUTE au_info2 '[CK]ars[OE]n' + Xc nh r gi tr tham s EXECUTE au_info2 'Hunter', 'Sheryl' + Xc nh kiu gi tr tham s. EXECUTE au_info2 'H%', 'S%'

Th tc s dng tham s ly gi tr ra (tham tr). V d sau s m t k thut s dng tham tr, nh trong cc v d trc ta s dng tham s truyn gi tr vo tn tham s bt u bng 1 ch @, tham s c bt u bng 2 ch @@. S c s dng trn nhiu dng lnh, s dng cng t kha OUTPUT xc nh l tham tr ly gi tr ra. V d sau thc hin truyn tham s vo v ly gi tr ra: USE pubs GO CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT AS SELECT 'Title Name' = title FROM titles WHERE title LIKE @@TITLE SELECT @@SUM = SUM(price) FROM titles WHERE title LIKE @@TITLE GO

Tham s bt u bng 2 k t @@ xc nh c s dng cho nhiu cu lnh, s dng cng t kha OUTPUT xc nh l bin tham tr.. V d trn s dng bin @@Title xc nh iu kin a ra tn sch y l loi bin truyn vo s dng cho hai cu lnh Select, bin @@Sum xc nh l bin tham tr dng ly gi tr ra. Cch s dng tham s nh sau: DECLARE @@TOTALCOST money Trang 90

H qun tr SQL Server 2000 EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT IF @@TOTALCOST < 200 BEGIN PRINT ' ' 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)))

V d trn s dng bin @@TOTALCOST vo v tr bin @@SUM trong th tc. Kt qu thc hin nh sau: Title Name ------------------------------------------------------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 can be purchased for less than $200.

Th tc s dng bin OUTPUT kiu con tr (Cursor). V d sau to th tc c bin kiu Cursor, bin ny s qun l mt bng d liu c truy vn bng cu lnh Select. CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT AS SET @titles_cursor = CURSOR FORWARD_ONLY STATIC FOR SELECT * FROM titles OPEN @titles_cursor GO Trang 91

H qun tr SQL Server 2000 Con tr c a vo bin kiu Cursor c tn @Titles_cursor, hng dch chuyn Forward (tin) v Static. S dng bin nh v d 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 GO

Bin con tr c a vo vin @MyCursor, khi m con tr v tr bn ghi u tin ca bng c xc nh. Trong v d trn s dng vng lp duyt tng bn ghi, vic x l d liu thc hin trong vng lp. Th tc t thuc tnh n kch bn cu lnh. V d sau s t thuc tnh WITH ENCRYPTION n vn bn trong th tc vi ngi s dng. CREATE PROCEDURE encrypt_this WITH ENCRYPTION AS SELECT * FROM authors GO Khi s dng th tc h thng sp_helptext xem ni dung th tc: EXEC sp_helptext encrypt_this

Kt qu nh sau: The object's comments have been encrypted. Trang 92

H qun tr SQL Server 2000 SA, XA TH TC S dng cng c. - Chn th tc cn sa, xa -> thc hin sa ni dung hoc chc nng xa.

S dng cu lnh. - Sa s dng lnh Alter Procedure - Xa s dng lnh Drop Procedure Bn c c th t tm hiu v User Defined Function tong Book Online, l i tng gi l hm thuc CSDL, c chc nng v cch thc hot ng gn ging th tc.

TRIGGER KHI NIM TRIGGER. Trigger l mt th tc c bit m vic thc thi ca n t ng khi c s kin xy ra, cc s kin gi th tc c bit ny c nh ngha trong cu lnh, thng thng c thc hin vi cc s kin lin quan n Insert, Update, Delete d liu. Trigger c s dng trong vic bo m ton vn d liu theo quy tc xc nh, c qun l theo bng d liu hoc khung nhn. NHNG TRNG HP S DNG TRIGGER. - S dng Trigger khi cc bin php ton vn d liu nh Constraint, rule, khng bo m. Khc vi cc cng c bao m ton vn d liu nu, cc cng c ny s thc hin kim tra tnh ton vn trc khi a d liu vo CSDL (cn gi l Declarative Data Integrity), cn Trigger thc hin kim tra tnh ton vn khi cng vic thc hin ri (cn gi l Procedural Data Integrity).

Trang 93

H qun tr SQL Server 2000 - Khi CSDL cha c chun ha (Normalization) th c th xy ra d liu tha, cha nhiu v tr trong CSDL th yu cu t ra l d liu cn cp nht thng nht trong mi ni. Trong trng hp ny ta phi s dng Trigger. - Khi thay i day chuyn d liu gia cc bng vi nhau (khi d liu bng ny thay i th d liu trong bng khc cng c thay i theo). C IM CA TRIGGER. - Mt trigger c th thc hin nhiu cng vic (theo kch bn), c th nhiu s kin kch hot thc thi trigger, c th tch ri cc s kin trong mt trigger. - Trigger khng c to trn bng temprate hay system. - Trigger ch thc thi t ng thng qua cc s kin m khng thc hin bng tay. - Trigger s dng c vi khung nhn. - Khi trigger thc thi theo cc s kin Insert hoc Delete th d liu khi thay i s c chuyn sang cc bng Inserted Table, Deleted Tabla, l 2 bng tm thi ch cha trong b nh, cc bng ny ch c s dng vi cc lnh trong trigger. Cc bng ny thng c s dng khi phc li phn d liu thay i (roll back). - Trigger chia thnh 2 loi Instead of v After: Instead of l loi trigger m hot ng ca s kin gi n s b qua v thay vo n l cc lnh thc hin trong trigger. After (tng ng vi t kha For) y l loi ngm nh, khc vi loi Instead of th loi trigger ny s thc hin cc lnh trong n sau khi thc hin xong s kin gi n. TO TRIGGER. To trigger c thc hin thng cng c v cu lnh: To trigger bng cng c. - Chn bng d liu hoc khung nhn. - Nhn nt phi chut. - Chn All tasks -> Manage Triggers...

Trang 94

H qun tr SQL Server 2000 - Son kch bn to trigger.

(C php c th hn bn xem trong phn tip theo) To trigger bng cu lnh. S dng lnh Create Trigger, c php chung nh sau: 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 [ ...n ] }] sql_statement [ ...n ] } }

Cc tham s c bn: + trigger_name: Tn trigger. + table/view: Tn bng hoc khung nhn. + For/After/Instead Of: Loi trigger. Trang 95

H qun tr SQL Server 2000 + { [DELETE] [,] [INSERT] [,] [UPDATE] }: S kin khi t ng gi thc thi trigger. + sql_statement [ ...n ]: Kch bn cc cu lnh x l ca trigger. Cc cu lnh sau khng c thch thi trong kch bn cc cu lnh x l ca trigger:
ALTER DATABASE DISK RESIZE LOAD LOG RESTORE LOG CREATE DATABASE DROP DATABASE RECONFIGURE DISK INIT LOAD DATABASE RESTORE DATABASE

c th hn ta xt mt s v d sau: V d to mt trigger thng bo. CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE AS RAISERROR (50001, 16, 10) GO V d trn to mt thng bo cho cc client khi thc hin thm hoc sa d liu trn bng Titles, m thng bo l 50001, l m thng bo do ngi dng nh ngha. to thng bo bn thao tc nh sau: - Vo menu Tools -> Manage SQL Server Messages

Trang 96

H qun tr SQL Server 2000 - Chn bng Messages -> New - t m, son ni dung, kiu thng bo (Serverity), m thng bo s c s dng trong cc ng dng hoc cu lnh yu cu. V d to trigger t ng gi Email khi c thc 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

V d to trigger kim son khong gi tr gia 2 bng. V d sau s to trigger thc hin kim sot phm v mc lng ca mt nhn vin va chn vo c thuc gi tr nh mc lng trong bng mc lng hay khng. CREATE TRIGGER employee_insupd ON employee FOR INSERT, UPDATE AS DECLARE @min_lvl tinyint, @max_lvl tinyint, @emp_lvl tinyint, @job_id smallint SELECT @min_lvl = min_lvl, @max_lvl = max_lvl, @emp_lvl = i.job_lvl, @job_id = i.job_id Trang 97

H qun tr SQL Server 2000 FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id JOIN jobs j ON j.job_id = i.job_id IF (@job_id = 1) and (@emp_lvl <> 10) BEGIN RAISERROR ('Job id 1 expects the default level of 10.', 16, 1) ROLLBACK TRANSACTION END ELSE IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl) BEGIN RAISERROR ('The level for job_id:%d should be between %d and %d.', 16, 1, @job_id, @min_lvl, @max_lvl) ROLLBACK TRANSACTION END

SA, XA TRIGGER. S dng cng c. - Chn trigger trong mc Manage Triggers - Thc hin sa ni dung hoc xa.

Sa, xa theo cu lnh. - S dng lnh Alter trigger sa. - S dng lnh Drop Trigger xa. (Bn c th tm hiu chi tit hn trong Book Online)

Trang 98

H qun tr SQL Server 2000 XUT NHP D LIU Trong chng ny bn c s tm hiu k thut trao i d liu vi cc mi trng ngoi Server ca SQL, c th vi mt CSDL khc, mt Server SQL khc, mt h qun tr CSDL khc hoc ni ghp tp tin CSDL. SERVER LIN KT LINKED SERVER. Tng t nh cc h qun tr CSDL ln khc (Access, Oracle), h thng cung cp cng c lin kt vi h qun tr CSDL khc. Khi lin kt c thit lp, vi quyn hn ca user lin kt bn c th thc hin khai thc d liu lin kt trn SQL Server. To ODBC. ODBC vit tt ca cm t Open DataBase Connectivity, l cng c c Windows cung cp vi mc ch lm mi trng trao i d liu gia nhng CSDL, gia nhiu h qun tr CSDL vi ng dng. ODBC to nhng chun chung nht kt ni n CSDL v ng dng. Khi thc hin khai thc d liu thng qua ODBC, ng dng lin kt theo tn ODBC, quyn hn khai thc thc hin khi to kt ni t ODBC n CSDL. Cch to ODBC: - Chn ODBC trong Control panel.

- Chn bng User DSN -> Add Trang 99

H qun tr SQL Server 2000 - Chn Driver ca h qun tr CSDL ca CSDL cn lin to ODBC.

- Chn Finish. - Nhp tn ODBC (tn ny s s dng cho ng dng khc, nn nhp theo chun chung d s dng), cc tham s khc ( y trn hnh s dng Driver ca SQL Server nn bn phi chn Server). - Next.

- Nhp Login ID, mt khu -> Next. - nh du Change the default database to -> Chn CSDL -> Next -> Finish Sau khi to xong trong danh sch xut hin ODBC bn va to, t danh sch bn c th sa i, xa ODBC khi cn thit.

Trang 100

H qun tr SQL Server 2000

To lin kt t Access. T h qun tr CSDL Access bn c th to lin kt n cc h qun tr CSDL khc (Acess, Dbase,), hoc thng qua ODBC. Trong v d minh ha s dng lin kt t Access vi ODBC (i vi SQL Server hoc Oracle, My SQL th Access phi lin kt thng qua ODBC v cc h qun tr CSDL ny khng thc hin khai thc d liu qua tp tin ch khai thc thng qua tn CSDL, m Access ch thc hin theo phng thc m tp tin). Cc bc thc hin nh sau: - M h qun tr CSDL Access. - M hoc to CSDL mi t Access - Chn File -> Get External Data -> Link Tables. - Chn ODBC Databases.

Trang 101

H qun tr SQL Server 2000 - Chn ODBC cn lin kt (Authors). - Ok. - Nhp Login ID v mt khu. - Chn bng hoc khung nhn cn lin kt trong danh sch.

- Nhn Ok, danh sch cc bng trong Access c khai thc tng t nh cc bng khc.

Trang 102

H qun tr SQL Server 2000 To Server lin kt Linked Server. T SQL Server c th to lin kt trc tip n cc h qun tr CSDL khc (Access, SQL Server, Oracle, My SQL,...) m khng cn thit phi thng qua ODBC nh Access xt trc. To bng cng c. - Vo mc Security -> Linked Server.

- Nhn nt phi chut -> New Linked Server. - Nhp cc tham s: Trang 103

H qun tr SQL Server 2000 + Tn Server. + Provider (Driver ca h qun tr CSDL cn thit lp lin kt, trong v d minh ha thc hin vi Access).

- Thc hin khai thc thng qua cu lnh, trong cu lSQL phi ch ng dn, v d Select * from Biblio...Authors s thc hin lit k ton b danh sch cc bn ghi ca bng authors.

To bng cu lnh. S dng lnh sp_addlinkedserver to server lin kt. Trang 104

H qun tr SQL Server 2000 V d to Linked Server Biblio: sp_addlinkedserver 'Biblio', Access 97', 'Microsoft.Jet.OLEDB.4.0', 'c:\data\biblio.mdb'

(ng dn phi ph hp vi Server)

Xa Linked Server. - S dng cng c: Chn Linked Server cn xa -> thc hin xa. - S dng lnh : sp_dropserver [ @server = ] 'server' [ , [ @droplogins = ] { 'droplogins' | NULL} ]

S DNG BCP V BULK INSERT NHP D LIU. Bcp l cu lnh dng command prompt, dng xut (export) v nhp (import) d liu gia SQL Server v tp tin (dng text hoc excel). Cc tp tin tham gia xut nhp phi c cu trc d liu kiu bng (hng, ct), bng d liu ca SQL Server khi thc hin nhp d liu phi c cu trc tng ng c sn. Bulk insert l cu lnh tng t bcp nhng ch thc hin import d liu m khng export. C php lnh bcp. Lnh bcp c thc hin ti ca s lnh (command prompt). bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F first_row] [-L last_row] [-b batch_size] [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6] [-q] [-C code_page] [-t field_term] [-r row_term] [-i input_file] [-o output_file] [-a packet_size] [-S server_name[\instance_name]] [-U login_id] [-P password] [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"] (bn tm hiu thm trong book online) Trang 105

H qun tr SQL Server 2000 V d s dng lnh bcp. + S dng lnh c t kha out copy ton b d liu t mt bng hoc khung nhn ra tp tin. bcp pubs..titleview out titleview.txt -c -Sservername -Uusername -Ppassword

+ S dng lnh Select copy mt tp ra tp tin, c t kha queryout.

bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\Authors.txt -c Sservername -Uusername -Ppassword

Kt qu thc hin: Ni dung tp tin Authors.txt

Abraham Reginald Cheryl Michel Innes Ann Marjorie

Bennet Blotchet-Halls Carson DeFrance del Castillo Dull Green

Morningstar Greene Burt Sheryl Livia Charlene Stearns Heather Michael Sylvia Albert Gringlesby Hunter Karsen Locksley MacFeather McBadden O'Leary Panteley Ringer Trang 106

H qun tr SQL Server 2000 Anne Meander Ringer Smith

Dean Straight Dirk Stringer Johnson White

Akiko Yokomoto

Mt s tham s c bn: - Out: Copy ton b mt Table hoc view ra tp tin. - Queryout: Copy tp d liu c truy vn theo cu lnh. - c: Ch ra rng cu lnh dng kiu k t phn nh cc ct, nu khng ch th cu lnh t nhn tab (\t) phn nh v dng new line xung dng mi.

C php lnh Bulk Insert. Lnh Bulk Insert gn ging lnh bcp nhng Bulk Insert ch s dng nhp d liu vo SQL Server (Insert), lnh ny c thc hin bng SQl Query Analyzer. C php chung:
BULK INSERT [ [ 'database_name'.] [ 'owner' ].] { 'table_name' FROM 'data_file' } [ WITH ( [ BATCHSIZE [ = batch_size ] ] [ [ , ] CHECK_CONSTRAINTS ] [ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ] [ [ , ] DATAFILETYPE [ = { '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 [ = last_row ] ] [ [ , ] MAXERRORS [ = max_errors ] ] [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]

Trang 107

H qun tr SQL Server 2000


[ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ] [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ] [ [ , ] TABLOCK ] ) ]

V d thc hin copy ton b d liu tp tin newpubs.dat vo bng publishers2 (bng ny c cu trc tng ng), tp tin kiu k t, ngn cch gia cc ct l du phy ,, xung dng mi bng k t \n (xung dng di v chuyn v u dng). BULK INSERT pubs..publishers2 FROM 'c:\newpubs.dat' WITH ( DATAFILETYPE = 'char', FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )

DETTACH V ATTACH C S D LIU. Mc ny s ni v k thut hy v ni ghp tp tin CSDL vi Server. Gi s bn c cc tp tin ca CSDL (gm tp tin d liu v nht k c th c copy t v tr khc). Copy tp tin ca CSDL. Trc tin ta xem k thut copy cc tp tin CSDL sang mt v tr khc (m vn gi v tr), sau khi copy sang v tr khc bn c th s dng sang Instance mi. Cc bc thc hin nh sau: - Stop dch v SQL ca Instance c CSDL. - Copy cc tp tin ca CSDL sang v tr cn thit. - Start dch v SQL ca Instance tip tc lm vic. Dettach c s d liu. L bc thc hin tch CSDL khi Instance, nntance khng qun l CSDL nhng khc vi xa CSDL l cc tp tin cha CSDL vn cn. - Chn CSDL cn dettach. -> All tasks -> Dettach Database

Trang 108

H qun tr SQL Server 2000

- Nhn Ok.

Attach tp tin CSDL vo Instance. Mc ny gii thiu k thut ghp ni tp tin CSDL vo Instance, l bc tip theo ca cc bc Copy v Dettach. Cc bc thc hin nh sau: - Chn Instance cn Attach CSDL -> Databases -> all tasks -> attach database...

Trang 109

H qun tr SQL Server 2000 - Chn nt browse (...)

- Chn tp tin mdf ca CSDL cn attach. - t tn CSDL. - Xc nh User owner. - Ok. IMPORT V EXPORT C S D LIU. Phn ny s trnh by k thut nhp v xut d liu t CSDL vi cc h qun tr CSDL khc hoc Instance, CSDL khc ca SQL Server. Import Nhp d liu. Dng nhp d liu t ngoi vaof CSDL t h qun tr CSDL khc hoc CSDL khc ca SQL Server. - Chn Databases -> All tasks -> Import Data...

Trang 110

H qun tr SQL Server 2000

- Next -> Chn Data Source (C th l SQL Server, Oracle, Access,...), trong v d minh ha chn Access. - Chn tp tin (file name) -> Next

- Chn Instance cn chuyn d liu vo, user name., tn CSDL (c trc hoc to ti thi im ny bng cch chn New) -> Next

Trang 111

H qun tr SQL Server 2000

- Chn cch chuyn ton b bng d liu hay thng qua cu lnh truyn vn (trong v d minh ha chn bng d liu) -> Next

- Chn cc bng, khung nhn cn Import (c th la chn mt s chc nng khc c th hn, bn c t tm hiu), tn cc bng, khung nhn ca SQL Server nhn d liu -> Next.

Trang 112

H qun tr SQL Server 2000

- Chn chc nng thc hin ngy hay theo lch > Next -> Finish

- Xem thng bo sau khi chuyn -> Done

Trang 113

H qun tr SQL Server 2000

EXPORT XUT D LIU. Phn ny gii thiu k thut xut d liu t mt CSDL ca SQL Server ra mt h qun tr CSDL khc hoc mt CSDL khc ca SQL Server. Tng t nh Import nhng Export thc hin Data Source l SQL Server, cn Destination l h qun tr CSDL khc hoc CSDL khc ca SQL Server (phn ny bn c t xem xt).

Trang 114

H qun tr SQL Server 2000

SAO LU, KHI PHC D LIU


Chng ny s gii thiu k thut sao lu (backup) v khi phc (restore) d liu, l k thut thng c s dng bo m an ton d liu phng trng hp CSDL b hng, nht k d liu. Chc nng ny c thc hin bng 2 phng php: Bng cng c v cu lnh T-SQL. NHNG L DO PHI SAO LU V KHI PHC D LIU. Trong qu trnh thc hin qun tr CSDL SQL Server th mt s nguyn nhn sau y bt buc bn phi xem xt n k thut sao lu v khi phc d liu: + a b hng (cha cc tp tin CSDL). + Server b hng. + Nguyn nhn bn ngoi (thin nhin, ha hon, mt cp,...) + User v tnh xa d liu. + B v tnh hay c lm thng tin sai lch. + B hack. CC LOI BACKUP. Backup d liu trong SQL Server gm cc loi sau: + Full Database Backups: Copy ton b CSDL (cc tp tin bao gm cc bng, khung nhn, cc i tng khc). + Differential Database Backups: Copy nhng d liu thay i trong Data file k t ln full backup gn nht. + File or file group backups: Copy mt file n hay file group. + Differential File or File Group Backups: Thc hin nh Differential Database nhng copy phn d liu thay i ca file n hoc file group. + Transaction log backups: Ghi nhn tt c cc transaction cha trong transaction log file k t ln transaction log backup gn nht. Vi loi sao lu ny ta c th khi phc d liu ti mt thi im.

Trang 115

H qun tr SQL Server 2000 CC M HNH PHC HI D LIU. + Full Recovery model: L m hnh phc hi ton b hot ng giao dch ca d liu (Insert, Update, Delete, hot ng bi lnh bcp, bulk insert). Vi m hnh ny ta c th phc hi d liu ti mt thi im trong qu kh c lu trong transaction log file. + Bulk-Logged Recovery Model: M hnh ny c thc thi cho cc thao tc bcp, bulk insert, create index, writetext, updatetext, cc hot ng ny ch nht k s kin vo log bit m khng sao lu ton b d liu, chi tit nh trong full recover. Cc s kin Insert, Update, Delete vn c nht k v khi phc bnh thng. + Simple Recovery Model: Vi m hnh ny bn ch phc hi li thi im backup gn nht m khng theo thi im khc trong qu kh. Cch t m hnh khi phc: - Chn CSDL. - Nhn nt phi chut -> Properties -> Options -> Recovery

Xt v d sau: Gi s ta c mt CSDL c backup theo chin lc nh hnh v:

Trang 116

H qun tr SQL Server 2000

Nhn hnh trn ta thy CSDL c lp lch Full Database Backup vo ngy ch nht, Differential Database Backup vo ngy th ba v th nm, cn Log Database Backup vo 5 ngy trong tun, ngy th su c s c vi CSDL data file b hng, vn t ra l phi phc hi d liu v CSDL hot ng bnh thng. Ta phi lm cc bc sau: + Thc hin Backup log file (gi s log file khng b hng). + Khi phc Full Database ca ngy ch nht. + Phc hi Differential Database ca ngy th nm. + Khi phc Transaction log backup ngy th nm. SAO LU C S D LIU - BACKUP DATABASE. Trc khi xem xt k thut sao lu CSDL, ta thng nht mt s thut ng bng ting Anh nh sau: + Backup: L qu trnh copy ton b hoc mt phn database, transaction log, file, file group thnh lp mt backup set c cha trong backup media (disk hoc tape) bng cch s dng mt backup device (tape drive name hoc physical filename). + Backup Device: Mt file vt l hoc mt drive tape. + Backup file: Mt file cha Backup set. + Backup media: L Disk hoc tape.

Trang 117

H qun tr SQL Server 2000 + Backup set: Mt b backup mt ln backup n cha trn backup media. Cc bc thc hin backup nh sau: - Chn CSDL cn backup. - Nhn phi chut -> All Tasks -> Backup Database

- Nhp cc tham s, la chn kiu. KHI PHC D LIU RESTORE DATABASE. L chc nng thc hin khi phc d liu sao lu, ty theo chin lc backup m bn c th phc hi n thi im no, thu c b d liu trong qu kh nh th no. Khi phc d liu c thc hin theo th t backup, thng tin ny c lu tr trong msdb Cc bc thc hin nh sau:

Trang 118

H qun tr SQL Server 2000 - Chn mc Databases -> Nhn nt phi chut -> All Tasks -> Restore Database

- Nhp tham s, chn m hnh khi phc.

Trang 119

H qun tr SQL Server 2000

PHN QUYN, BO MT
Chng ny s gii thiu bn c k thut phn quyn, qun l ngi dng, t cc mc bo mt cho CSDL. CH BO MT SECURITY MODE. Nh gp trong phn ci t SQL Server, SQL Server c 2 ch bo mt: + Windows Authentication Mode (Windows Authentication) + Mixed Mode Authentication) Windows Authentication. L ch bo mt m nhng User truy nhp SQL Server phi l nhng User ca Windows. Khi Server t ch bo mt ny, nhng User phi l nhng User c Windows qun l mi c truy nhp. (Windows Authentication and SQL Server

Nhn trn hnh ta thy khi thc hin ch ny ngi s dng mun khai thc SQL Server phi thng qua 4 bc xc thc (1- Domain, 2- Computer, 3- SQL Server, 4- Database). SQL Server Authentication.

Trang 120

H qun tr SQL Server 2000 Khi thit lp ch bo mt ny, nhng User c quyn khai thc phi l nhng User do qun tr SQL Server to ra, m nhng user ca Windows khng c khai thc. Tuy nhin, SQL Server cho php thit lp hai ch Windows Authentication Mode (Windows Authentication) v Mixed Mode (Windows Authentication and SQL Server Authentication), ch Mixed Mode l s kt hp ca Windows Authentication v SQL Server Authentication, ch ny c user ca Windows v SQL Server c th thit lp truy nhp SQL Server.

t ch . - Nhn phi chut chn tn Server (Instance). - Chn Properties. - Chn bng Security.

Trang 121

H qun tr SQL Server 2000

- Chn ch bo mt -> Ok SERVER ROLE, DATABASE ROLE. Role l i tng xc nh nhm thuc tnh gn quyn cho cc user tham gia khai thc SQL Server. Server Role. Nhm cc quyn thc hin qun tr h thng, gm cc nhm sau: + Bulk Insert Administrators: c php thc hin Bulk Insert. + Database Creators: c php to v sa i cu trc CSDL. + Disk Administrators: C th qun tr cc file trn a. + Proccess Administrator: Qun tr cc dch v ang chy ca SQL Server. + Security Administrators: Qun tr h thng bo mt. + Setup Administrators: Qun tr cc th tc m rng (xp_). + System Administrators: Qun tr h thng SQL Server. Trang 122

H qun tr SQL Server 2000 Xem c th nh sau: - M rng Server (nhn du + phn tn Server). - M rng Security. - Chn Server Roles:

Database Role. Role l i tng m thng qua n ngi qun tr c th gn quyn khai thc cho ngi s dng. Role do CSDL qun l, khi to CSDL h thng t t mt s Role ngm nh.

Ngi nhng Role ngm nh ta c th to Role mi. To Role theo cng c.

Trang 123

H qun tr SQL Server 2000 - Chn Roles trong CSDL -> Nhn phi chut -> New Database Role.. - t tn, chn user (chn user c th lm sau). - Nhn Ok.

Sau khi to xong, thc hin gn quyn khai thc cho Role. - Chn Role cn gn quyn.

- Chn Perrmissions... - t cc quyn cho tng i tng trong CSDL.

Trang 124

H qun tr SQL Server 2000

Nu chn quyn nhn chn xut hin du chn mu xanh, nu cm nhn chn xut hin du mu . C th t quyn khai thc i vi role cho tng ct ca bng d liu. Mi thao tc xa, sa c thc hin nh cc i tng khc. To theo cu lnh. S dng cu lnh sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ] V d: Thm Role c tn Managers: EXEC sp_addrole 'Managers'

Trang 125

H qun tr SQL Server 2000 QUN TR NGI DNG. Ngi dng trong SQL Server c chia thnh 2 mc: Ngi truy nhp vo SQL Server gi l Login, ngi khai thc CSDL gi l User. Login. L i tng c quyn truy nhp vo SQL Server, ty theo ch bo mt ca SQL Server m nhng login l account ca Windows NT hay ca SQL Server, login do Server qun l trc tip. To bng cng c. - Chn chc nng Security ca Server -> Logins - Nhn phi chut -> New Login...

- Nhp cc tham s: Nu chn Account ca Windows NT th bn c th chn trong danh sch. Nu to login ca SQL Server th bn nhp tn mi, mt khu, chn login thuc server role no, c th gn quyn truy nhp khai thc CSDL no. To bng cu lnh. S dng cu lnh sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] [ , [ @deflanguage = ] 'language' ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] 'encryption_option' ]

Trang 126

H qun tr SQL Server 2000 V d: To login c tn Albert, mt khu corporate EXEC sp_addlogin 'Albert', 'food', 'corporate' Mi thao tc sa, xa c thc hin nh cc i tng khc. User. User l i tng khai thc CSDL, nu login ch xc nh truy nhp vo SQL Server th User l login ID tham gia khai thc CSDL, user do CSDL qun l trc tip. - Chn CSDL -> users - Nhn phi chut -> new user...

- Chn Login, nhp user name, chn role m user thuc ->Ok Cc thao tc xa, sa thc hin nh cc i tng khc, gn quyn cho user bn c th chn li user va to cho CSDL sau vo nhn vo Permissions.

Trang 127

H qun tr SQL Server 2000

NHN BN D LIU
Chng ny bn s gii thiu vi bn k thut lm gim lu lng d liu giao dch vi SQL Server khi cu hnh nhiu Server trn mng. GII THIU V NHN BN D LIU. Nhn bn d liu tn ting anh gi l Replication, l cng c c s dng copy mt hoc nhiu CSDL n mt hoc nhiu server (SQL Server) khc, cc Server c t trong mng my tnh ni b (LAN), ngi khai thc c th thc hin truy nhp n CSDL c trong Server c chuyn d liu n. D liu gia cc my c thc hin ng b vi nhau theo lch hoc theo s kin, khi c yu cu. Nhn bn d liu c nhng u im sau: + D liu c lu tr nhiu ni, hiu qu trong vic c nhiu ng dng cng truy nhp, khai thc. + Thch hp cc ng dng phn tch d liu OLTP ca DataWare House. + C th khai thc d liu khi khng kt ni n Server. + Gim thiu xung khc do s lng ln cc giao dch trn mng. + L mt gii php an ton khi Server b li hoc bo dng. M hnh nhn bn. Dch v nhn bn d liu gm cc thnh phn c bn sau: Publisher, Distributor, Subscribers, Publications, Articles, Subscriptions. Publisher: L server cung cp d liu nhn bn cho cc server khc. Mt publisher c th thit lp nhiu b d liu nhn bn (gi l publication). Distributor: L server qun l cc thng tin nhn bn, lu tr d liu trong cc giao dch thc hin nhn v chuyn d liu t Publisher n cc Subscriber. Remote distributor l server tch ri khi publisher v c cu hnh l distributor. Local distributor l mt server c cu hnh l Publisher v Distributor. Subscriber: L server nhn d liu nhn bn. Subscriber gn lin vi publication (l my ch nhn d liu nhn bn ca mt b d liu cu hnh nhn bn). Article: L mt bng, tp d liu hoc i tng ca CSDL cu hnh nhn bn. Publication: L mt tp gm mt hoc nhiu article. Subscription: L mt giao dch yu cu bn sao b d liu hoc cc i tng ca CSDL thc hin nhn bn. Trong mi giao dch publisher thc hin dy (push subscription) d liu, subscriber thc hin ko (pull subscription). Trang 128

H qun tr SQL Server 2000

Nhn bn d liu c thc hin theo nhng m hnh c bn sau: + Central Publisher: L m hnh Publisher v Distributor thit lp trn mt my. Gm cc m hnh sau: - Mt Publishers v mt Subscriber:

- Mt Publisher v nhiu Subscriber.

- Publisher v Subscriber c thit lp trn mt my: Trang 129

H qun tr SQL Server 2000

+ Publisher v Distributor khng thit lp trn mt my:

+ Republisher: L m hnh Publisher xut bn d liu n Subscriber, sau Subscriber c thit lp l Publisher xut bn d liu n Subscriber khc.

ng truyn gia hai my c thit lp l Publisher c th tc thp, ph hp vi v tr xa nhau. V d m hnh gia cc vng cch xa nhau:

Trang 130

H qun tr SQL Server 2000

+ Central Subscriber: L m hnh Subscriber thit lpn nhn d liu xut bn t nhiu Publisher.

Nhng kiu nhn bn d liu. C 3 kiu nhn bn d liu Snaphot, Transaction, Merge. Snapshot replication: L kiu nhn bn thc hin sao chp, phn tn d liu hoc cc i tng ca CSDL to mt thi im. Trang 131

H qun tr SQL Server 2000 Snapshot thng c s dng cho nhng tnh hung sau: + D liu thng l tnh, t thay i. + Nhn bn s lng d liu nh.

Transaction replication: L kiu nhn bn m bt u bng nhn bn snapshot, sau s thc hin nhn giao dch d liu theo cc s kin insert, update, delete v nhng thay i lin quan n thc hin stored procedure, index view. Nhn bn kiu ny cho php thc hin lc d liu ti xut bn, cho php user sa i d liu nhn bn ti subscriber v chuyn d liu sa i n Publisher hoc Subscriber khc, d liu sa i ny c th coi l d liu c xut bn. Nhn bn kiu ny c thc hin khi: + Mun sa i d liu c xut bn chuyn n Subscriber, thi gian thc hin theo giy, hoc tc thi. + Cn giao dch trn ton b h thng nhn bn d liu (d liu c th chuyn n tt c cc Subscriber hoc khng chuyn n Subscriber no). + Subscriber thng xuyn kt ni vi Publisher.

Trang 132

H qun tr SQL Server 2000

Merge replication: L kiu nhn bn d liu cho php thc hin nhn sa i d liu trn nhiu Subscriber, c th kt ni (online) hoc khng kt ni (offline)

n Publisher. D liu s c ng b theo lch hoc theo yu cu, d liu cp nht c thi im sau s c chp nhn. Kiu nhn bn ny thc hin khi: Trang 133

H qun tr SQL Server 2000 + Nhiu Subscriber c nhu cu cp nht d liu v chuyn d liu cp nht n Publisher hoc Subscriber khc. + Subscriber yu cu nhn hoc chuyn d liu khi offline, ng b d liu vi cc Subscriber v Publisher sau. CU HNH PUBLISHER V DISTRIBUTOR. Trc khi thc hin cu hnh cc my thnh Publisher hay Distributor ta phi thc hin chy dch v SQL Server Agant trong chc nng Service manager. cc bc cu hnh nh sau: - Chn Server cn cu hnh -> Replication - Nhn phi chut -> Configure Publishing Subscription and

Distribution... - Thc hin thao cc bc: + Chn th mc Snapshot: Th mc ny s s dng cho

Trang 134

H qun tr SQL Server 2000 - t tn CSDL ca Distribution.

- Chn Server cu hnh thnh Publisher.

Trang 135

H qun tr SQL Server 2000 - Chn CSDL tham gia nhn bn, kiu nhn bn.

- Chn Server c cu hnh l Subscriber ca Publisher ang thit lp.

- Kt thc. TO PUBLICATION. Bc ny s thc hin to Publication, cch thc hin nh sau: + Chn Publication trong Replication ca Publisher. + Nhn phi chut -> New Publication... + Thc hin theo cc bc: - Chn CSDL cn xut bn d liu hoc i tng. Trang 136

H qun tr SQL Server 2000 - Chn kiu nhn bn (trong v d ny thc hin kiu Merge)

- Chn phin bn SQL Server ca Subscriber.

- Chn Article tham gia Publication.

Trang 137

H qun tr SQL Server 2000

- t tn cho Publication.

- Kt thc. TO PUSH SUBSCRIPTION. Bc ny thc hin to th tc y (push) t Publisher (Distributor trong v d ny) n Subscriber, c thc hin trn Publisher. Cc bc thc hin nh sau: - Chn Publication ca Publisher -> Nhn phi chut -> Push new Subscription...

Trang 138

H qun tr SQL Server 2000 - Chn Subscriber.

- Chn CSDL trn Subscriber nu c, nu cha c thc hin chn chc nng to mi.

- Chn lch thc hin ng b d liu.

Trang 139

H qun tr SQL Server 2000

- Kt thc. Sau khi thit lp xong trn Subscriber s c CSDL theo tn to. TO PULL SUBSCRIPTION. Bc ny thc hin to cng c ko d liu nhn bn t Publisher v Subscriber, c thc hin trn Subscriber. - Chn Subscription ca Subscriber -> Nhn phi chut -> New Pull Supcription... - Thc hin theo cc bc: + Chn Publication.

Trang 140

H qun tr SQL Server 2000

- Chn Agent tham gia kt ni Publisher.

- Chn CSDL ch.

Trang 141

H qun tr SQL Server 2000

- Thc hin tip cc bc v kt thc. Nu to Push Subscription vi mt CSDL s khng c to Pull Subscription vi CSDL . THC HIN NG B D LIU. Sau khi thit lp theo cc m hnh nhn bn xong, bn c th thc hin ng b d liu bng cch: - Thc hin theo lch. - Theo yu cu: Chn Subscription (Push hoc Pull) -> Nhn phi chut > Start Synchronizing

Sau khi thc hin xong d liu s c ng b gia Publisher v Subscriber. Ngoi thc hin theo cng c bn c th tm hiu thc hin nhn bn theo cu lnh T-SQL hoc Stored Procedure.

Trang 142

H qun tr SQL Server 2000

Phn 2.

CU LNH T-SQL

Trong phn ny s gii thiu cu trc, k thut son kch bn lnh T-SQL, i vi cc h qun tr CSDL Foxfro, Access th cu lnh thc hin truy vn, khai thc CSDL l ngn ng truy vn SQL (Structure Query Language), cc lnh c thc hin theo tng cu lnh m khng thc hin theo kch bn hoc theo tp hp nhiu cu lnh vi nhau. i vi h qun tr CSDL Oracle th ngn ng truy vn d liu l SQL/PL (SQL Plus), cn SQL Server ngn ng c tn Transact-SQL vit tt l T-SQL. NH NGHA D LIU (DATA DEFINITION LAGUAGE - DDL). Phn ny s xem xt cc lnh lin quan n to mi, sa i, xa cc i tng lin quan n Table, View v cc i tng khc. To kiu d liu mi. To kiu d liu dng user-defined. C php:
sp_addtype [ @typename = ] type, [ @phystype = ] system_data_type [ , [ @nulltype = ] 'null_type' ] [ , [ @owner = ] 'owner_name' ]

V d: sp_addtype ssn, varchar(11), NOT NULL

Xa kiu d liu to. C php:


sp_droptype [ @typename = ] 'type'

V d: Sp_droptype ssn To rng buc (Constraint). To rng buc c thc hin trong 2 cu lnh Create Table hoc Alter Table: Check, Default, Foreign Key, Primary Key, Unique. Xt mt s v d sau: + To mt Check. trong bng authors. Trang 143

H qun tr SQL Server 2000 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]) + To Check trong bng Publishers. ALTER TABLE publishers ADD chpub_id CHECK(pub_id IN (1389, 0736, 0877, 1622, 1756) OR pub_id LIKE 99[0-9][0-9]) + To rng buc Default. ALTER TABLE authors ADD DEFAULT UNKNOWN for au_lname + To rng buc Foreign Key. ALTER TABLE titles ADD CONSTRAINT FK_pub_id FOREIGN KEY(pub_id) REFERENCES publishers(pub_id) + To rng buc Primary Key. ALTER TABLE authors ADD PRIMARY KEY CLUSTERED (au_id) + To rng buc Unique. ALTER TABLE stores ADD CONSTRAINT UNC_name_city UNIQUE NONCLUSTERED(store_name, city) Xa rng buc. S dng Drop trong cc cu lnh Create Table hoc Alter Table. + V d xa Constraint s dng cu lnh Alter Table. ALTER TABLE authors DROP CONSTRAINT UPKCL_auidind Hin th rng buc. sp_helpconstraint titltes To bng. to bng d liu c th s dng 2 cu lnh Create Table hoc Select Into. + To bng tm thi local (l bng ch hin vi phin hin thi, tn bng c bt u bng mt du #). CREATE TABLE #MyTempTable (cola INT PRIMARY KEY) INSERT INTO #MyTempTable VALUES (1) + To bng tm thi global (hin vi tt c cc phin, tn bng c bt u bng 2 du #). CREATE TABLE ##MyTempTable (cola INT PRIMARY KEY) INSERT INTO ##MyTempTable VALUES (1) + To bng d liu. /* ************************** jobs table ********* */ CREATE TABLE jobs Trang 144 CONSTRAINT UPKCL_auidind

H qun tr SQL Server 2000 ( 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) ) /* ************************* 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][09][FM]' or emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][09][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_lvl tinyint DEFAULT 10, pub_id char(4) NOT NULL DEFAULT ('9952') REFERENCES publishers(pub_id), hire_date datetime NOT NULL DEFAULT (getdate()) ) /* ***************** publishers table *** */ CREATE TABLE publishers ( pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756') Trang 145

H qun tr SQL Server 2000 OR pub_id LIKE '99[0-9][0-9]'), pub_name varchar(40) NULL, city varchar(20) NULL, state char(2) NULL, country varchar(30) NULL DEFAULT('USA') ) Xa bng. S dng lnh Drop Table. + Xa bng trong CSDL hin thi: Drop Table MyTable + Xa bng trong CSDL khc. DROP TABLE pubs.dbo.authors2 i tn bng. S dng th tc sp_rename + i tn bng: Sp_rename titltes, books Sa cu trc bng. S dng lnh Alter Table. + Thm mt ct vo bng. CREATE TABLE doc_exa ( column_a INT) GO ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL GO EXEC sp_help doc_exa GO DROP TABLE doc_exa GO + Xa mt ct khi bng. CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) GO ALTER TABLE doc_exb DROP COLUMN column_b GO EXEC sp_help doc_exb GO DROP TABLE doc_exb GO To Index. Trang 146

H qun tr SQL Server 2000 S dng lnh Create Index. + To 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 thng tin Index. S dng th tc sp_helpindex + Xem Index ca bng authors. sp_helpindex authors Xa Index. S dng lnh Drop Index. + Xa Index ca bng authors. DROP INDEX authors.au_id_ind To khung nhn. S dng lnh Create View. + To View. USE pubs IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'titles_view') DROP VIEW titles_view GO CREATE VIEW titles_view AS SELECT title, type, price, pubdate FROM titles GO Xa khung nhn. S dng lnh Drop View. + Xa khung nhn. Trang 147

H qun tr SQL Server 2000 USE pubs IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'titles_view') DROP VIEW titles_view GO i tn khung nhn. S dng lnh th tc sp_rename. + i tn view. sp_rename titles_view, view_titles THAO TC VI D LIU (DATA MANIPULATION LANGUAGE DML). Phn ny s xem xt cc cu lnh thao tc vi d liu nh Insert, Select, Delete. Lnh Insert - Chn d liu vo bng. S dng cu lnh Insert. + Chn d liu vo tt c cc ct, theo th t ca trong bng. IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 GO CREATE TABLE T1 ( column_1 int, column_2 varchar(30)) INSERT T1 VALUES (1, 'Row #1') + Chn d liu vo cc ct khng theo th t. IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 GO CREATE TABLE T1 ( column_1 int, column_2 varchar(30)) INSERT T1 (column_2, column_1) VALUES ('Row #1',1)

+ Chn d liu s gi tr t hn s ct. Trang 148

H qun tr SQL Server 2000 IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 GO 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) ) INSERT 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') SELECT * FROM T1

+ Chn d liu vi bng c ct d liu IDENTITY. V d sau s thc hin chn d liu vo bng c ct kiu IDENITY, ct c kiu IDENTITY s t ng gn gi tr khi hng mi c to, nn ngi nhp s khng nhp v sa i. Tuy nhin v th s dng cu lnh SET IDENTITY_INSERT nhp gi tr. IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 GO CREATE TABLE T1 ( column_1 int IDENTITY, column_2 varchar(30)) INSERT T1 VALUES ('Row #1') INSERT T1 (column_2) VALUES ('Row #2') SET IDENTITY_INSERT T1 ON INSERT INTO T1 (column_1,column_2) VALUES (-99,'Explicit identity value') SELECT * Trang 149

H qun tr SQL Server 2000 FROM T1 Lnh Insert - Chn d liu vo bng kt hp lnh SELECT. Cu lnh ny c thc hin gn tng t nh cu lnh chn d liu s dng t kha VALUES, nhng gi tr chn vo c truy vn t cu lnh SELECT. i vi cc ct d liu c kiu Nchar, Nvarchar h tr Unicode th khi chn d liu trc tip phi gn thm tin t N, v d Lname=NJohn Smith. + Chn d liu c truy vn t cc ct trong lnh SELECT. USE pubs INSERT INTO MyBooks SELECT * FROM titles WHERE type = 'mod_cook'

+ Chn d liu c truy vn t mt s ct. USE pubs INSERT INTO MyBooks SELECT title_id, title, type FROM titles WHERE type = 'mod_cook' Lnh Update Sa d liu. Lnh Update s dng sa d liu trong bng hoc View, xem xt cu php thng qua cc v d sau. + Sa d liu s dng lnh Update s dng mnh SET. UPDATE Northwind.dbo.Products SET UnitPrice = UnitPrice * 1.1 WHERE CategoryID = 2 Hoc gn gi tr trc tip: UPDATE authors SET authors.au_fname = 'Annie' WHERE au_fname = 'Anne' Hoc gn gi tr NULL cho mt ct. UPDATE publishers Trang 150

H qun tr SQL Server 2000 SET pub_name = NULL + Sa d liu s dng mnh Where xc nh hng c sa d liu. UPDATE authors SET state = 'PC', city = 'Bay City' WHERE state = 'CA' AND city = 'Oakland'

+ Sa d liu s dng mnh From, s dng thng tin t mt bng khc. UPDATE titles SET ytd_sales = t.ytd_sales + s.qty FROM titles t, sales s WHERE t.title_id = s.title_id AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

Hoc v d gi tr xc nh l tng t bng khc. UPDATE titles SET ytd_sales = (SELECT SUM(qty) FROM sales WHERE sales.title_id = titles.title_id AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales)) FROM titles, sales

+ Sa d liu s dng mnh Top, xc nh s lng hng u tin c sa d liu. UPDATE authors SET state = 'ZZ' FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1 WHERE authors.au_id = t1.au_id

Lnh WriteText Sa d liu Text, Image.

Trang 151

H qun tr SQL Server 2000 Lnh WriteText c s dng cp nht ct c kiu Text hoc Image. D liu kiu Text v Image thng c kch thc ln, c th n Gyga byte, nn lm vic vi kiu d liu ny phi s dng con tr. s dng c lnh ny trc ht ngi qun tr (Administrator) phi t thuc tnh select into/bulk copy l true, thc hin t nh sau: USE master EXEC sp_dboption 'TRUE' 'pubs', 'select into/bulkcopy',

Vi ct d liu kiu Text, Image ta c th gn gi tr NULL hoc s dng cc lnh WriteText, UpdateText gn gi tr, khi s dng cc lnh trn, hng d liu c ct cn chn tn ti (khng ng thi vi cu lnh Insert). Ring i vi ct d liu kiu Text bn c th s dng lnh thm d liu nh cc ct kiu chui khc nhng kch thc ca d liu ti a ch c 4096 k t. + Thc hin chn on vn bn vo ct d liu kiu 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' WRITETEXT pub_info.pr_info @ptrval 'New 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 v d trn ta thy, chn d liu vo ct Text hoc Image ta phi s dng con tr kiu binary hoc varbinarry, con tr s c xc nh vo ct text, image v hng tng ng c trong bng d liu, sau s dng lnh WriteText gn gi tr. Trong thc t khi thc hin lnh ny ta thng thc hin thng qua th tc lu tr ca CSDL, gi tr c gn qua bin. Lnh WriteText thng c s dng khi ct d liu l NULL hoc ton b d liu c (khng chn thm).

Lnh UpdateText Sa d liu Text, Image. Lnh UpdateText c chc nng thc hin sa d liu kiu Text, Image, tuy nhin UpdateText khc WriteTex, UpdateText c th sa., xa d liu theo tng on hoc thm d liu vo phn d liu c ca ct d liu. Trang 152

H qun tr SQL Server 2000 + C php chung: UPDATETEXT { table_name.dest_column_name dest_text_ptr } { NULL | insert_offset } { NULL | delete_length } [ WITH LOG ] [ inserted_data | { table_name.src_column_name src_text_ptr } ] Trong : - Insert_offset: Xc nh v tr theo byte d liu s c t vo hoc bt u xa. - Delete_length: Xc nh di d liu c xa tnh t v tr insert_offset. Vic chn, xa, sa d liu c iu khin thng qua cc tham s insert_offset, delete_offset, v d mun sa d liu, u tin phi xc nh v tr bt u cn sa d liu (insert_offset) v di d liu cn sa, bt u t v tr cn xa d liu mi s c chn vo. + V d sa ni dung ct kiu Text. 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 - iu khin con tr. Cursor l kiu bin xc nh con tr cho mt tp d liu, l kt qu ca cu lnh Select. Cursor c kt hp cng lnh Fetch xc nh v tr hng trong tp d liu. Cursor c 2 kiu Cursor thng thng v Scroll Cursor. Cc thao tc thc hin vi Cursor: Trang 153

H qun tr SQL Server 2000 + Declare: Khai bo. + Open: M con tr lm vic vi tp d liu. + Fetch: Dch chuyn v tr hng trong tp d liu. + Close: ng con tr. + DeAllocate: Gii phng con tr. + V d s dng Curcor, lit k danh sch cc hng ca bng 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 -- 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 + V d s dng Cursor, gi tr ct c a vo bin. USE pubs GO -- Declare the variables to store the values returned by FETCH. DECLARE @au_lname varchar(40), @au_fname varchar(20)

DECLARE authors_cursor CURSOR FOR Trang 154

H qun tr SQL Server 2000 SELECT au_lname, au_fname FROM authors WHERE au_lname LIKE "B%" ORDER BY au_lname, au_fname OPEN authors_cursor -- 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. 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_lname, @au_fname END CLOSE authors_cursor DEALLOCATE authors_cursor GO + V d s dng Scroll Cursor, con tr cho php s dng cc phng thc: 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 Trang 155

H qun tr SQL Server 2000 -- 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 -- 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 authors_cursor -- Fetch the row that is two rows prior to the current row. FETCH RELATIVE -2 FROM authors_cursor CLOSE authors_cursor DEALLOCATE authors_cursor GO

Lnh Delete Xa d liu. S dng lnh Delete xa d liu, kt hp cng iu kin xa mt hay nhiu hng d liu trong bng. + Xa tt c cc hng ca bng. USE pubs DELETE authors

+ Xa mt tp cc hng. USE pubs Trang 156

H qun tr SQL Server 2000 DELETE FROM authors WHERE au_lname = 'McBadden'

+ Xa mt hng t v tr con tr. USE pubs DELETE FROM authors WHERE CURRENT OF complex_join_cursor Trong v d trn con tr c m c tn complex_join_curcor. + Xa cc hng da vo lnh truy vn khc hoc lin kt cc bng. /* SQL-92-Standard subquery */ USE pubs DELETE FROM titleauthor WHERE title_id IN (SELECT title_id FROM titles WHERE title LIKE '%computers%') /* Transact-SQL extension */ USE pubs DELETE titleauthor FROM titleauthor INNER JOIN titles ON titleauthor.title_id = titles.title_id WHERE titles.title LIKE '%computers%'

+ Xa d liu s dng t kha Top. DELETE authors FROM (SELECT TOP 10 * FROM authors) AS t1 WHERE authors.au_id = t1.au_id

Lnh Truncate Table Xa d liu ton bng. Tng t nh cu lnh Delete, lnh Truncate Table s dng xa d liu ton bng, thao tc ny ging lnh Delete khi khng c iu kin Where nhng lnh Truncate Table thc hin nhanh hn. TRUNCATE TABLE authors

Trang 157

H qun tr SQL Server 2000 Lnh Go Nhm lnh. Lnh Go khng tham gia thao tc vi CSDL, lnh Go xc nh nhm cc lnh vi nhau, nhm lnh c xc nh t v tr u tin hoc t t lnh Go trc n lnh Go tip theo. Khi gp lnh Go nhm lnh s c gi ngay n SQL Server thc hin. USE pubs GO 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 GO SELECT @@VERSION; -- Yields an error: Must be EXEC sp_who if not first statement in -- batch. sp_who GO Contrrol-of-Flow - iu khin lung. Tng t nh cc ngn ng lp trnh thit k ng dng, T-SQL cho php thit lp kch bn cu lnh, cho php s dng cc lnh iu khin khi, lung, vng lp, iu kin, r nhnh, Sau y l bng cc lnh: T kha BEGINEND GOTO IFELSE RETURN WAITFOR WHILE..BREAK..CONTINUE CASE DECLARE PRINT RAISEERROR M t Khi lnh Lnh nhy Lnh iu kin Thot Ch thc hin lnh Vng lp, thot khi vng lp, quay li lp R nhnh Khai bo In thng bo Tr li m li Trang 158

EXECUTE (EXEC) TRUY VN D LU.

H qun tr SQL Server 2000 Thc hin lnh

Trong trc ta xem xt nhng cu lnh thao tc vi d liu nh Insert, Update, Delete, phn ny ta s xem xt cc cu lnh khai thc truy vn d liu nh Select, cc php Join, Lnh Use - Chn C s d liu. S dung lnh Use chn CSDL trong kch bn cu lnh.

Use Pubs

Select - Truy vn tt c cc ct t mt bng. Lnh Select c s dng truy vn d liu t mt hoc nhiu bng, t khung nhn, kt qu a li mt tp d liu gm cc hng, ct. USE Northwind GO SELECT * FROM Shippers GO

Order by - Truy vn sp xp danh sch theo th t. ASC l sp xp tng, DESC l sp xp gim, khi xc nh sp xp tng bn c th khng cn t t kha ASC m h thng t xc nh l ASC. USE Northwind GO SELECT * FROM Shippers ORDER BY CompanyName DESC GO

Truy vn mt s ct, xc nh th t cc ct. USE Northwind Trang 159

H qun tr SQL Server 2000 GO SELECT OrderID, ProductID, UnitPrice, Quantity, Discount FROM [Order Details] ORDER BY OrderID ASC GO

i tn cc ct khi truy vn. 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

Lnh Case - Phn lp d liu. Case l cu lnh r nhnh, thng c s dng phn lp d liu trong cu lnh Select. V d s dng lnh Case n gin: 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 ORDER BY type, price COMPUTE AVG(price) BY type GO Trang 160

H qun tr SQL Server 2000 V d s dng lnh Case tm kim: USE pubs GO 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 GO

Kt qu thc hin nh sau: Price Category --------------------Not yet priced Not yet priced Very Reasonable Title Very Reasonable Title Very Reasonable Title Very Reasonable Title Coffee Table Title Coffee Table Title Coffee Table Title Coffee Table Title Coffee Table Title Coffee Table Title Coffee Table Title Coffee Table Title Expensive book! Expensive book! Expensive book! Expensive book! (18 row(s) affected) Trang 161 Shortened Title -------------------Net Etiquette The Psychology of Co The Gourmet Microwav You Can Combat Compu Life Without Fear Emotional Security: Is Anger the Enemy? Cooking with Compute Fifty Years in Bucki Sushi, Anyone? Prolonged Data Depri Silicon Valley Gastr Straight Talk About The Busy Executive's Secrets of Silicon V Onions, Leeks, and G Computer Phobic And But Is It User Frien

H qun tr SQL Server 2000 t tn cho ct. S dng du phy xc nh tn ct, ti a l 30 k t. SELECT sum= SUM(ytd_sales) FROM titles

Khi cn th hin du phy trn gi tr hoc tn ct ta cn s dng 2 du lin nhau. V d I dont understand.

Chui k t trong kt qu truy vn. S dng du phy trong chui k t. SELECT The publishers name is, publisher=pub_name FROM publishers

Cc gi tr tnh ton c. i cc kiu d liu tnh ton c s dng cc php ton +, -, *, /, %. SELECT title_id, ytd_sales*2 FROM titles

Truy vn kiu d liu Text, Image. truy vn d liu Text, Image c th s dng 2 lnh Select hoc ReadText. Khi s dng lnh Select truy vn kiu d liu ny th ch truy vn c d liu c di xc nh trc bng cu lnh SET TEXTSIZE. SET TEXTSIZE 25 SELECT pub_id, pr_info FROM pub_info

Ngm nh kch thc s dng cho truy vn l 4096 (4K).

T kha Distinct Truy vn cc hng khc nhau theo ct. truy vn cc hng d liu khc nhau theo ct ta s dng t kha Distinct. Trang 162

H qun tr SQL Server 2000 USE pubs SELECT DISTINCT au_id FROM titleauthor

Xc nh bng trong mnh From. USE pubs SELECT p.pub_id, p.pub_name FROM publishers p

Mnh Where. Mnh Where xc nh iu kin cc hng c truy vn, biu thc trong mnh Where xc nh theo biu thc logic. Cc php ton, cu lnh xc nh gm: - Cc php ton so snh: =, <>, <, >, !<, !>. - T kha xc nh phm vi: Between, Not Between. - Danh sch: In, Not In. - Theo mu inh dng: Like, Not Like. - Gi tr NULL: Is Null, Is Not Null. - Cc php ton logic: And, Or.

+ T kha Between: SELECT UnitsInStock, ProductID, ProductName FROM Northwind.dbo.Products WHERE UnitsInStock BETWEEN 15 AND 25 ORDER BY UnitsInStock

+ T kha Not Between. SELECT UnitsInStock, ProductID, ProductName FROM Northwind.dbo.Products WHERE UnitsInStock NOT BETWEEN 15 AND 25 ORDER BY UnitsInStock Trang 163

H qun tr SQL Server 2000 + T kha 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)

+ T kha Like. T kha Like c s dng tng t nh php so snh, php Like c thc hin cho d liu kiu chui, php Like c xem l php so snh theo nh dng ca chui, vic nh dng xc nh theo mt s t kha sau: Xc nh bt k chui k t no hoc khng c k t no ti v tr. Mt k t bt k no . Mt k t no nm trong phm vi, v d [a-f]. Xc nh mt k t khng thuc phm vi no , v d [^a-f].

% _ [] [^]

V d s dng t kha Like vi %:

Trang 164

H qun tr SQL Server 2000 USE pubs GO SELECT phone FROM authors WHERE phone LIKE '415%' ORDER by au_lname GO

V d t kha Not Like vi %: USE pubs GO SELECT phone FROM authors WHERE phone NOT LIKE '415%' ORDER BY au_lname GO

V d s dng t kha Like vi mnh Escape: Escape c s dng loi b mt k t hoc chui khi php so snh. USE pubs GO IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'mytbl2') DROP TABLE mytbl2 GO USE pubs GO CREATE TABLE mytbl2 ( c1 sysname ) GO INSERT mytbl2 VALUES ('Discount is 10-15% off') INSERT mytbl2 VALUES ('Discount is .10-.15 off') GO SELECT c1 FROM mytbl2 WHERE c1 LIKE '%10-15!% off%' ESCAPE '!' GO Trang 165

H qun tr SQL Server 2000 V d s dng t kha Like vi []: 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

+ Gi tr NULL. Gi tr NULL c nhp bng cch t ngm nh hoc gn theo cu lnh. tm gi tr NULL trong bng s dng t kha Is Null hoc Is Not Null. SELECT title_id, type, advance FROM pubs.dbo.titles WHERE advance IS NULL

TO BNG BNG LNH SELECT INTO. Lnh Select Into truy vn d liu, d liu c a vo mt bng mi. Nu thuc tnh select into/bulkcopy c t c th to bng c nh, nu thuc tnh khng c t ta c th to bng tm thi. SELECT Shippers.*, Link.Address, Link.City, Link.Region, Link.PostalCode INTO NewShippers FROM Shippers JOIN LinkServer.DB.dbo.Shippers AS Link ON (Shippers.ShipperID = Link.ShipperID)

LNH COMPUTE BY. Khi thc hin vi cc hm tnh ton SUM, AVG, MIN, MAX, COUNT thng c s dng vi cc mnh GROUP BY, COMPUTE BY (khng p dng cc hm tnh ton vi d liu kiu Text, Image).

Trang 166

H qun tr SQL Server 2000 + S dng Group By: T kha Group By c s dng nhm theo ct, c th kt hp cc hm tnh ton. USE Northwind SELECT OrdD.ProductID AS ProdID, SUM(OrdD.Quantity) AS AmountSold FROM [Order Details] AS OrdD JOIN Products as Prd ON OrdD.ProductID = Prd.ProductID AND Prd.CategoryID = 2 GROUP BY OrdD.ProductID

+ S dng mnh Compute: Tnh ton ton b gi tr. USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) + S dng mnh Compute By: Tnh ton theo nhm (tng t Group By). USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) BY type

TON T UNION. Ton t Union thc hin hp 2 tp vi nhau, php ton ny thc hin ch ly i din khi c hai hng ca hai tp trng nhau. Gi s c 2 bng d liu nh sau: Table1 ColumnA char(4) ------abc def ColumnB int --1 2 Table2 ColumnC char(4) ------ghi jkl ColumnD int --3 4 Trang 167

ghi

H qun tr SQL Server 2000 mno 5

Thc hin ton t Union: SELECT * FROM Table1 UNION SELECT * FROM Table2

Kt qu thc hin: ColumnA ------abc def ghi jkl mno ColumnB -------1 2 3 4 5

Khi s dng t kha ALL ton b cc hng ca hai tp d liu s c hp li, khng loi b nhng hng trng nhau. SELECT * FROM TableA UNION ALL ( SELECT * FROM TableB UNION SELECT * FROM TableC ) GO S dng ton t Union vi Select Into: USE Northwind IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'CustomerResults') DROP TABLE CustomerResults GO USE Northwind SELECT ContactName, CompanyName, City, Phone INTO CustomerResults FROM Customers Trang 168

H qun tr SQL Server 2000 WHERE Country IN ('USA', 'Canada') UNION SELECT ContactName, CompanyName, City, Phone FROM SouthAmericanCustomers ORDER BY CompanyName, ContactName ASC GO

TRUY VN D LIU T NHIU BNG. Truy vn d liu t nhiu bng c xc nh theo quan h gia cc ct ca cc bng vi nhau. C th truy vn thng qua iu kin lin kt trong mnh Where hoc t kha Join.

Theo iu kin lin kt. S dng iu kin lin kt theo ct gia cc bng, thng tin cn truy vn c t nhiu bng khc nhau, truy vn c cc thng tin nh trn phi xc nh iu kin lin kt gia cc bng. + Lin kt bng nhau. SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S, Products AS P WHERE S.SupplierID = P.SupplierID AND P.UnitPrice > $10 AND S.CompanyName LIKE N'F%'

i vi cu lnh truy vn theo iu kin lin kt ni trn, cc hng cha gi tr Null ca ct tham gia lin kt s khng c lit k, cu lnh ny tng ng vi lnh Inner Join (s xem trong phn sau).

+ Lin kt khng bng nhau. Lin kt dng ny s dng cc php ton so snh >, >=, <, <=, <>, !>, !< USE pubs SELECT p.pub_name, p.state, a.au_lname, a.au_fname, a.state FROM publishers p, authors a Trang 169

H qun tr SQL Server 2000 WHERE a.state > p.state and p.pub_name = 'New Moon Books' ORDER BY au_lname ASC, au_fname ASC

+ T lin kt bng nhau. T lin kt trong mt bng, cu lnh dng ny thng c s dng trong vic xc nh nhng cp gi tr no cc ct trong bng c quan h vi nhau theo lin kt. USE pubs SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname FROM authors au1, authors au2 WHERE au1.zip = au2.zip and au1.city = 'Oakland' ORDER BY au1.au_fname ASC, au1.au_lname ASC

+ T lin kt khng bng nhau. USE pubs SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname FROM authors au1, authors au2 WHERE au1.zip = au2.zip AND au1.city = 'Oakland' AND au1.state = 'CA' AND au1.au_id < au2.au_id ORDER BY au1.au_lname ASC, au1.au_fname ASC

+ Truy vn d liu t nhiu hn 2 bng d liu. Truy vn dng ny thc hin iu kin lin kt theo tng cp cc bng vi 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 Trang 170

H qun tr SQL Server 2000 + Lin kt ngoi tri. Nh nhng iu kin lin kt ni trn, nhng hng c ct l Null s khng c a ra tp kt qu, cu lnh lin kt ngoi s a ra nhng hng cha gi tr Null ni trn. Xc nh lin kt ngoi bng ton t *. USE pubs SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a, publishers p WHERE a.city *= p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

Bng authors s a ra c nhng hng c ct c ct city l Null, khi cha c pub_name, kt qu nh sau:
au_fname ---------Reginald Michel Innes Ann Marjorie Morningstar Burt Sheryl Livia Charlene Stearns Heather Michael Sylvia Albert Anne Meander Dean Dirk Johnson Akiko Abraham Infosystems Cheryl Infosystems au_lname ---------------Blotchet-Halls DeFrance del Castillo Dull Green Greene Gringlesby Hunter Karsen Locksley MacFeather McBadden O'Leary Panteley Ringer Ringer Smith Straight Stringer White Yokomoto Bennet Carson pub_name -------NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL Algodata Algodata

(23 row(s) affected)

Trang 171

H qun tr SQL Server 2000 + Lin kt ngoi phi. 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 Kt qu thc hin:
au_fname --------------------Abraham Infosystems Cheryl Infosystems NULL NULL Publishing NULL NULL Publishing NULL NULL Publishers NULL (9 row(s) affected) au_lname pub_name ---------------------- -----------------Bennet Carson NULL NULL NULL NULL NULL NULL NULL Algodata Algodata Binnet & Hardley Five Lakes GGG&G Lucerne New Moon Books Ramona Scootney Books

Lnh Join Truy vn t nhiu bng. Phn trn ta xem xt k thut truy vn d liu t nhiu bng s dng iu kin lin kt, tng t nh cc php ton so snh, *=, =* SQL Server cung cp cu lnh Join thay th cc php ton ni trn. + Inner Join Lin kt trong. Thay v xc nh iu kin lin kt trong mnh Where th y ta ch cn xc nh lin kt trong mnh From.

Lin kt bng: USE pubs SELECT * FROM authors AS a INNER JOIN publishers AS p Trang 172

H qun tr SQL Server 2000 ON a.city = p.city ORDER BY a.au_lname DESC

Lin kt khng bng: USE pubs SELECT p.pub_name, p.state, a.au_lname, 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

+ T lin kt trong bng.

T lin kt bng: USE pubs SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname FROM authors au1 INNER JOIN authors au2 ON au1.zip = au2.zip WHERE au1.city = 'Oakland' ORDER BY au1.au_fname ASC, au1.au_lname ASC

T lin kt khng bng: USE pubs SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname FROM authors au1 INNER JOIN authors au2 ON au1.zip = au2.zip WHERE au1.city = 'Oakland' AND au1.state = 'CA' AND au1.au_id < au2.au_id ORDER BY au1.au_lname ASC, au1.au_fname ASC

+ Lin kt nhiu hn 2 bng. Trang 173

H qun tr SQL Server 2000 USE pubs SELECT a.au_lname, a.au_fname, t.title FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id JOIN titles t ON ta.title_id = t.title_id WHERE t.type = 'trad_cook' ORDER BY t.title ASC

+ Lin kt ngoi tri - LEFT OUTER JOIN. Lin kt ngoi tri tng t nh php ton *=. 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_lname ASC, a.au_fname ASC

+ Lin kt ngoi phii RIGHT OUTER JOIN. Lin kt ngoi phi tng t nh php ton =*. USE pubs SELECT a.au_fname, a.au_lname, 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

+ Lin kt ngoi 2 pha FULL OUTER JOIN. L php lin kt tri hoc phi. USE pubs SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a FULL OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC Trang 174

H qun tr SQL Server 2000

Kt qu nh sau:
au_fname --------------Reginald Michel Innes Ann Marjorie Morningstar Burt Sheryl Livia Charlene Stearns Heather Michael Sylvia Albert Anne Meander Dean Dirk Johnson Akiko Abraham Infosystems Cheryl Infosystems NULL NULL Publishing NULL NULL NULL NULL NULL au_lname ----------------------Blotchet-Halls DeFrance del Castillo Dull Green Greene Gringlesby Hunter Karsen Locksley MacFeather McBadden O'Leary Panteley Ringer Ringer Smith Straight Stringer White Yokomoto Bennet Carson NULL NULL NULL NULL NULL NULL NULL pub_name ----------------NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL Algodata Algodata Binnet & Hardley Five Lakes GGG&G Lucerne Publishing New Moon Books Ramona Publishers Scootney Books

(30 row(s) affected)

+ Gi tr Null v php Join. Gi tr Null khng xc nh trong php so snh ca mnh Where (ch s dng vi cc php so snh Is Null hoc Is Not Null), trong php Join ta c th xc nh ging nhau gia 2 gi tr Null. Xt v d sau: Trang 175

H qun tr SQL Server 2000 Gi s c 2 bng d liu c gi tr nh sau: table1 a ------1 NULL 4 table2 c ------NULL 4

b -----one three join4

d -----two four

Thc hin php Join nh sau: SELECT * FROM table1 t1 JOIN table2 t2 ON t1.a = t2.c ORDER BY t1.a

Kt qu thc hin: a b c d ----------- ------ ----------- -----4 join4 4 four (1 row(s) affected)

TRUY VN TNG HP. Vic s dng cc hm tnh ton nh SUM, AVG, thng c thc hin theo cc mnh WHERE, GROUP BY, HAVING. Khi xc nh iu kin c s dng cc hm tnh ton th phi s dng mnh HAVING m khng c s dng trong mnh WHERE. Cc hm tnh ton c th tm tt nh sau: SUM([ALL | DISTINCT]) AVG([ALL | DISTINCT]) nhau. Tnh tng tt c hoc nhng hng khc nhau. Tnh trung bnh tt c hoc nhng hng khc

COUNT([ALL | DISTINCT]) m s hng tt c hoc nhng hng khc nhau. COUNT(*) m cc hng c la chn. Trang 176

MAX() MIN()

H qun tr SQL Server 2000 Tnh gi tr ln nht. Tnh gi tr nh nht.

Cc hm SUM, AVG ch lm vic vi d liu dng s, cc hm SUM, AVG, COUNT, MAX, MIN b qua gi tr Null, hm COUNT(*) m c hng c gi tr Null.

S dng hm tnh ton. + Tnh tng ton b. USE pubs SELECT SUM(ytd_sales) FROM titles

+ Tnh tng, trung bnh c iu kin. USE pubs SELECT AVG(advance), SUM(ytd_sales) FROM titles WHERE type = 'business'

Mnh Group By. Group by c thc hin nhm cc hng theo gi tr ct xc nh, cc hm tnh ton s c thc hin theo nhm ni trn. USE Northwind SELECT OrdD.ProductID AS ProdID, SUM(OrdD.Quantity) AS AmountSold FROM [Order Details] AS OrdD JOIN Products as Prd ON OrdD.ProductID = Prd.ProductID AND Prd.CategoryID = 2 GROUP BY OrdD.ProductID

Kt qu thc hin nh sau: ProdID AmountSold ----------- ----------Trang 177

H qun tr SQL Server 2000 3 4 5 6 8 15 44 61 63 65 66 77 328 453 298 301 372 122 601 603 445 745 239 791

(12 row(s) affected)

Mnh Having. Having c s dng cng vi cc hm tnh ton xc nh iu kin lc cc hng, thng c kt hp cng mnh Group By thc hin cc hm tnh ton theo nhm. + Having vi hm SUM. USE pubs SELECT pub_id, total = SUM(ytd_sales) FROM titles GROUP BY pub_id HAVING SUM(ytd_sales) > 40000

+ Having vi hm Count. USE pubs SELECT pub_id, total = SUM(ytd_sales) FROM titles GROUP BY pub_id HAVING COUNT(*) > 5

+ Having vi mnh Where. SELECT pub_id, SUM(advance) AS AmountAdvanced, AVG(price) AS AveragePrice Trang 178

H qun tr SQL Server 2000 FROM pubs.dbo.titles WHERE pub_id > '0800' AND price >= $5 GROUP BY pub_id HAVING SUM(advance) > $15000 AND AVG(price) < $20 ORDER BY pub_id DESC

+ Having thay cho mnh Where. SELECT titles.pub_id, AVG(titles.price) FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id GROUP BY titles.pub_id HAVING publishers.state = 'CA'

TRUY VN LNG NHAU. Phn ny s xem xt cc cu lnh truy vn lng nhau, trong cu lnh truy vn Select c cu lnh truy vn Select khc trong iu kin xc nh ca lnh Select ngoi. Thng thng cc cu lnh dng ny i cng cc t lha IN, NOT IN, EXITST, NOT EXIST, ANY, ALL. Truy vn lng nhau vi php bng. USE pubs SELECT title, price FROM titles WHERE price = (SELECT price FROM titles WHERE title = 'Straight Talk About Computers')

u tin cu lnh s xc nh hng trong lnh Select trong, lnh truy vn ny phi a ra kt qu duy nht.

Truy vn vi t kha IN. Kim tra nm trong tp cc gi tr truy vn c.

Trang 179

H qun tr SQL Server 2000 USE pubs SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')

Hng s nm trong khong: USE pubs SELECT DISTINCT au_lname, au_fname FROM authors WHERE 100 IN (SELECT royaltyper FROM titleauthor WHERE titleauthor.au_id = authors.au_id)

Truy vn vi t kha Exist. Kim tra tn ti hng d liu truy vn c. USE pubs SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type = 'business')

Truy vn vi hm All. Kim tra vi tt c cc hng. USE pubs SELECT t1.type FROM titles t1 GROUP BY t1.type HAVING MAX(t1.advance) >= ALL (SELECT 2 * AVG(t2.advance) Trang 180

H qun tr SQL Server 2000 FROM titles t2 WHERE t1.type = t2.type)

Truy vn vi hm Any. Kim tra tha mn vi bt k hng no. USE pubs SELECT title FROM titles WHERE advance > ANY (SELECT advance FROM publishers INNER JOIN titles ON titles.pub_id = publishers.pub_id AND pub_name = 'Algodata Infosystems')

Truy vn vi hm Some. Kim tra vi t nht mt hng. USE pubs SELECT t1.type FROM titles t1 GROUP BY t1.type HAVING MAX(t1.advance) >= SOME (SELECT 2 * AVG(t2.advance) FROM titles t2 WHERE t1.type = t2.type)

Nhiu lnh Select lng nhau. USE pubs SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE title_id IN (SELECT title_id FROM titles Trang 181

H qun tr SQL Server 2000 WHERE type = 'popular_comp'))

UPDATE, DELETE, INSERT VI LNH TRUY VN LNG NHAU. Vic thc hin cc lnh thao tc vi d liu c th kt hp iu kin truy vn lng nhau xc nh phm vi d liu c thao tc.

Kt hp vi lenh Select. UPDATE titles SET price = price * 2 WHERE pub_id IN (SELECT pub_id FROM publishers WHERE pub_name = 'New Moon Books')

Kt hp vi lnh Join. UPDATE titles SET price = price * 2 FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id AND pub_name = 'New Moon Books'

Xa d liu kt hp vi lnh Select. DELETE sales WHERE title_id IN (SELECT title_id FROM titles WHERE type = 'business')

Xa d liu vi php Join. DELETE sales FROM sales INNER JOIN titles ON sales.title_id = titles.title_id Trang 182

H qun tr SQL Server 2000 AND type = 'business'

LNH READTEXT C TEXT, IMAGE. Lnh ReadText c thc hin c d liu kiu Text, Image v chuyn vo mt bin. USE pubs GO DECLARE @ptrval varbinary(16) SELECT @ptrval = TEXTPTR(pr_info) FROM pub_info pr INNER JOIN publishers p ON pr.pub_id = p.pub_id AND p.pub_name = 'New Moon Books' READTEXT pub_info.pr_info @ptrval 1 25 GO V d trn thc hin c d liu t ct pr_info bt u t v tr 1, di 25 byte. THAO TC D LIU NGOI. Ni dung phn ny s gii thiu cu lnh, k thut truy vn d liu ca h qun tr CSDL khc hoc Instance khc. Lnh OpenRowSet. Lnh OpenRowSet s dng truy nhp d liu xa vi ngun d liu l OLE DB, kt ni kiu ny c th thc hin cc lnh Insert, Update, Delete, Select vi bng d liu. Quyn thc hin trong cu lnh thc hin theo user kt ni trong cu lnh. + OPENROWSET vi lnh SELECT v Microsoft OLE DB Provider for SQL Server. USE pubs GO SELECT a.* FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a GO

V d trn thc hin kt ni n Instance c tn seattle1, user c tn sa, mt khu MyPass. Trang 183

H qun tr SQL Server 2000 + OPENROWSET vi OLE DB Provider for ODBC. USE pubs GO SELECT a.* FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass', pubs.dbo.authors) AS a ORDER BY a.au_lname, a.au_fname GO

+ Microsoft OLE DB Provider for Jet. Lnh dng ny c ny c thc hin kt ni n Access. USE pubs GO SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'m ypwd', Orders) AS a GO

+ OPENROWSET vi INNER JOIN mt bng khc. USE pubs GO SELECT c.*, o.* FROM Northwind.dbo.Customers AS c INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'m ypwd', Orders) AS o ON c.CustomerID = o.CustomerID GO

Trang 184

H qun tr SQL Server 2000

Lnh OpenDataSource. Lnh OpenDataSource thc hin m d liu ngoi Instance, khng cn n linked_server. + Kt ni n Instance khc. SELECT FROM * OPENDATASOURCE( 'SQLOLEDB', 'Data Source=ServerName;User ID=MyUID;Password=MyPass' ).Northwind.dbo.Categories + Kt ni n Excel. SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions Lnh OpenQuery. Lnh OpenQuery thc hin thao tc vi d liu ngoi thng qua LinkedServer. EXEC sp_addlinkedserver 'OracleSvr', 'Oracle 7.3', 'MSDAORA', 'ORCLDB' GO SELECT * FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') GO

Trang 185

H qun tr SQL Server 2000 MT S HM C BN. Hm h thng. DB_ID DB_NAME HOST_ID HOST_NAME SUSER_ID SUSER_NAME USER_ID USER_NAME Tr v ID ca CSDL khi bit tn. Tr v tn CSDL khi bit ID. Tr v ID ca my ch. Tr v tn my ch Tr v ID User ca Server khi bit tn Tr v tn User ca Server khi bit ID. Tr v ID User khi bit tn Tr v tn User khi bit ID

Hm thao tc vi chui. + SUBSTRING - Ly chui nh trong chui. SUBSTRING ( expression , start , length )

S dng vi chui k t: USE pubs SELECT au_lname, SUBSTRING(au_fname, 1, 1) FROM authors ORDER BY au_lname

S dng vi text, ntext, image: USE pubs SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo, SUBSTRING(pr_info, 1, 10) AS pr_info FROM pub_info WHERE pub_id = '1756' + CHARINDEX Tr v v tr bt u mt mu trong chui. Trang 186

H qun tr SQL Server 2000 CHARINDEX ( expression1 , expression2 [ , start_location ] ) Tm v tr xut hin chui expression1 trong expression2.

V d tm chui wonderful trong ct notes ca bng titles: USE pubs GO SELECT CHARINDEX('wonderful', notes) FROM titles WHERE title_id = 'TC3218' GO

+ PATINDEX Tr v v tr xut hin ca mu trong chui.

PATINDEX ( '%pattern%' , expression )

V d trm v tr xut hin mu %wonderful%: USE pubs GO SELECT PATINDEX('%wonderful%', notes) FROM titles WHERE title_id = 'TC3218' GO

V d trm v tr xut hin mu %won_erful%: USE pubs GO SELECT PATINDEX('%won_erful%', notes) FROM titles WHERE title_id = 'TC3218' GO

Trang 187

H qun tr SQL Server 2000 + STR Chuyn d liu kiu s sng chui.
STR ( float_expression [ , length [ , decimal ] ] )

V d chuyn s sang chui c di 6, lm trn sau du phy 1 s. SELECT STR(123.45, 6, 1) GO Kt qu l chui 123.5

V d s dng vi hm Floor ly gi tr nguyn nh hn ca mt s thc: SELECT STR (FLOOR (123.45), 8, 3) GO Kt qu l 123.000

+ STUFF Chn mt chui vo mt chui khc. Hm Stuff thc hin xa chui nh trong mt chui sau thc hin chn mt chui mi vo v tr bt u. STUFF ( character_expression , start , length , character_expression )

V d: SELECT STUFF('abcdef', 2, 3, 'ijklmn') GO Kt qu thc hin: aijklmnef

+ SOUNDEX Tr v hm pht m. Hm Soundex s dng so snh pht m gia 2 chui, v d sau s cho 2 m Soundex nh nhau: SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') Kt qu thc hin: Trang 188

H qun tr SQL Server 2000 S530 S530

+ Defference So snh gi tr hm Soundex gia 2 chui: Gi tr tr v t 0 n 4, 4 l gi tr ging nhau nht. V d sau so snh gia 2 chui: SELECT DIFFERENCE('Smithers', 'Smythers') GO Kt qu thc hin: 4 SELECT DIFFERENCE('Anothers', 'Brothers') GO Kt qu thc hin: 2 + UNICODE Ly m unicode k t u tin trong chui. + NCHAR Chuyn m unicode thnh k t.

Cc hm DateTime. + GETDATE: Tr v ngy, gi hin ti. + DATEPART: Tr v gi tr ngay hoc thng hoc nm ca mt biu thc ngy. DATEPART ( datepart , date )

Gi tr datepart theo bng sau:


Datepart year quarter month dayofyear day week weekday hour minute second yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw hh mi, n ss, s Dng rt gn

Trang 189

H qun tr SQL Server 2000


millisecond ms

SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0) + SET DATFIRST: t ngy u tin trong tun. + SET DATEFORMAT: t nh dng kiu DateTime nhp d liu. SET DATEFORMAT mdy GO DECLARE @datevar datetime SET @datevar = '12/31/98' SELECT @datevar GO

+ DAY, MONTH, YEAR: Ly gi tr ngy, thng, nm. + ISDATE: Kim tra xem d liu c hp l DateTime khng. + DATEDIFF: Xc nh lch gia 2 gi tr DateTime.
DATEDIFF ( datepart , startdate , enddate )

V d: Xc nh s ngy pht hnh sch. USE pubs GO SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles GO

+ DATEADD Xc nh gi DateTime mi khi thay i mt khong thi gian.


DATEADD ( datepart , number, date )

USE pubs GO SELECT DATEADD(day, 21, pubdate) AS timeframe Trang 190

H qun tr SQL Server 2000 FROM titles GO

Cc hm chuyn i. + CONVERT + CAST TRANSACTION PHIN GIAO DCH. Transaction l mt n v cng vic trong n bao gm nhiu vic nh, cc vic ny c thc hin thnh cng th Transaction thnh cng, d liu thay i trong qu trnh thc hin ca Transaction s c cp nht. Nu trong qu trnh c pht sinh li th Transaction s lp li (Roll Back hoc Cancel), d liu khng c cp nht. Mt phin giao dch c 4 c tnh ACID (Atomicity, Consistency, Isolation, Durability). Atomicity Nguyn t: Mt phin giao dch l mt n v cng vic nh nht, tt c d liu thay i trong phin giao dch c thc hin hoc tt c khng c thc hin. Consistency- Nht qun: Giao dch s khng thc hin nu c mt thao tc xung khc v mt logic hoc quan h. Tnh nht qun rt quan trng vi m hnh ng dng client/server, vi m hnh dng ny ti mt thi im c th c nhiu giao dch thc hin ng thi, nu mt giao dch no khng nht qun th tt c cc giao dch khc s thc hin sai, dn n s vi phm ton vn d liu. Isolation Tch bit: Ti mt thi im c nhiu phin giao dch ng thi, cc phin giao dch ch tc ng vi nhau khi d liu c cp nht (kt thc phin). Gi s c 2 phin giao dch c tc ng Durability - Bn vng: Sau khi giao dch hon tt, d liu trng thi bn vng. Mt phin giao dch c xc nh bt u, kt thc:

Bt u phin giao dch. Phin giao dch c 3 loi: explicit transaction, implicit transaction, autocommit transaction. Explicit transaction: L kiu phin giao dch r, c bt u bng lnh BEGIN TRANSACTION, i vi phin giao dch phn tn th c bt u bng lnh BEGIN DISTRIBUTED TRAN Trang 191

H qun tr SQL Server 2000 [ transaction_name | @tran_name_variable ] t tn giao dch: DECLARE @TranName VARCHAR(20) SELECT @TranName = 'MyTransaction' BEGIN TRANSACTION @TranName GO USE pubs GO UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%' GO COMMIT TRANSACTION MyTransaction GO

nh du trong giao dch: BEGIN TRANSACTION RoyaltyUpdate WITH MARK 'Update royalty values' GO USE pubs GO UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%' GO COMMIT TRANSACTION RoyaltyUpdate GO

Autocommit transaction: Mi cu lnh t cp nht d liu khi n kt thc, khng cn cu lnh iu khin phin giao dch.

Trang 192

H qun tr SQL Server 2000 Implicit transaction: L phin giao dch n, t ch ny thng qua hm API hoc lnh SET IMPLICIT_TRANSACTIONS ON. Khi phin giao dch kt thc, cu lnh T-SQL tip theo s khi ng phin giao dch mi.
SET IMPLICIT_TRANSACTIONS { ON | OFF }

S dng kt hp vi Implicit transaction: USE pubs GO CREATE table t1 (a int) GO INSERT INTO t1 VALUES (1) GO PRINT 'Use explicit transaction' BEGIN TRAN INSERT INTO t1 VALUES (2) SELECT 'Tran count in transaction'= @@TRANCOUNT COMMIT TRAN SELECT 'Tran count outside transaction'= @@TRANCOUNT GO PRINT 'Setting IMPLICIT_TRANSACTIONS ON' GO SET IMPLICIT_TRANSACTIONS ON GO PRINT 'Use implicit transactions' GO -- No BEGIN TRAN needed here. INSERT INTO t1 VALUES (4) SELECT 'Tran count in transaction'= @@TRANCOUNT COMMIT TRAN SELECT 'Tran count outside transaction'= @@TRANCOUNT GO PRINT 'Use explicit transactions with IMPLICIT_TRANSACTIONS ON' GO BEGIN TRAN INSERT INTO t1 VALUES (5) SELECT 'Tran count in transaction'= @@TRANCOUNT Trang 193

H qun tr SQL Server 2000 COMMIT TRAN SELECT 'Tran count outside transaction'= @@TRANCOUNT GO SELECT * FROM t1 GO -- Need to commit this tran too! DROP TABLE t1 COMMIT TRAN GO

Kt thc phin giao dch. S dng lnh Commit trong phin giao dch.
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]

+ Commit mt phin giao dch. BEGIN TRANSACTION USE pubs GO UPDATE titles SET advance = advance * 1.25 WHERE ytd_sales > 8000 GO COMMIT GO

+ Commit nhiu phin giao dch lng nhau.


CREATE TABLE TestTran (Cola GO BEGIN TRANSACTION OuterTran GO INSERT INTO TestTran VALUES GO BEGIN TRANSACTION Inner1 -GO INSERT INTO TestTran VALUES GO BEGIN TRANSACTION Inner2 -GO INT PRIMARY KEY, Colb CHAR(3)) -- @@TRANCOUNT set to 1. (1, 'aaa') @@TRANCOUNT set to 2. (2, 'bbb') @@TRANCOUNT set to 3.

Trang 194

H qun tr SQL Server 2000


INSERT INTO TestTran VALUES (3, 'ccc') GO COMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2. -- Nothing committed. GO COMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1. -- Nothing committed. GO COMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0. -- Commits outer transaction OuterTran. GO

Hy b v quay li phin giao dch. S dng lnh RollBack Transaction hy b nhng thc hin v quay li phin giao dch.
ROLLBACK [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] ]

LOCK KHA. Khi 2 hay nhiu ngi cng truy nhp ng thi mt CSDL, SQL Server s dng kho xc nh hot ng cho mt ngi v khng xc didnhj cho ngi khc. Kho l vic ngn khng cho nhng ngi c d liu m khng b ngi khc sa i. Hu ht SQL Server u kho t ng, bn c th thit k CSDL mt cch c hiu qu hn bng vic tm hiu v kho v chn kho cho ng dng ca bn. Tm hiu v kho. Kho gm cc loi sau: Kiu kho Shared Update Exclusive M t L kho khng lm thay i, ghi d liu, dng cho lnh Select Kho hoc cho php sa i d liu Kho vi cc thao tc Update, Insert, Delete

Mt s phm vi kho nh sau: Tn Page M t Trang d liu 2K hoc trang ch mc Index, thng c dng Trang 195

Extent Table Intent

H qun tr SQL Server 2000 Nhm cc trang c kch thc 8k, ch dng vi trng hp xc nh C bng d liu, gm d liu v index L kiu c bit t kiu kho ca trang hin ti trn bng

Bng xc nh hiu lc ca cc kiu kho Shared Update Exclusive Shared Yes Yes No Update Yes No No Exclusive No No No

V d: Khi t ch kho l Exclusive th nhng phin giao dch khc khng th yu cu bt c loi kho no n khi ho Exclusive b b. Xem thng tin v kho. xem thng tin v kho ng s dng trong SQL Server ta lm nh sau: Chn i tng cn xem kho Thc hin th tc sp_lock Chn kiu kho. Kho oc t trong cc cu lnh nh: SELECT, INSERT, UPDATE, v DELETE , sau y l bng m t cc kiu kho i vi phng thc ni trn Tn NOLOCK M t c s dng vi cu lnh Select, ngi oc c th c d liu khi d liu gc khi cha c ghi d liu mi trong giao dch ang s dng HOLDLOCK Kha Shared c gi n khi phin giao dch c hon tt khi kho cha c gii phng UPDLOCK Dng cp nht d liu ca kiu kho Shared trong qu trnh c bng d liu v c gi n khi kt thc lnh ca phin giao dch. Khoa ny dng khi cp nht d liu, ngn khng cho ngi khc c n khi phin giao dch cp nht c hon tt TABLOCK Dng kho Shared trn mt bng d liu, cho php nhng ngi khc c d liu nhng ngn khng cho cp nht PAGELOCK s dng kiu kho Shared phm vi trang d liu (Page), y l loi kho ngm nh TABLOCKX Dng kiu kho Exlusive trn mt bng d liu, ngn ngi khc c v cp nht d liu t bng v gi n khi kt thc lnh, phin giao dch Trang 196

H qun tr SQL Server 2000 Cch t kho nh sau: Dng lnh SET V d 1:
USE pubs GO SET TRANSACTION ISOLATION LEVEL SERIALIZABLE GO BEGIN TRANSACTION SELECT au_lname FROM authors WITH (NOLOCK) GO

V d 2: Select * from authors(UPDLOCK) t mc kho.

Dng t, iu khin kho trong cc giao dch ca SQL Server C php:


SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | REPEATETABLE READ | SERIALIZABLE }

Trong : o Read Committed: Dng kiu kho Shared trong qu trnh c d liu o Read Uncommitted: Khng t kho Shared v kho Exclusive, c th c d liu gc khi ang c phin giao ch sa i d liu o RepeateTable Read: Kho tt c d liu ang c s dng trong truy vn, ngn nhng ngi khc sa d liu nhng ngi khc c th chn thm d liu mi vo bng (hng mi) o Serializable: t kho trong mt tp d liu (kho phm vi) ngn khng cho ngi khc c th sa, thm hng mi vo tp d liu n khi giao dch kt thc, tng nh HoldLock trong lnh Select V d:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ GO BEGIN TRANSACTION SELECT * FROM publishers SELECT * FROM authors ... COMMIT TRANSACTION

Kho cht (DeadLock). Trang 197

H qun tr SQL Server 2000 Trong h qun tr CSDL quan h ni ring v cc h qun tr khc ni chung, vic xut hin nhiu lung d liu ng thi trong CSDL l thng xuyn xy ra, mt giao dch c th ly d liu t nhiu ngun d liu khc nhau, hai giao dch trong cng CSDL c th cng chung mt ngun d liu no nn vic cc giao dch ny t cc mc kho khc nhau cho cc ngun d liu m n lm gi l khng th trnh khi, v d tn s sau m t s giao cho v ngun d liu trong giao dch

Trong giao dch 1 v 2 u t cc bng d liu mc kho Exlusive, nh vy giao dch 1 ch thc hin c khi giao dch 2 thc hin xong hoc quay li trng thi ban u, ngc li giao dch 2 cng ch thc hin xong khi giao dch 1 thc hin xong hoc quay li trng thai ban u. C nh vy th c 2 giao dch s khng bao gi kt thc c phin giao dch ca mnh. Phn chung ca kho ni trn gi l kho cht, v c kho theo khi (block). GRAND GN QUYN. Lnh Grand thc hin gn quyn cho user hoc role ca SQL Server. Ngi thc hin Grand phi c quyn c thc hin phn quyn cho user. C 2 hnh thc gn quyn: gn quyn thc hin cu lnh, gn quyn thao tc vi i tng. Gn quyn thao tc cu lnh.

GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ] Cc cu lnh:


CREATE DATABASE CREATE DEFAULT

Trang 198

H qun tr SQL Server 2000


CREATE FUNCTION CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE VIEW BACKUP DATABASE BACKUP LOG

SQL Server ngm nh mt s nhm c quyn thc hin cu lnh nh sau:


dbcreator processadmin securityadmin serveradmin bulkadmin ALTER DATABASE CREATE DATABASE BULK INSERT DBCC DENY GRANT KILL RECONFIGURE RESTORE REVOKE SHUTDOWN X X (2) X X X X (2) X (2) X (1) X X X

db_ db_ db_ db_ db_ backup owner datareader datawriter ddladmin operator ALTER DATABASE ALTER FUNCTION ALTER PROCEDURE ALTER TABLE ALTER TRIGGER ALTER VIEW BACKUP CHECKPOINT X X X X (1) X X (1) X X X X X X X X X X

db_ security admin

Trang 199

H qun tr SQL Server 2000


CREATE DEFAULT CREATE FUNCTION CREATE INDEX CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE TRIGGER CREATE VIEW DBCC DELETE DENY DENY on object DROP EXECUTE GRANT GRANT on object INSERT READTEXT REFERENCES RESTORE REVOKE REVOKE on object SELECT SETUSER TRUNCATE TABLE UPDATE UPDATETEXT WRITETEXT X X X (1) X X X X (1) X X X (1) X X X (1) X (1) X X (1) X (1) X (1) X (1) X X X (1) X (1) X X (1) X (1) X (1) X (1) X X X X X X X X X X X X X X X X X X X X X X (2)

UPDATE STATISTICS X (1)

Cc user c gn quyn c th l user ca SQL Server hoc user ca Windows NT. V d gn quyn thao tc cu lnh cho 3 user (trong c 2 user ca SQL Server v 1 user ca Windows NT): GRANT CREATE DATABASE, CREATE TABLE Trang 200

H qun tr SQL Server 2000 TO Mary, John, [Corporate\BobJ]

V d gn quyn thao tc cho role v user: USE pubs GO GRANT SELECT ON authors TO public GO GRANT INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom GO

Gn quyn thao tc i tng. L vic gn quyn cho cc user hoc role c quyn thao tc vi cc i tng ca SQL Server. V d gn quyn thao tc cho Role:

GRANT CREATE TABLE TO Accounting V d gn quyn gn quyn thao tc cho user khc: V d Jean l dbo ca bng Plan_data, Jean thc hin gn quyn vi chc nng GRAND_OPTION cho role accounting, Jill thuc role ni trn v Jill gn quyn c Select cho Jack, Jack khng l thnh vin ca Accounting. /* User Jean */ GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION /* User Jill */ GRANT SELECT ON Plan_Data TO Jack AS Accounting

Th cc sp_grandlogin. Trang 201

H qun tr SQL Server 2000 L th tc thc hin gn quyn truy nhp cho user ca Windows NT hoc nhm user ca Windows NT.
sp_grantlogin [@loginame =] 'login'

V d gn quyn truy nhp SQL Server cho BobJ. EXEC sp_grantlogin 'Corporate\BobJ'

Th tc sp_grandaccess. Gn quyn khai thc cho user ca SQL Server hoc Windows NT.
sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db' [OUTPUT]]

V d gn quyn khai thc cho user ca Windows v ly theo tn mi. EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie'

REVOKE TC QUYN. Revoke l cu lnh tc quyn khai thc ca user. Tc quyn c thc hin cu lnh.
REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ]

V d tc quyn khai thc vi 2 user: REVOKE CREATE TABLE FROM Joe, [Corporate\BobJ]

V d tc quyn khai thc 2 cu lnh vi cc user: REVOKE CREATE TABLE, CREATE DEFAULT FROM Mary, John

Trang 202

H qun tr SQL Server 2000 Tc quyn khai thc ca user vi i tng. V d tc quyn thc hin lnh Select trong role Budget_data i vi Mary: REVOKE SELECT ON Budget_Data TO Mary

DENY T CHI QUYN. L cu lnh t chi quyn i vi user, user ch thc hin c quyn khi c ch nh r rng. V d t chi quyn thc hin lnh vi cc user: DENY CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ]

V d gn quyn khai thc cho role, sau thc hin t chi thc hin ca cc user trong role: USE pubs GO GRANT SELECT ON authors TO public GO DENY SELECT, INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom

V d t chi quyn ca role:

DENY CREATE TABLE TO Accounting

Trang 203

H qun tr SQL Server 2000

TR GIP. Trong qu trnh thc hin son lnh T-SQL bn c th thc hin tra cu lnh trong Book Online.

Phn 3.

PHT TRIN NG DNG VI SQL SERVER

Trong phn ny ta s xem xt k thut pht trin ng dng vi SQL Server t cc ngn ng lp trnh (Visual Basic, C++, VBScript,). Cc ng dng khai thc CSDL ca SQL Server thc hin cc bc sau: Trang 204

H qun tr SQL Server 2000 + Kt ni t ng dng n SQL Server. + Xy dng c s d liu. + Thc hin cc lnh khai thc hoc th tc ca SQL Server. + Khai thc d liu thng qua cng c c sn. + Ngt kt ni. GII THIU. Thit k ng dng l vic thc hin to giao din (API Application Program Interface) giao tip vi SQL Server, vic thc hin kt ni thc hin thng qua cc cng c ADO, URL, OLE DB, ODBC, Embedded SQL for C, DB-Library. Khi s dng cc cng c kt ni d liu thao tc di dng bng hoc dng ti liu XML. + D liu di dng bng c thc hin thng qua cc cng c kt ni ADO, OLE DB, ODBC, Embedded SQL for C, DB-Library. + D liu thc hin thng qua ti liu XML thng qua cc cng c ADO, URL, OLE DB. KT NI VI SQL SERVER BNG ADO. ADO vit tt ca cm t ActiveX Data Object l cng c giao tip vi d liu ca nhiu h qun tr CSDL khc nhau, SQL Server l mt v d cho vic giao tip. ADO s dng vi CSDL quan h hoc s dng vi CSDL a chiu, khi gi l ADO MD (ADO Multi Dimention). ADO s dng kt ni kiu OLE DB hoc cc th vin kt ni COM (Component Object Model). OLE DB s dng 2 phng thc Microsoft OLE DB Provider for SQL Server (SQLOLEDB) v Microsoft OLE DB Provider for ODBC (MSDASQL). ADO c th thc hin t cc ngn ng lp trnh Visual Basic, ASP, C++. Cu trc ng dng s dng ADO. ADO gm cc thnh phn c bn sau: Application, ADO, OLE DB Provider, Data Source. Chc nng Thnh phn Application Gi cc i tng, thnh phn, phng thc v cc thuc tnh Trang 205

ADO OLE DB provider

Data source

H qun tr SQL Server 2000 ca ADO. Thng qua cc thnh phn ny ng dng s gi cc cu lnh SQL v nhn kt qu x l. Qun l vic trao i d liu gia ng dng v OLE DB X l cc lnh gi t ng dng qua ADO, kt ni vi Data Source. Processes all ADO calls from the application, connects to a data source, passes SQL statements from the application to the data source, and returns results to the application. Contains the information used by a provider to access a specific instance of data in a DBMS.

Khi thc hin lp trnh ng dng vi SQL Server s dng ADO, ngi lp trnh phi thc hin cc thao tc sau: + Kt ni n ngun d liu (data source). + Gi cu lnh SQL n ngun d liu. + X l kt qu nhn c t cu lnh gi. + X l cc li v thng bo. + Ngt kt ni n ngun d liu. i vi mt s ng dng phc tp s dng ADO c th s dng mt s thao tc sau: + S dng con tr (cursor) iu khin v tr trong tp kt qu. + Thc hin th tc lu tr trn Server. + Thc hin hm t nh ngha trn Server. + Qun l cc php truy vn m c nhiu tp kt qu. + Yu cu kt thc hoc lp li mt phin giao dch. + Qun l cc thao tc vi kiu d liu ln (text, image). + Thc hin cc thao tc vi XML s dng php truy vn XPath.

Kt ni n SQL Server. kt ni n SQL Server, cc cng vic c bn cn thc hin nh sau: + Cu hnh kt ni. + Thit lp hoc ngt kt ni n ngun d liu. + Xc nh OLE DB provider. Trang 206

H qun tr SQL Server 2000 + Thc hin truy vn. + Qun l cc phin lm vic trn kt ni. Khi s dng SQLOLEDB ta phi thc hin t cc thuc tnh sau cho kt ni: + Initial Catalog: Xc nh CSDL. + Data Source: Xc nh tn Server. + Integrated Security: Xc nh ch xc thc, nu l SSPI ch xc thc l Windows Authentication, hoc xc nh User ID, Password ca ch xc thc SQL Server Authentication. V d thc hin kt ni n SQL Server t tng thuc tnh ting bit t Visual Basic: ' Initialize variables. Dim cn As New ADODB.Connection . . . Dim ServerName As String, DatabaseName As String, _ UserName As String, Password As String ' Put text box values into connection variables. ServerName = txtServerName.Text DatabaseName = txtDatabaseName.Text UserName = txtUserName.Text Password = txtPassword.Text ' Specify the OLE DB provider. cn.Provider = "sqloledb" ' Set SQLOLEDB connection properties. cn.Properties("Data Source").Value = ServerName cn.Properties("Initial Catalog").Value = DatabaseName ' Decision code for login authorization type: ' Windows NT or SQL Server authentication. If optWinNTAuth.Value = True Then cn.Properties("Integrated Security").Value = "SSPI" Else cn.Properties("User ID").Value = UserName cn.Properties("Password").Value = Password End If Trang 207

H qun tr SQL Server 2000 ' Open the database. cn.Open

V d kt ni n SQL Server s dng chui kt ni: ' Initialize variables. Dim cn As New ADODB.Connection Dim provStr As String ' Specify the OLE DB provider. cn.Provider = "sqloledb" ' Specify connection string on Open method. ProvStr = "Server=MyServer;Database=northwind;Trusted_Connectio n=yes" cn.Open provStr

V d kt ni s dng ODBC: Dim cn As New ADODB.Connection cn.ConnectionTimeout = 100 ' DSN connection. You can use variables for the parameters. cn.Open "MyDataSource", "sa", "MyPassword" ' Alternative syntax follows: ' cn.Open "DSN=DataSourceName;UID=sa;PWD=Password;" cn.Close

V d kt ni xc nh Driver ca SQL Server: Dim cn As New ADODB.Connection ' Connection to SQL Server without using ODBC data source.

Trang 208

H qun tr SQL Server 2000 cn.Open "Driver={SQL Server};Server=Server1;Uid=SA;Pwd=;Database=northwind " cn.Close Thc hin truy vn. Thc hin truy vn s dng i tng Command.
cmd.Execute(NumRecords, Parameters, Options)

i tng Command c th thc hin nhiu kiu cu lnh (Select, Update, Insert, Delete, Create, Drop), i vi lnh Select kt qu thc hin l mt recordset.
Set rs = cmd.Execute(NumRecords, Parameters, Options)

Kiu lnh thc hin trong Command c xc nh theo option ca lnh, gm mt s kiu sau: Tn kiu adCmdFile adCmdStoreProc adCmdTable adCmdTableDirect adCmdText adCmdUnknown adCmdUnspecified M t Tn file cha i tng recordset Stored procedure Tn bng Tn bng m cc ct c truy vn Cu lnh SQL Cha xc nh Cha xc nh tham s cho lnh

Thc hin truy vn thng qua i tng connection. Dim cn As New ADODB.Connection . . . Dim rs As New ADODB.Recordset cmd1 = txtQuery.Text Set rs = cn.Execute(cmd1) Thc hin truy vn c s dng tham s. Khi thc hin cc th tc c tham s truyn vo cc ng dng phi truyn tham s, trong phn ny s gii thiu mt v d s dng i tng parameter.

Trang 209

H qun tr SQL Server 2000 To th tc: USE NORTHWIND GO drop proc myADOParaProc GO CREATE PROC myADOParaProc @categoryid int(4) AS SELECT * FROM products WHERE categoryid = @categoryid GO

S dng i tng parameter truyn tham s l s nguyn xc nh categoryID:


Dim Dim Dim Dim Dim Dim cn As New ADODB.Connection cmd As New ADODB.Command rs As New ADODB.Recordset prm As ADODB.Parameter fld As ADODB.Field provStr As String

' Connect using the SQLOLEDB provider. cn.Provider = "sqloledb" ' Specify connection string on Open method. provStr = "Server=MyServer;Database=northwind;Trusted_Connection=yes " cn.Open provStr ' Set up a command object for the stored procedure. Set cmd.ActiveConnection = cn cmd.CommandText = "myADOParaProc" cmd.CommandType = adCmdStoredProc cmd.CommandTimeout = 15 ' Set up a new parameter for the stored procedure. Set prm = Cmd.CreateParameter("CategoryID", adInteger, adParamInput, 4, 7) Cmd.Parameters.Append prm ' Create a recordset by executing the command. Set rs = cmd.Execute Set Flds = rs.Fields ' Print the values for all rows in the result set.

Trang 210

H qun tr SQL Server 2000


While (Not rs.EOF) For Each fld in Flds Debug.Print fld.Value Next Debug.Print "" rs.MoveNext Wend ' Close recordset and connection. rs.Close cn.Close

i tng Recordset. S dng i tng Recordset lu tr kt qu ca lnh Select. Dim cn As New ADODB.Connection Dim rs As ADODB.Recordset . . . cmd1 = txtQuery.Text Set rs = New ADODB.Recordset rs.Open cmd1, cn rs.MoveFirst . . . ' Code to loop through result set(s)

i tng Field. S dng i tng field l cc ct ca Recordset, thng qua n ta c th ly gi tr, thuc tnh ca ct. Dim Dim Dim Dim rs As New ADODB.Recordset fld As ADODB.Field cn As ADODB.Connection cmdText As String

cn.Provider = "sqloledb" cn.Properties("Data Source").Value = "MyServerName" cn.Properties("Initial Catalog").Value = "northwind" cn.Properties("Integrated Security").Value = "SSPI" cn.Open cmdText = "select * from authors" Trang 211

H qun tr SQL Server 2000 rs.Open cmdText, cn Set Flds = rs.Fields Dim TotalCount As Integer TotalCount = Flds.Count For Each fld In Debug.Print Debug.Print Debug.Print Next rs.Close S dng con tr. Khi s dng i tng Recordset ca ADO, ta c th s dng nhiu kiu con tr khc nhau xc nh kiu kha, iu khin v tr,... Dim rs As New ADODB.Recordset . . . rs.Open "SELECT * FROM titles", , adOpenDynamic, adLockOptimistic rs.Close COn tr ni trn gm nhng thuc tnh c bn sau: CursorType, CursorLocation, LockType, CacheSize. M t - adOpenForwardOnly: Ngm nh CursorType Xc nh kiu con tr c s dng: - adOpenForwardOnly: Ch c, ch c th cp nht d liu trn hng d liu hin thi. - adOpenStatic: Trng thi tnh, khi m kiu ny h thng s cung cp mt nh d liu (snapshot), d liu thay i trn bng c s s khng c th hin trn snapshot dng ny. - adOpenKeyset: Theo v tr ty chn, khi di chuyn hng cp nht con tr kiu ny s chiu n hng d liu c s, hng d liu c kh v bn c th cp nht, ly d liu t hng c s. - adOpenDynamic: ng, con tr kiu ny gn ging keyset cursor , nhng con tr kiu ny phn nh nhng thay i trn bng c s. CursorLocation -adUseServer: Ngm nh. - adUseClient: Nu t l ta ch c th m trng thi tnh. Trang 212 Thuc tnh Flds fld.Name fld.Type fld.Value

LockType

CacheSize

H qun tr SQL Server 2000 -adLockReadOnly: Ngm nh. Xc nh kiu kha trong qu trnh cp nht d liu (adLockPessimistic, adLockOptimistic, adLockBatchOptimistic). Ngm nh: 1 Xc nh s hng t trong b m hoc c trong mt thi im.

Cc phng thc dch chuyn hng d liu. Khi s dng i tng Recordset bn c th dch chuyn v tr ca hng d liu bng cc phng thc MoveFirst, MoveLast, MoveNext, MovePrevious. nh du v tr theo phng thc Bookmark, phng thc clone to mt bn sao recordset. Qun l phin lm vic. Trong phn cu lnh T-SQL ta xem xt vic iu khin mt hpin lm vic (transaction), tuy nhin ta c th s dng i tng connection ca ADO iu khin trc tip phin lm vic nh trong kch bn lnh ni trn bng vic s dng cc phng thc BeginTrans, CommitTrans, RollbackTrans. Xt v d sau: Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset . . . ' Open connection. cn.Open ' Open titles table. rs.Open "SELECT * FROM titles", Cn, adOpenDynamic, adLockPessimistic . . . ' Begin the transaction. rs.MoveFirst cn.BeginTrans ' User loops through the recordset making changes. . . . ' Ask if the user wants to commit all the changes made. If MsgBox("Save all changes?", vbYesNo) = vbYes Then Trang 213

H qun tr SQL Server 2000 cn.CommitTrans Else cn.RollbackTrans End If Thc hin cc lnh DDL. thc hin cc lnh DDL nh CREATE TABLE, DROP TABLE, ALTER TABLE. Bn c th s dng i tng command ca ADO, xt v d sau: Dim Cn As New ADODB.Connection Dim Cmd As New ADODB.Command ' If the ADOTestTable does not exist, go to AdoError. On Error GoTo AdoError ' Connect using the SQLOLEDB provider. cn.Provider = "sqloledb" cn.Properties("Data Source").Value = "MyServerName" cn.Properties("Initial Catalog").Value = "northwind" cn.Properties("Integrated Security").Value = "SSPI" cn.Open ' Set up command object. Set Cmd.ActiveConnection = Cn Cmd.CommandText = "DROP TABLE ADOTestTable" Cmd.CommandType = adCmdText Cmd.Execute Done: Cmd.CommandText = "SET NOCOUNT ON" Cmd.Execute Cmd.CommandText = "CREATE TABLE ADOTestTable (id int, name char(100))" Cmd.Execute Cmd.CommandText = "INSERT INTO ADOTestTable values(1, 'Jane Doe')" Cmd.Execute Cn.Close Exit Sub AdoError: Dim errLoop As Error Dim strError As String Trang 214

H qun tr SQL Server 2000 ' Enumerate Errors collection and display properties of ' each Error object. Set Errs1 = Cn.Errors For Each errLoop In Errs1 Debug.Print errLoop.SQLState Debug.Print errLoop.NativeError Debug.Print errLoop.Description Next GoTo Done End Sub Qun l d liu kiu ln Text, image. D liu kiu text, ntext, image l kiu d liu phc tp, vic qun l, khai thc khng c thc hin thng thng, ADO h tr cc phng thc ring thc hin. Thay v c, cp nht d liu trc tip th d liu kiu ny c thao tc theo on (chunk) bng cch s dng cc phng thc AppendChunk, GetChunk. Trc khi thc hin bn phi t tham s bng cch thc hin lnh sau: EXEC sp_dboption 'pubs', 'Select into/bulkcopy', 'True' Xt v d sau trn CSDL Pubs: - Copy bng pub_info sang bng mi USE pubs SELECT * INTO pub_info_x FROM pub_info GO - Thc hin chn d liu vo bng: Public Sub AppendChunkX() Dim Dim Dim Dim cn As ADODB.Connection rstPubInfo As ADODB.Recordset strCn As String strPubID As String Trang 215

H qun tr SQL Server 2000 Dim Dim Dim Dim Dim strPRInfo As String lngOffset As Long lngLogoSize As Long varLogo As Variant varChunk As Variant

Const conChunkSize = 100 ' Open a connection. Set cn = New ADODB.Connection strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;" cn.Provider = "sqloledb" cn.Open strCn 'Open the pub_info_x table. Set rstPubInfo = New ADODB.Recordset rstPubInfo.CursorType = adOpenDynamic rstPubInfo.LockType = adLockOptimistic rstPubInfo.Open "pub_info_x", cn, , , adCmdTable 'Prompt for a logo to copy. strMsg = "Available logos are : " & vbCr & vbCr Do While Not rstPubInfo.EOF strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ Left(rstPubInfo!pr_info, InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr rstPubInfo.MoveNext Loop strMsg = strMsg & "Enter the ID of a logo to copy:" strPubID = InputBox(strMsg) ' Copy the logo to a variable in chunks. rstPubInfo.Filter = "pub_id = '" & strPubID & "'" lngLogoSize = rstPubInfo!logo.ActualSize Do While lngOffset < lngLogoSize varChunk = rstPubInfo!logo.GetChunk(conChunkSize) varLogo = varLogo & varChunk lngOffset = lngOffset + conChunkSize Loop Trang 216

H qun tr SQL Server 2000 ' Get data from the user. strPubID = Trim(InputBox("Enter a new pub ID:")) strPRInfo = Trim(InputBox("Enter descriptive text:")) ' Add a new record, copying the logo in chunks. rstPubInfo.AddNew rstPubInfo!pub_id = strPubID rstPubInfo!pr_info = strPRInfo lngOffset = 0 ' Reset offset. Do While lngOffset < lngLogoSize varChunk = LeftB(RightB(varLogo, lngLogoSize _ lngOffset),conChunkSize) rstPubInfo!logo.AppendChunk varChunk lngOffset = lngOffset + conChunkSize Loop rstPubInfo.Update ' Show the newly added data. MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ "Description: " & rstPubInfo!pr_info & vbCr & _ "Logo size: " & rstPubInfo!logo.ActualSize rstPubInfo.Close cn.Close End Sub

Kt ni t ASP. Trong c v d saiu y thc hin lm vic vi SQL Server t ASP, s dng ngn ng lp trnh VBScript, lm c v d ny bn c phi c kin thc v thit k Web site (HTML). Thit k form kt ni: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <html> <head> Trang 217

H qun tr SQL Server 2000 <title>Login SQL Server example</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> <!-.style1 { font-size: 24px; font-weight: bold; } --> </style> </head> <body> <p align="center" class="style1">Login SQL Server</p> <p>&nbsp;</p> <form name="frmlogin"> <table width="100%" border="0"> <tr> <td width="40%"><div align="right">User name </div></td> <td width="60%"> <input name="txtUser" type="text" id="txtUser"> </td> </tr> <tr> <td><div align="right">Password </div></td> <td><input name="txtPassword" type="password" id="txtPassword"></td> </tr> <tr> <td><div align="right">Server name </div></td> <td><input name="txtServer" type="text" id="txtServer"></td> </tr> </table> <div align="center"> <input name="cmdLogin" type="button" id="cmdLogin" value="Login"> &nbsp;&nbsp; <input type="reset" name="cmdReset" value="Reset"> </div> </form> </body> </html> Trang 218

H qun tr SQL Server 2000 <Script language=vbscript> sub cmdLogin_Onclick frmlogin.method="post" frmlogin.action="connect.asp" frmlogin.submit end sub </script>

Tp tin connect.asp: L tp tin c gi t form login.asp, thc hin nhn tham s ca form login.asp, kt ni n SQL Server. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% dim username, password, servername, txt username=request.Form("txtUser") password = request.Form("txtPassword") servername=request.Form("txtServer") txt= "Provider=SQLOLEDB; " txt=txt & " Data Source=" & servername & ";" txt=txt & " Initial Catalog=pubs; " txt=txt & " User ID=" & username & ";" txt=txt & " PWD=" & password Set cn=Server.CreateObject("ADODB.Connection") Trang 219

H qun tr SQL Server 2000 cn.Open txt %> <div align="center"><span class="style1">K&#7871;t n&#7889;i th&agrave;nh c&ocirc;ng</span> <% cn.close %> <br> <a href="Login.asp<< V&#7873; form login</a> </div>

Lit k danh sch. lit k danh sch (c th ly d liu bng cch truy vn trc tip hoc thng qua khung nhn - view) trc ht phi to mt recordset lu tr kt qu truy vn, t recordset ta c th ly d liu v t vo v tr tng ng cn thit. + Khai bo Recordset: Set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection =cn rs.Source ="Select * from Authors" rs.Open + Ly gi tr: Trang 220

H qun tr SQL Server 2000 Rs.fields(au_id) + ng Recordset: Rs.close

+ V d lit k danh sch bng cch truy vn trc tip: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <html> <head> <title>Danh sach</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> <!-.style5 { font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 14px; } .style6 {font-family: Arial, Helvetica, sans-serif} .style7 { font-size: 14px; font-weight: bold; } .style9 {font-family: Arial, Helvetica, sans-serif; font-size: 14px; } .style12 {font-size: 12px} --> </style> </head> <% dim username, password, servername, txt username="sa" password = "" servername="TDCong" txt= "Provider=SQLOLEDB; " txt=txt & " Data Source=" & servername & ";" txt=txt & " Initial Catalog=pubs; " txt=txt & " User ID=" & username & ";" txt=txt & " PWD=" & password Set cn=Server.CreateObject("ADODB.Connection") Trang 221

H qun tr SQL Server 2000 cn.Open txt Set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection =cn rs.Source ="Select * from Authors" rs.Open %> <body> <p align="center"><strong>LIST OF AUTHORS </strong></p> <p>&nbsp;</p> <table width="100%" border="0.2"> <tr bgcolor="#999999"> <td width="5%"><div align="center" class="style5">No</div></td> <td width="14%"><div align="center" class="style6 style7">au_id</div></td> <td width="14%"><div align="center" class="style9"><strong>au_lname</strong></div></td> <td width="14%"><div align="center" class="style9"><strong>au_fname</strong></div></td> <td width="14%"><div align="center" class="style9"><strong>phone</strong></div></td> <td width="26%"><div align="center" class="style9"><strong>address</strong></div></td> <td width="13%"><div align="center" class="style9"><strong>city</strong></div></td> </tr> <% i=0 do while not rs.eof and not rs.bof i=i+1 if i mod 2<>0 then %> <tr bgcolor="#FFFFFF"> <td><div align="center"><span class="style12"><%=i%></span></div></td> <td><div align="center"><span class="style12"><%=rs.fields("au_id")%></span></div>< /td> <td><span class="style12"><%=rs.fields("au_fname")%></span></td >

Trang 222

H qun tr SQL Server 2000 <td><span class="style12"><%=rs.fields("au_lname")%></span></td > <td><span class="style12"><%=rs.fields("Phone")%></span></td> <td><span class="style12"><%=rs.fields("Address")%></span></td> <td><span class="style12"><%=rs.fields("City")%></span></td> </tr> <% else %> <tr bgcolor="#CCCCCC"> <td><div align="center"><span class="style12"><%=i%></span></div></td> <td><div align="center"><span class="style12"><%=rs.fields("au_id")%></span></div>< /td> <td><span class="style12"><%=rs.fields("au_lname")%></span></td > <td><span class="style12"><%=rs.fields("au_fname")%></span></td > <td><span class="style12"><%=rs.fields("Phone")%></span></td> <td><span class="style12"><%=rs.fields("Address")%></span></td> <td><span class="style12"><%=rs.fields("City")%></span></td> </tr> <% end if rs.movenext loop %> </table> </body> <% rs.close %>

Trang 223

H qun tr SQL Server 2000 </html>

KT NI VI SQL SERVER BNG SQL-DMO. SQL DMO vit tt ca cm t SQL Distributed Management Objects, s dng th vin lin kt ng (dll) kt ni n SQL Server. SQL DMO thc hin lin kt nhng (OLE Automation ), cc i tng SQL Server c thc hin nhng cc i tng ca SQL Server vo ng dng, khai thc cc i tng thng qua thuc tnh, s kin v cc phng thc lm vic ca n. SQL DMO h tr pht trin ng dng t ngn ng lp trnh Visual Basic, C++, khi ng gi cc th vin lin kt ng s c ng gi cng, ci dt ng dng th vin s c ci t trong Windows, nn khi chy ng dng bn khng cn thit lp mi trng Client Connectivity.

Trang 224

H qun tr SQL Server 2000 Cc tp tin c bn cho SQL DMO: sqldmo.dll, sqldmo80.hlp, sqldmo.rll, sqldmo.h (C++), sqldmoid.h (C++), sqldmo.sql. Trong phn ny s gii thiu k thut thit k ng dng t Visual Basic 6.0. Khai bo th vin trong project. - Vo menu Project -> References - Chn Microsoft SQL DMO Object Library -> Ok

Khai bo i tng. Sau khi thc hin khai bo th vin trong project, ta c th khai bo bin kiu i tng (object) hoc kiu i tng ca SQL DMO. V d khai bo bin kiu SQL Server: Dim oSQLServer As SQLDMO.SQLServer

Kt ni n SQL Server. kt ni n SQL Server ta s dng phng thc kt ni ca i tng SQL Server, c 3 tham s Servername, LoginName, Pasword. Dim oSQLServer As SQLDMO.SQLServer Set oSQLServer = New SQLDMO.SQLServer oSQLServer.Connect "ServerName", "LoginName", "Pasword" Thc hin li kt ni: Trang 225

H qun tr SQL Server 2000 Trong nhiu trng hp bn mun ngt kt ni hin ti v thc hin li kt ni ly trng thi SQL Server hin thi (tng t ng tc lm ti Reresh). oSQLServer.DisConnect oSQLServer.ReConnect Lm vic vi cc i tng. SQL DMO to i tng k tha t nhng i tng con ca n, v d SQL Server k tha t cc i tng Database <- Table <- Column, Xc nh bin vi CSDL: Dim oDatabase as new SQLDMO.Database Set oDatabase = oSQLServer.Databases("Northwind") Ly danh sch tn cc CSDL vo hp thoi: Dim nDatabase as Integer For nDatabase = 1 to oSQLServer.Databases.Count Combo1.AddItem oSQLServer.Databases(nDatabase).Name Next nDatabase Cc i tng u c k th t cc i tng con, cc i tng con to thnh mt tp hp, tp hp ni trn c th thc hin cc phng thc Add, Remove,vi tng i tng. V d remove bng khi CSDL: oServer.Databases("Northwind").Tables.Remove("Orders" , "anne") Thc hin lnh SQL: Cc i tng (SQL Server, Database) c th thc hin cc lnh SQL thng qua cc phng thc ExecuteImmediate v ExecuteWithResults. V d thc hin lnh thao tc: oSQLServer.ExecuteImmediate Create Database Example V d thc hin lnh truy vn:

Trang 226

H qun tr SQL Server 2000 Dim rs As QueryResults Set rs = oDatabase.ExecuteWithResults("Select from Authors") *

V d ly d liu t mt truy vn: For i = 1 To rs.Rows For j = 1 To rs.Columns MsgBox rs.GetColumnString(i, j) Next j Next i

Cc phng thc thc hin kt ni c th h tr theo tng ngn ng lp trnh, h tr nhiu trong vic lp trnh t Visual Basic, ASP, C, C++. Bn c th tham kho cc v d trong th mc Sample ca SQL Server. Cc v d s cp nhiu ngn ng lp trnh, nhiu s kin khc nhau.

Trang 227

You might also like