Tải bản đầy đủ (.pdf) (61 trang)

Tài liệu cơ sở dữ liệu học SQL server 2000

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (906.02 KB, 61 trang )

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



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

/>

×