You are on page 1of 10

BÀI TẬP QUẢN TRỊ CƠ SỞ DỮ LIỆU

BÀI TẬP 02: QUẢN LÝ BÁN HÀNG

1. VIEW
2. THỦ TỤC
3. HÀM

----Sua lai cac hoa don HD008,HD009,HD010 lap nam 2011. Tinh lai doanh thu

4. TRIGGER
5. SAO LƯU VÀ PHỤC HỒI

Kịch bản (script) mô tả Backup trong SQL Server:

--Tại thời điểm t1, giả sử lúc 2h, sao lưu theo kiểu Full Backup va ghi đè lên tập tin sao lưu kiểu
này (backup file - .bak) nếu có.
--Tại thời điểm t2, giả sử lúc 6h, sao lưu theo kiểu Differential Backup va ghi de len tập tin sao lưu
kiểu này (.bak) nếu có.
-- Tại thời điểm t3, giả sử lúc 6h:5phút , sao lưu theo kiểu Transaction Log Backup va ghi dè lên
tập tin sao lưu kiểu này (.bak) nếu có.
--Tại thời điểm t4, giả sử lúc 6h:25phút, sao lưu theo kiểu Transaction Log Backup va cho phép
chèn thêm nội dung vào tập tin tập tin sao lưu kiểu này (không ghi dè lên backup file)
Hướng dẫn

--Tạo CSDL ATM


--Mở CSDL ATM
--Tạo bảng ACCOUNT(ACCNO, DATE, PIN, BALANCE) (SoTK, NgayTao, MaPin, SoDu)
--Thêm một số mẫu tin mới:
'TK001','2016-04-28','1345',700)
'TK002','2016-04-29','2345',500)
-- Sao lưu CSDL
--Bước 1: Tại thời điểm t1, giả sử lúc 2h, sao lưu theo kiểu Full Backup va ghi đè lên tập tin sao lưu
(backup file) kiểu này (.bak) nếu có.

--Thêm mẫu tin mới: ('TK003', '2016-04-29','3456',500)

--Bước 2: Tại thời điểm t2, giả sử lúc 6h, sao lưu theo kiểu Differential Backup va ghi de len tập tin
sao lưu kiểu này (.bak) nếu có.

--Thêm mẫu tin mới: ('TK003', '2016-05-09','4567',600)

--Bước 3: Tại thời điểm t3, giả sử lúc 6h:5phút , sao lưu theo kiểu Transaction Log Backup va ghi
de len tập tin sao lưu kiểu này (.bak) nếu có

--Thêm mẫu tin mới: ('TK004', '2016-05-19','5678',900)

--Bước 4: Tại thời điểm t4, giả sử lúc 6h:25phút, sao lưu theo kiểu Transaction Log Backup va cho
phép chèn thêm vào tập tin tập tin sao lưu kiểu này (không ghi dè lên backup file)
-- Phục hồi CSDL
--Giả sử sau đó xảy ra sự cố (database ATM bị xóa):

-- Bước 1: Khôi phục từ bản full backup.tham số WITH NORECOVERY để sau mỗi lệnh
RESTORE sẽ đặt database ở chế độ chờ tiếp nhận thêm các bản backup tiếp theo (lúc đó database
chưa cho phép query. Lệnh RESTORE cuối cùng không dùng lựa chọn này để chỉ ra rằng việc khôi
phục đã xong

-- Bước 2: Khôi phục từ bản differential backup

-- Bước 3: Khôi phục từ các bản transaction log backup theo trình tự thời gian.

-- Kiểm tra lại sau khi đã Restore

GỢI Ý:
--Tao CSDL ATM
Create DataBase ATM
--Mo CSDL de dung
Use ATM
--Tao bang ACCOUNT
create table ACCOUNT
(
ACCNO varchar(5),
ACCDATE date not null,
PIN varchar (6) not null,
BALANCE int not null
)
--Thêm một số mẫu tin mới:
'TK001','2016-04-28','1345',700)
'TK002','2016-04-29','2345',500)
...
--KỊCH BẢN SAO LƯU CSDL (BACKUP DATABASE)

