H C SQL SERVER 2000
1
M CL C
Overview of SQL Server 2000 ........................................................................................... 2
Transact SQL ...................................................................................................................... 7
Backup And Restore SQL Server ..................................................................................... 24
Stored Procedure and Advanced T-SQL........................................................................... 41
Triggers And Views.......................................................................................................... 51
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
2
Overview of SQL Server 2000
Ð đ c và hi u bài vi t này b n ph i có ki n th c c n b n v
SQL và Access Database
Gi i Thi u SQL Server 2000
SQL Server 2000 là m t h th ng qu n lý c s d li u (Relational Database
Management System (RDBMS) ) s d ng Transact-SQL đ trao đ i d li u gi a
Client computer và SQL Server computer. M t RDBMS bao g m databases,
database engine và các ng d ng dùng đ qu n lý d li u và các b ph n khác
nhau trong RDBMS.
SQL Server 2000 đ c t i u đ có th ch y trên môi tr ng c s d li u r t
l n (Very Large Database Environment) lên đ n Tera-Byte và có th ph c v
cùng lúc cho hàng ngàn user. SQL Server 2000 có th k t h p " n ý" v i các
server khác nh Microsoft Internet Information Server (IIS), E-Commerce
Server, Proxy Server....
SQL Server có 7 editions:
•
Enterprise : Ch a đ y đ các đ c tr ng c a SQL Server và có th ch y
t t trên h th ng lên đ n 32 CPUs và 64 GB RAM. Thêm vào đó nó có các
d ch v giúp cho vi c phân tích d li u r t hi u qu (Analysis Services)
•
Standard : R t thích h p cho các cơng ty v a và nh vì giá thành r h n
nhi u so v i Enterprise Edition, nh ng l i b gi i h n m t s ch c n ng
cao c p (advanced features) khác, edition này có th ch y t t trên h
th ng lên đ n 4 CPU và 2 GB RAM.
•
Personal: đ c t i u hóa đ ch y trên PC nên có th cài đ t trên h u
h t các phiên b n windows k c Windows 98.
•
Developer : Có đ y đ các tính n ng c a Enterprise Edition nh ng đ c
ch t o đ c bi t nh gi i h n s l ng ng i k t n i vào Server cùng m t
lúc.... Ðây là edition mà các b n mu n h c SQL Server c n có. Chúng ta
s dùng edition này trong su t khóa h c. Edition này có th cài trên
Windows 2000 Professional hay Win NT Workstation.
•
Desktop Engine (MSDE): Ðây ch là m t engine ch y trên desktop và
không có user interface (giao di n). Thích h p cho vi c tri n khai ng
d ng máy client. Kích th c database b gi i h n kho ng 2 GB.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
3
•
Win CE : Dùng cho các ng d ng ch y trên Windows CE
•
Trial: Có các tính n ng c a Enterprise Edition, download free, nh ng gi i
h n th i gian s d ng.
Cài Ð t SQL Server 2000 (Installation)
Các b n c n có Developer Edition và ít nh t là 64 MB RAM, 500 MB hard disk
đ có th install SQL Server. B n có th install trên Windows Server hay
Windows XP Professional, Windows 2000 Professional hay NT Workstation nh ng
không th install trên Win 98 family.
Vì m t trong nh ng đ c đi m c a các s n ph m Microsoft là d install nên chúng
tơi khơng trình bày chi ti t v cách install hay các b c install mà ch trình bày
các đi m c n l u ý khi install mà thôi. N u các b n g p tr ng i trong vi c install
thì có th đ a lên forum đ h i thêm. Khi install b n c n l u ý các đi m sau:
màn hình th hai b n ch n Install Database Server. Sau khi install xong
SQL Server b n có th install thêm Analysis Service n u b n thích.
màn hình Installation Definition b n ch n Server and Client Tools.
Sau đó b n nên ch n ki u Custom và ch n t t c các b ph n c a SQL Server.
Ngoài ra nên ch n các giá tr m c đ nh (default)
màn hình Authentication Mode nh ch n Mixed Mode . L u ý vì SQL
Server có th dùng chung ch đ b o m t (security) v i Win NT và c ng có th
dùng ch đ b o m t riêng c a nó. Trong Production Server ng i ta th ng
dùng Windows Authetication vì đ an tồn cao h n và d dàng cho ng i qu n
lý m ng và c cho ng i s d ng. Ngh a là m t khi b n đ c ch p nh n
(authenticated) k t n i vào domain thì b n có quy n truy c p d li u (access
data) trong SQL Server. Tuy nhiên ta nên ch n Mixed Mode đ d dàng cho vi c
h c t p.
Sau khi install b n s th y m t icon n m góc ph i bên d i màn hình, đây
chính là Service Manager. B n có th Start, Stop các SQL Server services d
dàng b ng cách double-click vào icon này.
M t chút ki n th c v các Version c a SQL Server
SQL Server c a Microsoft đ c th tr ng ch p nh n r ng rãi k t version 6.5.
Sau đó Microsoft đã c i ti n và h u nh vi t l i m t engine m i cho SQL Server
7.0. Cho nên có th nói t version 6.5 lên version 7.0 là m t b c nh y v t. Có
m t s đ c tính c a SQL Server 7.0 khơng t ng thích v i version 6.5. Trong khi
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
4
đó t Version 7.0 lên version 8.0 (SQL Server 2000) thì nh ng c i ti n ch y u là
m r ng các tính n ng v web và làm cho SQL Server 2000 đáng tin c y h n.
M t đi m đ c bi t đáng l u ý version 2000 là Multiple-Instance. Nói cho d
hi u là b n có th install version 2000 chung v i các version tr c mà không c n
ph i uninstall chúng. Ngh a là b n có th ch y song song version 6.5 ho c 7.0
v i version 2000 trên cùng m t máy (đi u này không th x y ra v i các version
tr c đây). Khi đó version c trên máy b n là Default Instance còn version
2000 m i v a install s là Named Instance.
Các thành ph n quan tr ng trong SQL Server 2000
SQL Server 2000 đ c c u t o b i nhi u thành ph n nh Relational Database
Engine, Analysis Service và English Query.... Các thành ph n này khi ph i h p
v i nhau t o thành m t gi i pháp hoàn ch nh giúp cho vi c l u tr và phân tích
d li u m t cách d dàng.
Relational Database Engine - Cái lõi c a SQL Server:
Ðây là m t engine có kh n ng ch a data các quy mô khác nhau d i d ng
table và support t t c các ki u k t n i (data connection) thông d ng c a
Microsoft nh ActiveX Data Objects (ADO), OLE DB, and Open Database
Connectivity (ODBC). Ngoài ra nó cịn có kh n ng t đi u ch nh (tune up) ví d
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
5
nh s d ng thêm các tài nguyên (resource) c a máy khi c n và tr
nguyên cho h đi u hành khi m t user log off.
l i tài
Replication - C ch t o b n sao (Replica):
Gi s b n có m t database dùng đ ch a d li u đ c các ng d ng th ng
xuyên c p nh t. M t ngày đ p tr i b n mu n có m t cái database gi ng y h t
nh th trên m t server khác đ ch y báo cáo (report database) (cách làm này
th ng dùng đ tránh nh h ng đ n performance c a server chính). V n đ là
report server c a b n c ng c n ph i đ c c p nh t th ng xuyên đ đ m b o
tính chính xác c a các báo cáo. B n không th dùng c ch back up and restore
trong tr ng h p này. Th thì b n ph i làm sao? Lúc đó c ch replication c a
SQL Server s đ c s d ng đ b o đ m cho d li u 2 database đ c đ ng b
(synchronized). Replication s đ c bàn k trong bài 12
Data Transformation Service (DTS) - M t d ch v chuy n d ch data vô cùng
hi u qu
N u b n làm vi c trong m t công ty l n trong đó data đ c ch a trong nhi u n i
khác nhau và các d ng khác nhau c th nh ch a trong Oracle, DB2 (c a
IBM), SQL Server, Microsoft Access....B n ch c ch n s có nhu c u di chuy n
data gi a các server này (migrate hay transfer) và không ch di chuy n b n cịn
mu n đ nh d ng (format) nó tr c khi l u vào database khác, khi đó b n s th y
DTS giúp b n gi i quy t công vi c trên d dàng nh th nào. DTS s đ c bàn
k trong bài 8.
Analysis Service - M t d ch v phân tích d li u r t hay c a Microsoft
D li u (Data) ch a trong database s ch ng có ý ngh a gì nhi u n u nh b n
khơng th l y đ c nh ng thông tin (Information) b ích t đó. Do đó Microsoft
cung c p cho b n m t công c r t m nh giúp cho vi c phân tích d li u tr nên
d dàng và hi u qu b ng cách dùng khái ni m hình kh i nhi u chi u (multidimension cubes) và k thu t "đào m d li u" (data mining) s đ c chúng tôi
gi i thi u trong bài 13.
English Query - M t d ch v mà ng
Ðây là m t d ch v
English).
i Vi t Nam ch c là ít mu n dùng :-) (?)
giúp cho vi c query data b ng ti ng Anh "tr n" (plain
Meta Data Service:
D ch v này giúp cho vi c ch a đ ng và "xào n u" Meta data d dàng h n. Th
thì Meta Data là cái gì v y? Meta data là nh ng thơng tin mô t v c u trúc c a
data trong database nh data thu c lo i nào String hay Integer..., m t c t nào
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
6
đó có ph i là Primary key hay khơng....B i vì nh ng thơng tin này c ng đ c
ch a trong database nên c ng là m t d ng data nh ng đ phân bi t v i data
"chính th ng" ng i ta g i nó là Meta Data. Ph n này ch c là b n ph i xem thêm
trong m t thành ph n khác c a SQL Server s p gi i thi u sau đây là SQL
Server Books Online vì khơng có bài nào trong lo t bài này nói rõ v d ch v
này c .
SQL Server Books Online - Quy n Kinh Thánh không th thi u:
Cho dù b n có đ c các sách khác nhau d y v SQL server thì b n c ng s th y
books online này r t h u d ng và không th thi u đ c( cho nên Microsoft m i
hào phóng đính kèm theo SQL Server).
SQL Server Tools - Ðây là m t b đ ngh c a ng
(DBA )
i qu n tr c s d
li u
Ái chà n u k chi ti t ra thì h i nhi u đ y cho nên b n c n đ c thêm trong books
online. đây ng i vi t ch k ra m t vài công c thông d ng mà thôi.
Ð u tiên ph i k đ n Enterprise Manager. Ðây là m t công c cho ta
th y toàn c nh h th ng c s d li u m t cách r t tr c quan. Nó r t h u
ích đ c bi t cho ng i m i h c và không thông th o l m v SQL.
K đ n là Query Analyzer. Ð i v i m t DBA gi i thì h u nh ch c n
cơng c này là có th qu n lý c m t h th ng database mà không c n
đ n nh ng th khác. Ðây là m t môi tr ng làm vi c khá t t vì ta có th
đánh b t k câu l nh SQL nào và ch y ngay l p t c đ c bi t là nó giúp
cho ta debug m y cái stored procedure d dàng.
Công c th ba c n ph i k đ n là SQL Profiler. Nó có kh n ng "ch p"
(capture) t t c các s ki n hay ho t đ ng di n ra trên m t SQL server và
l u l i d i d ng text file r t h u d ng trong vi c ki m sốt ho t đ ng
c a SQL Server.
Ngồi m t s công c tr c quan nh trên chúng ta c ng th ng hay dùng
osql và bcp (bulk copy) trong command prompt.
Tóm l i trong bài này chúng ta đã d o qua m t vịng đ tìm hi u v SQL Server.
Trong bài sau chúng ta c ng s ti p t c d o ch i thêm m t chút v i TransactSQL tr c khi đi sâu vào các đ tài khác.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
7
Transact SQL
Gi i Thi u S L
c V Transact SQL (T-SQL)
Transact-SQL là ngôn ng SQL m r ng d a trên SQL chu n c a ISO
(International Organization for Standardization) và ANSI (American National
Standards Institute) đ c s d ng trong SQL Server khác v i P-SQL (ProceduralSQL) dùng trong Oracle.
Trong bài này chúng ta s tìm hi u s
nhóm:
qua v T-SQL. Chúng đ
c chia làm 3
Data Definition Language (DDL):
Ðây là nh ng l nh dùng đ qu n lý các thu c tính c a m t database nh đ nh
ngh a các hàng ho c c t c a m t table, hay v trí data file c a m t
database...th ng có d ng
•
•
•
Create object_Name
Alter object_Name
Drop object_Name
Trong đó object_Name có th là m t table, view, stored procedure, indexes...
Ví d :
L nh Create sau s
t o ra m t
CompanyID,CompanyName,Contact
table
tên
Importers
v i
3
c t
USE Northwind
CREATE TABLE Importers(
CompanyID int NOT NULL,
CompanyName varchar(40) NOT NULL,
Contact varchar(40) NOT NULL
)
L nh Alter sau đây cho phép ta thay đ i đ nh ngh a c a m t table nh thêm(hay
b t) m t c t hay m t Constraint...Trong ví d này ta s thêm c t ContactTitle
vào table Importers
USE Northwind
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
8
ALTER TABLE Importers
ADD ContactTitle varchar(20) NULL
L nh Drop sau đây s hồn tồn xóa table kh i database ngh a là c đ nh
ngh a c a table và data bên trong table đ u bi n m t (khác v i l nh
Delete ch xóa data nh ng table v n t n t i).
USE Northwind
DROP TABLE Importers
Data Control Language (DCL):
Ðây là nh ng l nh qu n lý các quy n truy c p lên t ng object (table, view,
stored procedure...). Th ng có d ng sau:
•
•
•
Grant
Revoke
Deny
Ví d :
L nh sau s cho phép user trong Public Role đ c quy n Select đ i v i table
Customer trong database Northwind (Role là m t khái ni m gi ng nh Windows
Group s đ c bàn k trong ph n Security)
USE Northwind
GRANT SELECT
ON Customers
TO PUBLIC
L nh sau s t ch i quy n Select đ i v i table Customer trong database
Northwind c a các user trong Public Role
USE Northwind
DENY SELECT
ON Customers
TO PUBLIC
L nh sau s xóa b tác d ng c a các quy n đ
c cho phép hay t ch i tr
USE Northwind
REVOKE SELECT
ON Customers
TO PUBLIC
CuuDuongThanCong.com
/>
c đó
H C SQL SERVER 2000
9
Data Manipulation Language (DML):
Ðây là nh ng l nh ph
Delete
bi n dùng đ
x
lý data nh
Select, Update, Insert,
Ví d :
Select
USE Northwind
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr')
ORDER BY ContactName
Insert
USE Northwind
INSERT INTO Territories
VALUES (98101, 'Seattle', 2)
Update
USE Northwind
UPDATE Territories
SET TerritoryDescription = 'Downtown Seattle'
WHERE TerritoryID = 98101
Delete
USE Northwind
DELETE FROM Territories
WHERE TerritoryID = 98101
Vì ph n này khá c n b n nên chúng tôi thi t ngh khơng c n gi i thích nhi u.
Chú ý trong l nh Delete b n có th có ch From hay không đ u đ c.
Nh ng mà chúng ta s ch y th các ví d trên
Ð ch y các câu l nh thí d
Analyser
trên b n c n s
đâu?
d ng và làm quen v i Query
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
10
Cú Pháp C a T-SQL:
Ph n này chúng ta s bàn v các thành ph n t o nên cú pháp c a T-SQL
Identifiers
Ðây chính là tên c a các database object. Nó dùng đ xác đ nh m t object. (Chú
ý khi nói đ n Object trong SQL Server là chúng ta mu n đ c p đ n table, view,
stored procedure, index.....Vì h u nh m i th trong SQL Server đ u đ c thi t
k theo ki u h ng đ i t ng (object-oriented)). Trong ví d sau TableX,
KeyCol, Description là nh ng identifiers
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description NVARCHAR(80))
Có hai lo i Identifiers m t lo i thông th ng (Regular Identifier) và m t lo i
g i là Delimited Identifier, lo i này c n có d u "" hay d u [] đ ng n cách.
Lo i Delimited đ c dùng đ i v i các ch trùng v i t khóa c a SQL Server
(reserved keyword) hay các ch có kho ng tr ng.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
11
Ví d :
SELECT * FROM [My Table]
WHERE [Order] = 10
Trong ví d trên ch
ngo c vng [].
Order trùng v i keyword Order nên c n đ t trong d u
Variables (Bi n)
Bi n trong T-SQL c ng có ch c n ng t ng t nh trong các ngơn ng l p trình
khác ngh a là c n khai báo tr c lo i d li u tr c khi s d ng. Bi n đ c b t
đ u b ng d u @ (Ð i v i các global variable thì có hai d u @@)
Ví d :
USE Northwind
DECLARE @EmpIDVar INT
SET @EmpIDVar = 3
SELECT * FROM Employees
WHERE EmployeeID = @EmpIDVar + 1
Functions (Hàm)
Có 2 lo i hàm m t lo i là built-in và m t lo i user-defined
Các hàm Built-In đ
•
•
•
c chia làm 3 nhóm:
Rowset Functions : Lo i này th ng tr v m t object và đ c
đ i x nh m t table. Ví d nh hàm OPENQUERY s tr v m t
recordset và có th đ ng v trí c a m t table trong câu l nh Select.
Aggregate Functions : Lo i này làm vi c trên m t s giá tr và
tr v m t giá tr đ n hay là các giá tr t ng. Ví d nh hàm AVG s
tr v giá tr trung bình c a m t c t.
Scalar Functions : Lo i này làm vi c trên m t giá tr đ n và tr
v m t giá tr đ n. Trong lo i này l i chia làm nhi u lo i nh nh
các hàm v toán h c, v th i gian, x lý ki u d li u String....Ví d
nh hàm MONTH('2002-09-30') s tr v tháng 9.
Các hàm User-Defined (đ c t o ra b i câu l nh CREATE FUNCTION và ph n
body th ng đ c gói trong c p l nh BEGIN...END) c ng đ c chia làm các
nhóm nh sau:
•
•
Scalar Functions : Lo i này c ng tr v m t giá tr đ n b ng câu
l nh RETURNS.
Table Functions : Lo i này tr v m t table
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
Data Type (Lo i D
12
Li u)
Các lo i d li u trong SQL Server s đ
c bàn k trong các bài sau
Expressions
Các Expressions có d ng Identifier + Operators (nh +,-,*,/,=...) + Value
Các thành ph n Control-Of Flow
Nh BEGIN...END, BREAK, CONTINUE, GOTO, IF...ELSE, RETURN, WHILE.... Xin
xem thêm Books Online đ bi t thêm v các thành ph n này.
Comments (Chú Thích)
T-SQL dùng d u -- đ đánh d u ph n chú thích cho câu l nh đ n và dùng /*...*/
đ chú thích cho m t nhóm
Th c Thi Các Câu L nh SQL
Th c thi m t câu l nh đ n:
M t câu l nh SQL đ c phân ra thành các thành ph n cú pháp nh trên b i m t
parser, sau đó SQL Optimizer (m t b ph n quan tr ng c a SQL Server) s phân
tích và tìm cách th c thi (Execute Plan) t i u nh t ví d nh cách nào nhanh và
t n ít tài nguyên c a máy nh t... và sau đó SQL Server Engine s th c thi và tr
v k t qu .
Th c Thi m t nhóm l nh (Batches)
Khi th c thi m t nhóm l nh SQL Server s phân tích và tìm bi n pháp t i u cho
các câu l nh nh m t câu l nh đ n và ch a execution plan đã đ c biên d ch
(compiled) trong b nh sau đó n u nhóm l nh trên đ c g i l i l n n a thì SQL
Server khơng c n biên d ch mà có th th c thi ngay đi u này giúp cho m t batch
ch y nhanh h n.
L nh GO
L nh này ch dùng đ g i m t tín hi u cho SQL Server bi t đã k t thúc m t batch
job và u c u th c thi. Nó v n khơng ph i là m t l nh trong T-SQL.
Tóm l i trong ph n này chúng ta đã tìm hi u v Transact- SQL là ngơn ng chính
đ giao ti p v i SQL Server. Trong bài sau chúng ta s ti p t c bàn v c u trúc
bên trong c a SQL Server .
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
13
Design and Implement a SQL Server Database
C u Trúc C a SQL Server
Nh đã trình bày
các bài tr c m t trong nh ng đ c đi m c a SQL Server
2000 là Multiple-Instance nên khi nói đ n m t (SQL) Server nào đó là ta nói
đ n m t Instance c a SQL Server 2000, thơng th ng đó là Default Instance.
M t Instance c a SQL Server 2000 có 4 system databases và m t hay nhi u user
database. Các system databases bao g m:
•
Master : Ch a t t c nh ng thông
information) bao g m thông tin v
th ng nh v trí c a các data files,
đ t c u hình h th ng c a SQL
settings).
•
Tempdb : Ch a t t c nh ng table hay stored procedure đ c t m
th i t o ra trong quá trình làm vi c b i user hay do b n thân SQL
Server engine. Các table hay stored procedure này s bi n m t khi
kh i đ ng l i SQL Server hay khi ta disconnect.
•
Model : Database này đóng vai trò nh m t b ng k m (template)
cho các database khác. Ngh a là khi m t user database đ c t o ra
thì SQL Server s copy tồn b các system objects (tables, stored
procedures...) t Model database sang database m i v a t o.
•
Msdb : Database này đ c SQL Server Agent s d ng đ ho ch
đ nh các báo đ ng và các công vi c c n làm (schedule alerts and
jobs).
tin c p h th ng (system-level
các database khác trong h
các login account và các thi t
Server (system configuration
C u Trúc V t Lý C a M t SQL Server Database
M i m t database trong SQL Server đ u ch a ít nh t m t data file chính
(primary), có th có thêm m t hay nhi u data file ph (Secondary) và m t
transaction log file.
•
Primary data file (th ng có ph n m r ng .mdf) : đây là file
chính ch a data và nh ng system tables.
•
Secondary data file (th ng có ph n m r ng .ndf) : đây là file
ph th ng ch s d ng khi database đ c phân chia đ ch a trên
nhi u d a.
•
Transaction log file (th ng có ph n m r ng .ldf) : đây là file
ghi l i t t c nh ng thay đ i di n ra trong m t database và ch a
đ y đ thông tin đ có th roll back hay roll forward khi c n.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
14
Data trong SQL Server đ c ch a thành t ng Page 8KB và 8 page liên t c t o
thành m t Extent nh hình v d i đây:
Tr c khi SQL Server mu n l u data vào m t table nó c n ph i dành riêng m t
kho ng tr ng trong data file cho table đó. Nh ng kho ng tr ng đó chính là các
extents. Có 2 lo i Extents: Mixed Extents (lo i h n h p) dùng đ ch a data
c a nhi u tables trong cùng m t Extent và Uniform Extent (lo i thu n nh t)
dùng đ ch a data c a m t table. Ð u tiên SQL Server dành các Page trong
Mixed Extent đ ch a data cho m t table sau đó khi data t ng tr ng thì SQL
dành h n m t Uniform Extent cho table đó.
Nguyên T c Ho t Ð ng C a Transaction Log Trong SQL Server
Transaction log file trong SQL Server dùng đ ghi l i các thay đ i x y ra trong
database. Quá trình này di n ra nh sau: đ u tiên khi có m t s thay đ i data
nh Insert, Update, Delete đ c yêu c u t các ng d ng, SQL Server s t i
(load) data page t ng ng lên memory (vùng b nh này g i là data cache),
sau đó data trong data cache đ c thay đ i(nh ng trang b thay đ i còn g i là
dirty-page). Ti p theo m i s thay đ i đ u đ c ghi vào transaction log file cho
nên ng i ta g i là write-ahead log. Cu i cùng thì m t quá trình g i là Check
Point Process s ki m tra và vi t t t c nh ng transaction đã đ c commited
(hoàn t t) vào d a c ng (flushing the page).
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
15
Ngoài Check Point Process nh ng dirty-page còn đ c đ a vào d a b i m t Lazy
writer. Ðây là m t anh chàng làm vi c âm th m ch th c gi c và quét qua ph n
data cache theo m t chu k nh t đ nh sau đó l i ng yên ch l n quét t i.
Xin gi i thích thêm m t chút v khái ni m transaction trong database. M t
transaction hay m t giao d ch là m t lo t các ho t đ ng x y ra đ c xem nh
m t công vi c đ n (unit of work) ngh a là ho c thành cơng tồn b ho c khơng
làm gì c (all or nothing). Sau đây là m t ví d c đi n v transaction:
Chúng ta mu n chuy n m t s ti n $500 t
account B nh v y công vi c này c n làm
1.
Tr $500 t account A
2.
C ng $500 vào account B
Tuy nhiên vi c chuy n ti n trên ph i đ
transaction ngh a là giao d ch ch đ c
xem là hoàn t t (commited) khi c hai b
cơng. N u vì m t lý do nào đó ta ch
có th th c hi n đ c b c 1 (ch ng h n
cúp hay máy b treo) thì xem nh giao
d ch khơng hồn t t và c n ph i đ c ph
(roll back).
account A sang
các b c sau:
c th c hi n d
i d ng m t
c trên đ u th c hi n thành
nh
v a xong b
c 1 thì đi n
c h i l i tr ng thái ban đ u
Th thì Check Point Process ho t đ ng nh th nào đ
transaction đ c th c thi mà khơng làm "d " database.
có th
CuuDuongThanCong.com
/>
đ m b o m t
H C SQL SERVER 2000
16
Trong hình v trên, m t transaction đ c bi u di n b ng m t m i tên. Tr
ngang là tr c th i gian. Gi s m t Check Point đ c đánh d u vào th
gi a transaction 2 và 3 nh hình v và sau đó s c xãy ra tr c khi g
Check point k ti p. Nh v y khi SQL Server đ c restart nó s d a trên
gì ghi trong transaction log file đ ph c h i data (xem hình v ).
cn m
i đi m
p m t
nh ng
Ði u đó có ngh a là SQL Server s khơng c n làm gì c đ i v i transaction 1 vì t i
th i đi m Check point data đã đ c l u vào d a r i. Trong khi đó transaction 2
và 4 s đ c roll forward vì tuy đã đ c commited nh ng do s c x y ra tr c
th i đi m check point k ti p nên data ch a k p l u vào d a. T c là d a trên
nh ng thông tin đ c ghi trên log file SQL Server hồn tồn có đ y đ c s đ
vi t vào d a c ng. Cịn transaction 3 và 5 thì ch a đ c commited (do b down
b t ng ) cho nên SQL Server s roll back hai transaction này d a trên nh ng gì
đ c ghi trên log file.
C u Trúc Logic C a M t SQL Server Database
H u nh m i th trong SQL Server đ c t ch c thành nh ng objects ví d nh
tables, views, stored procedures, indexes, constraints.... Nh ng system objects
trong SQL Server th ng có b t đ u b ng ch sys hay sp. Các objects trên s
đ c nghiên c u l n l t trong các bài sau do đó trong ph n này chúng ta ch
bàn s qua m t s system object thông d ng trong SQL Server database mà
thôi.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
M t s Sytem objects th
17
ng dùng:
System Stored Procedure
ng d ng
Sp_help ['object']
Cung c p thông tin v m t database object (table, view...) hay m t data
type.
Sp_helpdb ['database']
Cung c p thông tin v m t database c th nào đó.
Sp_monitor
Cho bi t đ b n r n c a SQL Server
Sp_spaceused ['object',
'updateusage' ]
Cung c p thông tin v các kho ng tr ng đã đ
nào đó
Sp_who ['login']
Cho bi t thông tin v m t SQL Server user
c s d ng cho m t object
Ví d :
sp_helpdb 'Northwind' s cho k t qu có d ng nh b ng d
i đây
name
db_size
owner
dbid
created
status .....
------------------------------------------------------------------------------------------------------------------------------- ------Northwind
3.94 MB
sa
6
Aug 6 2000
Status=ONLINE,
Updateability=READ_WRITE, .....
stored procedure sp_spaceused nh ví d sau
USE Northwind
Go
sp_spaceused 'Customers'
s cho bi t thông tin v table Customer:
name
rows
reserved
data
index_size
unused
------------------------------------- -----------------------------------------Customers
91
104 KB
24 KB
80 KB
0 KB
T o M t User Database
Chúng ta có th t o m t database d dàng dùng SQL Server Enterprise b ng
cách right-click lên trên "database" và ch n "New Database" nh hình v sau:
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
18
Sau đó chúng ta ch vi c đánh tên c a database và click OK.
Ngoài ra đôi khi chúng ta c ng dùng SQL script đ t o m t database. Khi đó ta
ph i ch rõ v trí c a primary data file và transaction log file.
Ví d :
USE master
GO
CREATE DATABASE Products
ON
( NAME = prods_dat,
FILENAME = 'c:\program files\microsoft SQL
server\mssql\data\prods.mdf',
SIZE = 4,
MAXSIZE = 10,
FILEGROWTH = 1
)
GO
Trong ví d trên ta t o m t database tên là Products v i logical file name là
prods_dat và physical file name là prods.mdf, kích th c ban đ u là 4 MB và
data file s t đ ng t ng lên m i l n 1 MB cho t i t i đa là 10 MB. N u ta không
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
ch đ nh m t transaction log file thì SQL s t
th c ban đ u là 1 MB.
19
đ ng t o ra 1 log file v i kích
L u Ý:
Khi t o ra m t database chúng ta c ng ph i l u ý m t s đi m sau: Ð i v i các
h th ng nh mà đó v n đ t c đ c a server không thu c lo i nh y c m thì
chúng ta th ng ch n các giá tr m c đ nh (default) cho Initial size,
Automatically growth file. Nh ng trên m t s production server c a các h
th ng l n kích th c c a database ph i đ c ng i DBA
c l ng tr c tùy
theo t m c c a business, và thông th ng ng i ta không ch n Autogrowth(t
đ ng t ng tr ng) và Autoshrink(t đ ng nén). Câu h i đ c đ t ra đây là vì
sao ta khơng đ SQL Server ch n m t giá tr kh i đ u cho datafile và sau đó khi
c n thì nó s t đ ng n i r ng ra mà l i ph i
c l ng tr c? Nguyên nhân là
n u ch n Autogrowth (hay Autoshrink) thì chúng ta có th s g p 2 v n đ sau:
•
Performance hit: nh h ng đáng k đ n kh n ng làm vi c c a
SQL Server. Do nó ph i th ng xuyên ki m tra xem có đ kho ng
tr ng c n thi t hay không và n u khơng đ nó s ph i m r ng
b ng cách dành thêm kho ng tr ng t d a c ng và chính q trình
này s làm ch m đi ho t đ ng c a SQL Server.
•
Disk fragmentation : Vi c m r ng trên c ng s làm cho data
không đ c liên t c mà ch a nhi u n i khác nhau trong d a c ng
đi u này c ng gây nh h ng lên t c đ làm vi c c a SQL Server.
Trong các h th ng l n ng i ta có th d đốn tr c kích th c c a database
b ng cách tính tốn kích th c c a các tables, đây c ng ch là kích th c
c
đốn mà thơi (xin xem "Estimating the size of a database" trong SQL Books
Online đ bi t thêm v cách tính) và sau đó th ng xun dùng m t s câu l nh
SQL (th ng dùng các câu l nh b t đ u b ng DBCC .Ph n này s đ c bàn qua
trong các bài sau) ki m tra xem có đ kho ng tr ng hay khơng n u khơng đ ta
có th ch n m t th i đi m mà SQL server ít b n r n nh t (nh ban đêm hay sau
gi làm vi c) đ n i r ng data file nh th s không làm nh h ng t i
performance c a Server.
Chú ý gi s ta dành s n 2 GB cho datafile, khi dùng Window Explorer đ xem ta
s th y kích th c c a file là 2 GB nh ng data th c t có th ch chi m vài ch c
MB mà thôi.
Nh ng Ði m C n L u Ý Khi Thi t K M t Database
Trong ph m vi bài này chúng ta khơng th nói sâu v lý thuy t thi t k database
mà ch đ a ra m t vài l i khuyên mà b n nên tuân theo khi thi t k .
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
20
Tr c h t b n ph i n m v ng v các lo i data type. Ví d b n ph i bi t rõ s
khác bi t gi a char(10), nchar(10) varchar(10), nvarchar(10). Lo i d li u
Char là m t lo i string có kích th c c đ nh ngh a là trong ví d trên n u data
đ a vào "This is a really long character string" (l n h n 10 ký t ) thì SQL Server
s t đ ng c t ph n đi và ta ch cịn "This is a". T ng t n u string đ a vào
nh h n 10 thì SQL s thêm kho ng tr ng vào phía sau cho đ 10 ký t . Ng c
l i lo i varchar s không thêm các kho ng tr ng phía sau khi string đ a vào ít
h n 10. Cịn lo i data b t đ u b ng ch n ch a d li u d ng unicode.
M t l u ý khác là trong SQL Server ta có các lo i Integer nh : tinyint,
smallint, int, bigint. Trong đó kích th c t ng lo i t ng ng là 1,2,4,8 bytes.
Ngh a là lo i smallint t ng đ ng v i Integer và lo i int t ng đ ng v i
Long trong VB.
Khi thi t k table nên:
•
•
Có ít nh t m t c t thu c lo i ID dùng đ xác đ nh m t record d
dàng.
Ch ch a data c a m t entity (m t th c th )
Trong ví d sau thơng tin v Sách và Nhà Xu t B n đ
cùng m t table
c ch a trong
Books
BookID Title
Publisher
PubState
PubCity
PubCountry
1
Inside SQL Server 2000 Microsoft Press
CA
Berkely
USA
2
Windows 2000 Server
MA
Boston
USA
3
Beginning Visual Basic
Wrox
6.0
CA
Berkely
USA
New Riders
Ta nên tách ra thành table Books và table Publisher nh sau:
Books
BookID
Title
PublisherID
1
Inside SQL Server 2000
P1
2
Windows 2000 Server
P2
3
Beginning Visual Basic 6.0
P3
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
21
và
Publishers
PublisherID Publisher
PubState
PubCity
PubCountry
P1
Microsoft Press
CA
Berkely
USA
P2
New Riders
MA
Boston
USA
P3
Wrox
CA
Berkely
USA
•
•
Tránh dùng c t có ch a NULL và nên ln có giá tr Default cho
các c t
Tránh l p l i m t giá tr hay c t nào đó
Ví d m t cu n sách có th đ c vi t b i h n m t tác gi và nh th ta
có th dùng m t trong 2 cách sau đ ch a data:
Books
BookID
Title
Authors
1
Inside SQL Server 2000
John Brown
2
Windows 2000 Server
Matthew Bortniker, Rick Johnson
3
Beginning Visual Basic 6.0
Peter Wright, James Moon, John
Brown
hay
Books
BookID Title
Author1
1
Inside SQL Server 2000 John Brown
2
Windows 2000 Server
3
Beginning Visual Basic
Peter Wright
6.0
Matthew
Bortniker
Author2
Author3
Null
Null
Rick Johnson
Null
James Moon
John Brown
Tuy nhiên vi c l p đi l p l i c t Author s t o nhi u v n đ sau này.
Ch ng h n nh n u cu n sách có nhi u h n 3 tác gi thì chúng ta s g p phi n
ph c ngay....Trong ví d này ta nên ch t ra thành 3 table nh sau:
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
22
Books
BookID
Title
1
Inside SQL Server 2000
2
Windows 2000 Server
3
Beginning Visual Basic 6.0
Authors
AuthID
First Name
Last Name
A1
John
Brown
A2
Matthew
Bortniker
A3
Rick
Johnson
A4
Peter
Wright
A5
James
Moon
AuthorBook
BookID
AuthID
1
A1
2
A2
2
A3
3
A4
3
A5
3
A1
Ngoài ra m t trong nh ng đi u quan tr ng là ph i bi t rõ quan h
(Relationship) gi a các table:
•
One-to-One Relationships : trong m i quan h này thì m t
hàng bên table A không th liên k t v i h n 1 hàng bên table B và
ng c l i.
•
One-to-Many Relationships : trong m i quan h này thì m t
hàng bên table A có th liên k t v i nhi u hàng bên table B.
•
Many-to-Many Relationships : trong m i quan h này thì m t
hàng bên table A có th liên k t v i nhi u hàng bên table B và m t
hàng bên table B c ng có th liên k t v i nhi u hàng bên table A.
Nh ta th y trong ví d trên m t cu n sách có th đ c vi t b i
nhi u tác gi và m t tác gi c ng có th vi t nhi u cu n sách. Do
đó m i quan h gi a Books và Authors là quan h Many to Many.
Trong tr ng h p này ng i ta th ng dùng m t table trung gian
đ gi i quy t v n đ (table AuthorBook).
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
23
Ð có m t database t ng đ i hoàn h o ngh a là thi t k sao cho data ch a
trong database không th a không thi u b n c n bi t thêm v các th thu t
Normalization. Tuy nhiên trong ph m vi khóa h c này chúng tơi khơng mu n
bàn sâu h n v đ tài này, b n có th xem thêm trong các sách d y lý thuy t c
s d li u.
Tóm l i trong bài này chúng ta đã tìm hi u v c u trúc c a m t SQL Server
database và m t s v n đ c n bi t khi thi t k m t database. Trong bài sau
chúng ta s bàn v Backup và Restore database nh th nào.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
24
Backup And Restore SQL Server
Chi n L
c Ph c H i D Li u (Data Restoration Strategy)
Có m t đi u mà chúng ta ph i chú ý là h u nh b t k database nào c ng c n
đ c ph c h i vào m t lúc nào đó trong su t chu k s ng c a nó. Là m t ng i
Database Administrator b n c n ph i gi m t i đa s l n ph i ph c h i d li u,
luôn theo dõi, ki m tra th ng xuyên đ phát hi n các tr c tr c tr c khi nó x y
ra. Ph i d phịng các bi n c có th x y ra và b o đ m r ng có th nhanh
chóng ph c h i d li u trong th i gian s m nh t có th đ c.
Các d ng bi n c hay tai h a có th x y ra là:
•
Ð a ch a data file hay Transaction Log File hay system file b m t
•
Server b h h ng
•
Nh ng th m h a t nhiên nh bão l t, đ ng đ t, h a ho n
•
Tồn b server b đánh c p ho c phá h y
•
Các thi t b dùng đ backup - restore b đánh c p hay h h ng
•
Nh ng l i do vô ý c a user nh
h n
•
Nh ng hành vi mang tính phá ho i c a nhân viên nh c ý đ a vào
nh ng thơng tin sai l c.
•
B hack (n u server có k t n i v i internet).
l tay delete toàn b table ch ng
B n ph i t h i khi các v n đ trên x y ra thì b n s làm gì và ph i ln có bi n
pháp đ phòng c th cho t ng tr ng h p c th . Ngoài ra b n ph i xác đ nh
th i gian t i thi u c n ph c h i d li u và đ a server tr l i ho t đ ng bình
th ng.
Các Lo i Backup
Ð có th hi u các ki u ph c h i d
backup trong SQL Server
•
li u khác nhau b n ph i bi t qua các lo i
Full Database Backups : Copy t t c data files trong m t
database . T t c nh ng user data và database objects nh system
tables, indexes, user-defined tables đ u đ c backup.
CuuDuongThanCong.com
/>
H C SQL SERVER 2000
25
•
Differential Database Backups : Copy nh ng thay đ i trong t t
c data files k t l n full backup g n nh t.
•
File or File Group Backups : Copy m t data file đ n hay m t file
group.
•
Differential File or File Group Backups : T ng t nh
differential database backup nh ng ch copy nh ng thay đ i trong
data file đ n hay m t file group.
•
Transaction Log Backups : Ghi nh n m t cách th t t t c các
transactions ch a trong transaction log file k t l n transaction log
backup g n nh t. Lo i backup này cho phép ta ph c h i d li u tr
ng c l i vào m t th i đi m nào đó trong quá kh mà v n đ m
b o tính đ ng nh t (consistent).
Trong lúc backup SQL Server c ng copy t t c các ho t đ ng c a database k c
ho t đ ng x y ra trong quá trình backup cho nên ta có th backup trong khi SQL
đang ch y mà khơng c n ph i ng ng l i.
Recovery Models
•
Full Recovery Model : Ðây là model cho phép ph c h i d li u
v i ít r i ro nh t. N u m t database trong mode này thì t t c
các ho t đ ng khơng ch insert, update, delete mà k c insert
b ng Bulk Insert, hay bcp đ u đ c log vào transaction log file.
Khi có s c thì ta có th ph c h i l i d li u ng c tr l i t i m t
th i đi m trong quá kh . Khi data file b h n u ta có th backup
đ c transaction log file thì ta có th ph c h i database đ n th i
đi m transaction g n nh t đ c commited.
•
Bulk-Logged Recovery Model :
mode này các ho t đ ng
mang tính hàng lo t nh Bulk Insert, bcp, Create Index, WriteText,
UpdateText ch đ c log minimum vào transaction log file đ đ
cho bi t là các ho t đ ng này có di n ra mà khơng log tồn b chi
ti t nh trong Full Recovery Mode. Các ho t đ ng khác nh Insert,
Update, Delete v n đ c log đ y đ đ dùng cho vi c ph c h i sau
này.
•
Simple Recovery Model :
mode này thì Transaction Log File
đ c truncate th ng xuyên và không c n backup. V i mode này
b n ch có th ph c h i t i th i đi m backup g n nh t mà không
th ph c h i t i m t th i đi m trong quá kh .
Mu n bi t database c a b n đang mode nào b n có th Right-click lên m t
database nào đó trong SQL Server Enterprise Manager ch n Properties>Options->Recovery
CuuDuongThanCong.com
/>