Ị Ơ Ở Ữ Ệ
Ả
Ệ
Ề PHÂN QUY N TRONG H QU N TR C S D LI U SQL SERVER 2012
Phân quy nề
ử ụ ệ ả ả ị
ị ả ự • S phân chia kh năng qu n tr và s d ng h qu n tr ơ ở ữ ệ c s d li u SQL Server.
ườ
– Ng
ậ i đăng nh p (login)
ườ
– Ng
i dùng (user)
ề
ạ
– Quy n h n (permission)
ề
– Nhóm quy n (role)
ơ ấ • Hình thành theo c c u
• Ng
ườ ỗ i
2
ộ c th hi n là m i m t ng ộ ữ ệ ớ i đăng nh p đ ộ ố ớ ậ ượ ề ể ệ ạ ứ ườ dùng v i m t s quy n h n ng v i m t d li u.
Mô hình
Login
SQL Service
User & Permission & Role
Database
Log in
1
3
2
4
P
R1
R2
SQL Server
3
Đăng nh pậ
exec sp_addlogin
‘tên_login’ , ‘mật_khẩu’ [, ‘dữ_liệu’]
create login tên_login
with
password = ‘mật_khẩu’
[, default_database = dữ_liệu ]
4
ườ ậ ạ • T o ng i đăng nh p
Đăng nh pậ
• Xóa ng
exec sp_droplogin ‘tên_login’
drop login tên_login
ườ ậ i đăng nh p
• Thay đ i ng
alter login
{ [enable | disable] |
with {password = ‘…’|default_database = …}
5
}
ổ ườ ậ i đăng nh p
ườ
Ng
i dùng
exec sp_adduser
‘tên_login’ , ’tên_user’ [ , ‘tên_role’ ]
create user tên_user for tên_login
ườ ữ ệ ạ • T o ng ừ i dùng cho t ng d li u
• Xóa ng
exec sp_dropuser ‘tên_user’
drop user tên_user
6
ườ i dùng
Nhóm quy n ề
• T o nhóm quy n
exec sp_addrole ‘tên_role’
create role tên_user
• Xóa nhóm quy nề
exec sp_droprole ‘tên_role’
drop role tên_role
7
ề ạ
ườ
ề
Ng
i dùng & nhóm quy n
exec sp_addrolemember
‘tên_role’ , ‘tên_user’
• Xóa nhóm quy nề
exec sp_droprolemember
‘tên_role’ , ‘tên_user’
8
ườ ớ ề ắ • G n ng i dùng v i nhóm quy n
ề
ạ
Quy n h n (permission)
ề
ạ
ạ
T o quy n h n
Grant {ALL | permission}
on
table[ (column [,…n])]
to
{ user | role [,… n] }
[with grant option]
ượ
ạ
ề
ườ
with grant option : đ
c phép gán l
i quy n mà mình có cho ng
i khác.
ạ
ề Xóa quy n h n
Revoke [grant option for] {ALL | permission}
on
table[ (column [,…n])]
9
to
{ user | role [,… n] }
[cascade]
ấ ạ
ỏ
ề
ườ
ề ẫ ượ
ử ạ
grant option for : b tính năng c p l
i quy n cho ng
i khác (quy n v n đ
c gi
l
i).
ỏ ấ ả
ề ở
ế ừ
cascade: b t
t c các quy n ( các k th a)
Ví dụ
ậ
Đăng nh p ‘sa’
Exec sp_addlogin ‘u1’, ‘123’
Exec sp_addlogin ‘u2’, ‘123’
Exec sp_adduser ‘u1’, ‘u1’
Exec sp_adduser ‘u2’, ‘u2’
Grant select on sinhvien to u1 with grant option
ệ
(cid:222) u1 có quy n dùng 2 l nh ề
Select * from sinhvien
10
Grant select on sinhvien to u2 [with grant option]
Ví dụ
ậ ớ
Đăng nh p v i ‘u1’
Grant select on sinhvien to u2 with grant option
ậ
(cid:222) V y u2 có quy n select và grant. ề
ậ ớ
Đăng nh p v i ‘sa’
Revoke select on sinhvien to u1 cascade
ế
ở
ả
(cid:222) Xóa h t quy n select và grant ề
u1 và c u2
Revoke grant option for
select on sinhvien to u1 cascade
ề
ở
ở11
ề
(cid:222) Xóa quy n grant
u1 và quy n select và grant
u2
Sao l u ư
Khái ni mệ
ư ệ
Sao l u là công vi c sao chép thông tin c a ể ủ ơ ư ấ ị ộ ờ
ữ database vào m t th i đi m nh t đ nh vào n i l u tr khác.
ề V n đấ
– Có th t s có nhu c u c n sao l u d li u.
ư ữ ệ ầ ầ ậ ự
– Chi n l
ế ượ ư ữ ệ c sao l u d li u.
12
ụ ồ ữ ệ – Cách ph c h i d li u
ầ
Sao l uư (Phân lo i)ạ ư Sao l u toàn ph n
ẽ ượ ộ ạ ể ờ Toàn b database s đ c ghi l i vào th i đi m sao
l u.ư
ư ộ ầ Sao l u m t ph n
ỉ ữ ầ ờ
ổ ủ Ch nh ng ph n thay đ i c a database so v i th i ư ớ ấ ể ầ ầ đi m mà database đã sao l u toàn ph n g n nh t.
ư ế ủ ư ả Sao l u b ng l u v t c a giao tác (transaction log)
ượ ạ Sao l u v t c a các giao tác đang đ ự c th c thi t i
13
ư ể ờ ư ế ủ th i đi m sao l u.
ư ữ ệ ả
Sao l u các b ng sao trong d li u phân tán (duplicate data)
Sao l uư (Cú pháp l nh)ệ
BACKUP DATABASE tendb
TO
[ WITH {DIFFERENTIAL |
ư
ư
ầ
ặ
ộ
ầ DIFFERENTIAL : Sao l u m t ph n, m c nhiên là sao l u toàn ph n.
ư
ả
DESCRIPTION = ghichu (ghi chú b ng l u)
ư
ả
NAME = ten (ghi tên b ng l u)
ư
ậ
ẩ
ả
PASSWORD = matkhau (ghi m t kh u b ng l u)
14 ế ạ ủ ả
ư
ư
ể
ố RETAINDAYS = songay (ghi s ngày h t h n c a b ng l u tính ừ ờ t
th i đi m sao l u)
ố ủ ả
ư
ạ
EXPIREDATE = ngay (h n cu i c a b ng sao l u)
ừ
STOP_ON_ERROR | CONTINUE_AFTER_ERROR (ng ng khi
ặ ỗ
ượ ạ
g p l
i và ng
c l
i)
ể ệ
ư
ầ
STATS = số (ph n trăm th hi n trong quá trình sao l u)
Sao l uư (Ví d )ụ
ư ầ Sao l u toàn ph n cho database tên là ‘ qlbv’
BACKUP DATABASE qlbv
TO DISK = 'E:\qlbv.bak'
WITH NAME = 'qlbv backup', STATS = 10
ư ộ ầ Sao l u m t ph n cho database tên là ‘qlbv’
BACKUP DATABASE qlbv
15
TO DISK = 'E:\qlbv.bak'
WITH DIFFERENTIAL, NAME = 'qlbv backup 1 phan', STATS = 10
ụ
ồ Ph c h i (Cú pháp l nh)ệ
RESTORE DATABASE tendb_moi
FROM
STOP_ON_ERROR|CONTINUE_AFTER_ERROR
ừ
(ng ng khi g p l
ượ ạ c l
i và ng
i)
ặ ỗ FILE = { tên | số thứ tự }
ư ượ
ỉ ả
ụ ồ
ư
ậ
(Ch b ng sao l u đ
c ph c h i trong t p tin sao l u)
ư
ẩ
ả
ậ
PASSWORD = matkhau (ghi m t kh u b ng l u)
RECOVERY | NORECOVERY
16
ụ ồ
ứ
ấ
(Ch m d t quá trình ph c h i)
Recovery
ứ
ư
ế
ệ
ấ
(Ch a ch m d t, và cho phép ti p các l nh
NoRecovery
ụ ồ ế
ọ ệ
ẽ
ế
ạ
ph c h i k , và quá trình s có tr ng thái Recovery n u m i l nh
ụ ồ
ph c h i hoàn thành)
ỉ ượ
ư
ầ
ụ ồ ề
ụ ồ
Sao l u 1 ph n ch đ
c ph c h i li n sau quá trình ph c h i toàn
ố
ớ
ầ
ph n (v i tham s norecovery)
ồ ụ Ph c h i (Ví d )ụ
ụ ồ ừ ậ Ph c h i t t p tin ‘qlbv.bak’ thành database tên là ‘ qlbv’.
RESTORE DATABASE qlbv
FROM DISK = 'E:\qlbv.bak'
WITH FILE = 1, NORECOVERY, STATS=10;
RESTORE DATABASE qlbv
FROM DISK = ‘E:\qlbv.bak'
17
WITH FILE = 2, RECOVERY, STATS=10
ư
ụ
ồ Sao l u và ph c h i (Attach & detach)
ử ậ c l u tr thành t p tin có đuôi là
ượ ư ớ ậ ệ .mdf và các c l u v i t p tin
ữ ệ ượ ư D li u đ ế ư v t l u quá trình làm vi c, giao tác đ có đuôi là .ldf .
ư ậ ữ ạ l i các t p tin đó (quan
ộ ọ ể M t cách khác đ sao l u là ta gi tr ng là .mdf)
ể ấ ượ ậ
ể ệ ớ ữ ằ ệ Đ có th l y đ vi c v i database đó n a b ng l nh ả c t p tin .mdf ta ph i không còn làm sp_detach_db.
ể ể ạ ậ ộ i t p tin .mdf vào SQL Server thành m t
18
Đ có th gán l database thì ta dùng l nh ệ sp_attach_db.
ệ
ụ
L nh & ví d
sp_detach_db ‘tên_database’
sp_attach_db ‘tên_database’ ,
‘đường_dẫn_và_tên_tập_tin_mdf’,
‘đường_dẫn_và_tên_tập_tin_ldf’
sp_attach_db 'qlbv' ,
19
'E:\quanlybenhvien.mdf',
'E:\quanlybenhvien_log.ldf‘
sp_detach_db 'qlbv'
ữ ệ
ạ Sinh mã t o d li u
20
ứ Ch c năng Generate Scripts