Sunteți pe pagina 1din 5

1.

Ñieàu kieän phaân taùn : coù dòch vuï SQL Server Agent
2. Phaân taùn cô sôû döõ lieäu coù 3 böôùc:
- Caáu hình caùc server :
+ Publisher : chöùa baûn cô sôû döõ lieäu goác
+ Distributor : ñieàu phoái caùc maûnh phaân taùn
+ Subscriber : chöùa cô sôû döõ lieäu sau khi phaân taùn
- Ñònh nghóa publication : 1 container chöùa caùc article
(table, view, store procedure)
- Ñònh nghóa subscription (database): 1 container nhaän
publication
3. Caùc phöông phaùp phaân maûnh : phaân maûnh ngang
(Horizontal), phaân maûnh doïc (Vertical), phaân maûnh hoãn
hôïp.
Trong phaân maûnh ngang : nguyeân thuûy, daãn xuaát
Ví duï: Giaû söû ta muoán phaân taùn cô sôû döõ lieäu QLDSV
theo khoa thì neáu:
KHOA : MAKH=’CNTT’  Khoa laø phaân maûnh ngang nguyeân
thuûy
LOP : MAKH=’CNTT’  LOP laø phaân maûnh ngang nguyeân
thuûy
LOP.MAKH = KHOA.MAKH  LOP laø phaân maûnh
ngang daãn xuaát
4. Caùc quy taéc phaân maûnh: (trang 3 ) quaù trình phaân taùn
phaûi thoûa caùc qui taéc sau: tính ñaày ñuû, tính taùi thieát,
tính taùch bieät

Ví duï: Giaû söû ta muoán phaân taùn cô sôû döõ lieäu QLDSV
theo 2 khoa (CNTT, VT) töø Server LUUTHU ñeán 2 Server
LUUTHU\SUSU (chöùa thoâng tin khoa CNTT) vaø Server
LUUTHU\TINTIN (chöùa thoâng tin khoa VT)

5. Taïo Link Server:


- Muïc ñích: cho pheùp truy caäp döõ lieäu töø server 1 ñeán
Server 2 qua taäp leänh DML
- Cuù phaùp : Giaû söû ta ñang ñöùng ôû Server
LUUTHU\TINTIN, ta muoán taïo 1 link server teân LINK2
ñeán Server LUUTHU\SUSU
EXEC sp_addlinkedserver @server='LINK2', @srvproduct=' ',
@provider='SQLOLEDB', @datasrc='LUUTHU\SUSU'
Ví duï aùp duïng: Söû duïng link server vöøa taïo ñeå in ra danh
saùch lôùp cuûa khoa vieãn thoâng ñang ñaët ôû Server
LUUTHU\SUSU
Select * from LINK2.QLDSV.DBO.LOP

6. Quy taéc ñeå giuùp cho caùc caâu leänh phaân taùn ñöôïc “trong
suoát”:
- Trong suoát : nghóa laø 1 SP khi ta cho thöïc thi ôû Server 1 thì
vaãn thöïc thi ñöôïc ôû taát caû caùc Server coøn laïi maø ta
khoâng caàn chæ laïi ñöôøng ñaãn ñeán table caàn truy xuaát.
- Quy taéc :
a. Teân caùc cô sôû döõ lieäu ôû caùc Server Subscriber phaûi
gioáng nhau
b. Taïo Link theo quy taéc voøng troøn :
+ Link1 : link ngay ñeán chính noù
+ Link2: link ñeán Server gaàn noù nhaát
+ Link3 : link ñeán Server gaàn keá nhaát

7. Leänh Select … Union : laáy döõ lieäu töø caùc server veà
Ví duï: Vieát 1 SP teân DS_LOP sao cho khi chaïy SP naøy treân 1
server baát kyø , noù ñeàu hieån thò danh saùch lôùp cuûa
tröôøng

CREATE PROCEDURE DS_LOP AS


SELECT MALOP, TENLOP FROM LINK1.QLDSV.DBO.LOP
UNION
SELECT MALOP, TENLOP FROM LINK2.QLDSV.DBO.LOP

8. Tìm kieám döõ lieäu treân cô sôû döõ lieäu phaân taùn:
Ví duï: haõy in ra teân lôùp vaø teân khoa cuûa 1 sv coù maõ soá laø
@X. (SP coù teân TimSV)

create procedure TimSV


@X char(10)
AS
if exists(select masv from link1.qldsv.dbo.sinhvien where masv
=@X)
select tenlop, tenkh
from link1.qldsv.dbo.khoa KH, link1.qldsv.dbo.lop L,
link1.qldsv.dbo.Sinhvien SV
where KH.MAKH=L.MAKH and L.MALOP=SV.MALOP
and SV.MASV=@X
else
if exists(select masv from link2.qldsv.dbo.sinhvien where masv
=@X)
select tenlop, tenkh
from link2.qldsv.dbo.khoa KH, link2.qldsv.dbo.lop L,
link2.qldsv.dbo.Sinhvien SV
where KH.MAKH=L.MAKH and L.MALOP=SV.MALOP
and SV.MASV=@X
else
print 'Ma sinh vien ban tim khong co'

exec TimSV 'ABC'


9. Vieát 1 SP cho pheùp söûa hoï cuûa 1 sv coù maõ sinh vieân
laø @X, bieát raèng ta chöa roõ sv naøy thuoäc khoa naøo ?
create procedure Update_Hosv
@X char(10), @ho varchar(40)
AS
if exists(select masv from link1.qldsv.dbo.sinhvien where
masv =@X)
Update link1.qldsv.dbo.sinhvien
set Ho= @ho
where masv=@X
else
if exists(select masv from link2.qldsv.dbo.sinhvien where
masv =@X)
Update link2.qldsv.dbo.sinhvien
set Ho= @ho
where masv=@X
else
print 'Ma sinh vien ban tim khong co'
exec update_hosv '96v10002', 'Nguyen van'

- Vieát 1 SP ñeå xoùa 1 sv coù maõ soá @X


create procedure Delete_Masv
@X char(8)
AS
if exists(select masv from link1.qlsv.dbo.sinhvien where
masv =@X)
Delete from link1.qlsv.dbo.sinhvien
where masv=@X
else
if exists(select masv from link2.qlsv.dbo.sinhvien where
masv =@X)
Delete from link2.qlsv.dbo.sinhvien
where masv=@X
else
print 'Ma sinh vien ban tim khong co'

GO
- Vieát 1 SP ñeå chuyeån 1 sv coù maõ soá @X töø lôùp
coù maõ @malop1 sang lôùp coù maõ @malop2
create procedure ChuyenLop
@X char(8), @ML1 char(8), @ML2 char(8)
AS
if exists(select masv from link1.qlsv.dbo.sinhvien
where masv =@X and malop =@ML1)
if exists(select malop from link1.qlsv.dbo.Lop where
malop =@ML2)
Update link1.qlsv.dbo.sinhvien
set malop=@ML2
where masv=@X
else
Print 'Ma lop' + @ML2 + 'khong co trong danh sach lop
cua khoa'
else
if exists(select masv from link2.qlsv.dbo.sinhvien
where masv =@X and malop =@ML1)
if exists(select malop from link2.qlsv.dbo.Lop where malop
=@ML2)
Update link2.qlsv.dbo.sinhvien
set malop=@ML2
where masv=@X
else
Print 'Ma lop' + @ML2 + 'khong co trong danh sach lop
cua khoa'
else
print 'Error...'

S-ar putea să vă placă și