--Bước 1: Tại thời điểm t1, giả sử lúc 2h, sao lưu theo kiểu Full Backup va ghi đè lên tập tin sao lưu
(backup file) nếu có:
Backup Database ATM to disk='D:\ BAITAP\HEQTCSDL\Data\ATM_FullBackup.bak' With INIT
--Thêm mẫu tin mới
INSERT INTO ACCOUNTS(ACCNO,DATE,PIN,BALANCE)VALUES('TK002', '2016-04-
29','3456',500)
--Bước 2: Tại thời điểm t2, giả sử lúc 6h, sao lưu theo kiểu Differential Backup và ghi đè lên tập tin
sao lưu nếu có:
Backup Database ATM to disk='D:\ BAITAP\HEQTCSDL\Data\ATM_DifferentialBackup.bak'
With INIT, DIFFERENTIAL
--Thêm mẫu tin mới
INSERT INTO ACCOUNTS(ACCNO,DATE, PIN,BALANCE)VALUES('TK003', '2016-05-
09','4567',600)
--Bước 3: Tại thời điểm t3, giả sử lúc 6h:5phút , sao lưu theo kiểu Transaction Log Backup và ghi
đè lên tập tin sao lưu nếu có:
Backup Log ATM to disk='D:\ BAITAP\HEQTCSDL\Data\ATM_TransactionLogBackup.bak'
With INIT
--Thêm mẫu tin mới
INSERT INTO ACCOUNTS(ACCNO,DATE, PIN,BALANCE)VALUES('TK004', '2016-05-
19','5678',900)
--Bước 4: Tại thời điểm t4, giả sử lúc 6h:25phút, sao lưu theo kiểu Transaction Log Backup va cho
phep them vao tap tin Transaction Log Backup nay (không ghi đè lên backup file)
Backup Log ATM to disk='D:\ BAITAP\HEQTCSDL\Data\ATM_TransactionLogBackup.bak'
--KỊCH BẢN PHỤC HỔI DATABASE

--Giả sử sau đó xảy ra sự cố (database ATM bị xóa):


USE MASTER
DROP DATABASE ATM --Xoa CSDL
-- Bước 1: Khôi phục từ bản full backup.tham số WITH NORECOVERY để sau mỗi lệnh
RESTORE sẽ đặt database ở chế độ chờ tiếp nhận thêm các bản backup tiếp theo (lúc đó database
chưa cho phép query. Lệnh RESTORE cuối cùng không dùng lựa chọn này để chỉ ra rằng việc khôi
phục đã xong
RESTORE DATABASE ATM FROM DISK = 'D:\BAITAP\HEQTCSDL\Data\ATM_FullBackup.BAK'
WITH NORECOVERY
-- Bước 2: Khôi phục từ bản differential backup
RESTORE DATABASE ATM FROM DISK = 'D:\BAITAP\HEQTCSDL\Data\ATM_DifferentialBackup.bak'
WITH NORECOVERY
-- Bước 3: Khôi phục từ các bản transaction log backup theo trình tự thời gian.
RESTORE DATABASE ATM FROM DISK = 'D:\ BAITAP\HEQTCSDL\Data\ATM_TransactionLogBackup.bak'
WITH FILE =1, NORECOVERY
RESTORE DATABASE ATM FROM DISK =D:\BAITAP\HEQTCSDL\Data\ATM_TransactionLogBackup.bak'
WITH FILE =2
-- Kiểm tra lại sau khi đã Restore
6. QUYỀN HẠN
--Tao cac dang nhap: giamdoc, ... truy cap CSDL: QLSANPHAM_HEQTCSDL
Create login giamdoc with Password='gd', Default_Database=QLSANPHAM_HEQTCSDL
Create login ketoan with Password='kt', Default_Database=QLSANPHAM_HEQTCSDL
Create login nhanvien with Password='nv', Default_Database=QLSANPHAM_HEQTCSDL
--Cach khac:
Execute sp_addlogin giamdoc, 'gd', QLSANPHAM_HEQTCSDL
Execute sp_addlogin ketoan, 'kt', QLSANPHAM_HEQTCSDL
Execute sp_addlogin nhanvien, 'nv', QLSANPHAM_HEQTCSDL

--Tao 3 user co ten: gd, ... tuong ung voi 3 dang nhap: giamdoc, ... da tao
Create User gd for Login giamdoc
Create User kt for Login ketoan
Create User nv for Login giamdoc
--Cach khac:
Execute sp_grantdbaccess giamdoc, 'gd'
Execute sp_grantdbaccess ketoan, 'kt'
Execute sp_grantdbaccess nhanvien, 'nv'

--Tao nhom (role) nguoi dung: role1, … de tien viec phan quyen (tham khao them)
Execute sp_addrole 'role1'
Execute sp_addrole 'role2'

--Dua user vao nhom (tham khao them)


Execute sp_addrolemember role1, gd --dua user co ten gd vao role1
Execute sp_addrolemember role2, kt --dua user kt vao role2
Execute sp_addrolemember role2, nv --dua user nv vao role2

--Phan quyen truy cap cac bang cua CSDL cho nhom role1
Grant select, insert, update, delete, references, alter on LOAISP to role1
Grant select, insert, update, delete, references, alter on SANPHAM to role1
Grant select, insert, update, delete, references, alter on NGUYENLIEU to role1
Grant select, insert, update, delete,references, alter on DONDH to role1
Grant select, insert, update, delete,references, alter on CTDDH to role1
Grant select, insert, update, delete,references, alter on NGUYENLIEU to role1
Grant select, insert, update, delete,references, alter on LAM to role1

Lưu ý: Nếu không tạo nhóm, ta có thể phân quyền trực tiếp cho user.
Ví dụ: Phân quyền trực tiếp cho user gd
Grant select, insert, update, delete, references, alter on LOAISP to gd
Grant select, insert, update, delete, references, alter on SANPHAM to gd

---

You might also like