Mục Tiêu

(cid:1) Khái niệm an toàn dữ liệu. (cid:1) Các loại sự cố. (cid:1) Sao lưu và phục hồi dữ liệu. (cid:1) Cài ñặt trên SQL Server. Cài ñặt trên SQL Server.

DBMS03 – Slides 2

Phân quyền truy cập

An Toàn Dữ Liệu

(cid:1) Các cơ chế an toàn dữ liệu:

(cid:1) Tạo bảng ảo View (cid:1) Cấp phát quyền cho người dùng: Dùng

(cid:1) Mã hóa dữ liệu (cid:1) Phân quyền truy cập

lệnh grant và revoke GRANT Update ON Product TO Smith (cid:1) GRANT Update ON Product TO Smith (cid:1) Cấp quyền sửa trên bảng Product cho user Smith

(cid:1) REVOKE Update ON Product TO Smith

(cid:1) Bỏ quyền sửa trên bảng Product của user Smith

(cid:1) Tạo user truy cập CSDL với quyền giới

hạn (cid:1) Xem hướng dẫn demo SQLSecurity Demo.rar

DBMS03 – Slides 3 DBMS03 – Slides 4

GRANT

GRANT (tt)

(cid:1) Cho phép người dùng có thể thực thi một số

câu lệnh trên CSDL hiện tại.

(cid:1) Quyền trên ñối tượng: GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] } {

(cid:1) Quyền trên câu lệnh: GRANT {ALL | statement [,..n]} TO GRANT {ALL | statement [,..n]} TO security_account[,..n]

[ ( column [ ,...n ] ) ] ON { table| view } | ON { table view } [ ( column [ ,...n ] ) ] | ON { table view } [ ( column [ ,...n ] ) ] | ON { stored_procedure| extended_procedure } | ON { user_defined_function}

(cid:1) Statement: câu lệnh ñược phép thực thi, là một trong các câu lệnh CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE, BACKUP LOG. (cid:1) Security_account: tài khoản (user) mà các quyền

} TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role }]

này ñược phép áp dụng.

DBMS03 – Slides 5 DBMS03 – Slides 6

GRANT (tt)

GRANT (tt)

(cid:1) Permission: Nếu ñối tượng là Table, View thì permission là SELECT, INSERT, DELETE, UPDATE, REFERENCES. Nếu ñối tượng là Stored Procedure thì permission là EXCUTE.

(cid:1) Ví dụ 1: GRANT CREATE DATABASE, CREATE

TABLE TO user1, user2

(cid:1) WITH GRANT OPTION: lựa chọn này cho phép tài khoản này ñược lấy các quyền trên các ñối tượng như vậy cho các tài khoản khác. khoản khác.

(cid:1) Ví dụ 2: Cấp phát quyền thực thi select (cid:1) Ví dụ 2: Cấp phát quyền thực thi select

trên bảng authors cho public

(cid:1) AS {group|role}: tên tài khoản trong CSDL hiện tại có quyền thực thi câu lệnh GRANT. Dùng lựa chọn này khi cần cấp phát quyền cho một nhóm người dùng và một người dùng không thuộc nhóm.

GRANT SELECT ON authors TO public

-- public role

(cid:1) Một số câu lệnh không yêu cầu cấp phát quyền thực thi: BEGIN TRANSACTION, COMMIT TRANSACTION, PRINT, RAISERROR, ROLLBACK TRANSACTION, SAVE TRANSACTION, SET

DBMS03 – Slides 7 DBMS03 – Slides 8

REVOKE

REVOKE (tt)

(cid:1) Loại bỏ quyền vừa cấp phát, hoặc ñã bị từ chối cho

(cid:1) Ví dụ: Bỏ quyền tạo bảng của user1

một người dùng trong CSDL hiện tại.

REVOKE CREATE TABLE FROM user1;

REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] REVOKE [ GRANT OPTION FOR ]

{ ALL [ PRIVILEGES ] | permission [ ,...n ] } { ALL [ PRIVILEGES ] | permission [ ,...n ] } {

[ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function }

} { TO | FROM } security_account [ ,...n ]

[ CASCADE ] [ AS { group | role } ] DBMS03 – Slides 9 DBMS03 – Slides 10

Bảng Ảo View

ROLE – Vai trò

• View là bảng ảo giúp giới hạn truy cập một số cột

1. Thêm vai trò:

dòng trên các bảng dữ liệu.

(cid:1) Vai trò (role) là một kiểu người dùng trong CSDL với

• Views ñảm bảo tính bảo mật bằng các giới hạn truy

các quyền ñược cấp phát giống nhau. (cid:1) sp_addrole [ @rolename= ] 'role' [ , [

@ownername = ] 'owner' ] @ownername = ] 'owner' ]

trong ñó owner là tên chủ sở hữu của vai trò mới.

Specific rows of a table Specific rows of a table

(cid:1) Ví dụ: EXEC sp_addrole 'Managers'

Specific columns of a table

Specific rows and columns of a table

cập sau: • • • • •

2. Xóa ñi một vai trò:

(cid:1) sp_droprole [ @rolename = ] 'role‘ (cid:1) Ví dụ: EXEC sp_droprole 'Managers'

• Cú Pháp tạo View: CREATE VIEW ViewName

AS

The rows fetched using joins

SELECT Col1, Col2 FROM Table1 WHERE Col = …

DBMS03 – Slides 11 DBMS03 – Slides 12

Bảng Ảo View

Bảng Ảo View

Problem statement: Bạn thường xuyên phải thực hiện các

• Thuận lợi của View:

câu truy vấn dạng như sau:

SELECT vFirstName, vSkill FROM Employee JOIN PositionSkill ON

Employee.cCurrentPosition = PositionSkill.cPositionCode Employee.cCurrentPosition = PositionSkill.cPositionCode

• Cung cấp dữ liệu cần thiết cho người dùng • Che dấu sự phức tạp của dữ liệu • Tổ chức dữ liệu từ nhiều tài nguyên không • Tổ chức dữ liệu từ nhiều tài nguyên không

JOIN Skill ON

ñồng nhất

PositionSkill.cSkillCode = Skill.cSkillCode

• Giảm kích cỡ của ñối tượng

SELECT vFirstName, vLastName, vSkill FROM Employee JOIN PositionSkill ON

Employee.cCurrentPosition =PositionSkill.cPositionCode

JOIN Skill ON PositionSkill.cSkillCode = Skill.cSkillCode

DBMS03 – Slides 13 DBMS03 – Slides 14

Bảng Ảo View

Bảng Ảo View

SELECT vFirstName, vLastName, vSkill

FROM Employee JOIN PositionSkill ON

Solution • Action:

Employee.cCurrentPosition=PositionSkill.cPositionCode

JOIN Skill ON PositionSkill.cSkillCode =Skill.cSkillCode JOIN Skill ON PositionSkill.cSkillCode =Skill.cSkillCode

WHERE vFirstName = 'Angela‘

• The tables from where the view derives its data are Employee, derives its data are Employee, positionSkill, and Skill

SELECT vFirstName, vLastName, vQualification, vSkill

• The columns that are to be included in the view are vFirstName, vLastName, and vQualification from the Employee table and vSkill from the Skill table

FROM Employee JOIN PositionSkill ON Employee.cCurrentPosition = PositionSkill.cPositionCode JOIN Skill ON PositionSkill.cSkillCode = Skill.cSkillCode

DBMS03 – Slides 15 DBMS03 – Slides 16

Bảng Ảo View

Bảng Ảo View

Solution

Query on View:

• SELECT vFirstName, vSkill FROM

vwEmpSkill

CREATE VIEW vwEmpSkill AS SELECT vFirstName, vLastName, SELECT vFirstName, vLastName,

vQualification, vSkill

• SELECT vFirstName, vLastName, • SELECT vFirstName, vLastName,

FROM Employee JOIN PositionSkill

vSkill FROM vwEmpSkill

ON Employee.cCurrentPosition =

PositionSkill.cPositionCode

JOIN Skill

ON PositionSkill.cSkillCode =

Skill.cSkillCode

DBMS03 – Slides 17 DBMS03 – Slides 18

Bảng Ảo View

Bảng Ảo View

Create the view

Altering, Dropping, and Renaming Views

• A view can be created using the CREATE

• Altering Views

VIEW statement

• You can modify a view by using the ALTER VIEW • You can modify a view by using the ALTER VIEW

• Syntax •

statement

• Syntax

CREATE VIEW view_name

[(column_name [, column_name]...)]

ALTER VIEW view_name [(column_name)]

[WITH ENCRYPTION]

[WITH ENCRYPTION]

AS select_statement

AS select_statement [WITH CHECK OPTION]

[WITH CHECK OPTION]

DBMS03 – Slides 19 DBMS03 – Slides 20

Bảng Ảo View

Hạn chế của View

(cid:1) Không thể chứa mệnh ñề COMPUTE

hoặc COMPUTE BY

Altering, Dropping, and Renaming Views (Contd.)

(cid:1) Không thể chứa mệnh ñề ORDER BY trừ

• Dropping Views

khi có TOP n khi có TOP n

• You can drop a view from a •

database by using the DROP VIEW statement

(cid:1) Không thể chứa mệnh ñề INTO (cid:1) Không thể chứa các table tạm (cid:1) Có tối ña 1024 cột

• Syntax DROP VIEW view_name

DBMS03 – Slides 21 DBMS03 – Slides 22

Bài tập áp dụng

Một số loại sự cố

(cid:1) Sự cố do thực hiện thao tác sai: thêm

xóa sửa dữ liệu không ñúng (cid:1) Trên CSDL thường không thể nhấn Crtl + Z

ñể undo lại một thao tác như insert, ñể undo lại một thao tác như insert, delete, update hay drop…. (cid:1) Sự cố do hệ thống phần mềm (cid:1) Sự cố do lỗi thiết bị

(cid:1) Loai (MaLoai, TenLoai) (cid:1) SanPham (MaSP, TenSP, MaLoai) (cid:1) NhanVien (MaNV, HoTen, NgaySinh, Phai) (cid:1) PhieuXuat (MaPX, NgayLap, MaNV) (cid:1) PhieuXuat (MaPX, NgayLap, MaNV) (cid:1) ChiTietXuat (MaPX, MaSP, SoLuong) (cid:1) Tạo View vThongKe cho biết “mã sản phẩm, tên sản phẩm, tổng số lượng xuất của từng sản phẩm trong năm 2009”. Lấy dữ liệu từ View này sắp xếp tăng dần theo cột TenSP.

DBMS03 – Slides 23 DBMS03 – Slides 25

Khôi Phục Dữ Liệu

Cài ñặt trên SQL Server

(cid:1) Khôi phục sau sự cố từ một giao tác

(cid:1) Sao lưu (Backup) (cid:1) Khôi phục (Restore)

(cid:1) Dựa vào file log

(cid:1) Khôi phục sau sự cố hệ thống

(cid:1) Dựa vào file backup

(cid:1) Khôi phục sau sự cố từ thiết bị lưu trữ

(cid:1) ???

DBMS03 – Slides 26 DBMS03 – Slides 27

Sao lưu (Backup)

Sao lưu (Backup)

(cid:1)

(cid:1) 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.

(cid:1) Differential Database Backups : Copy những thay ñổi trong tất cả data files kể từ lần full backup gần nhất. (cid:1) File or File Group Backups : Copy một data file ñơn (cid:1) File or File Group Backups : Copy một data file ñơn

hay một file group.

(cid:1) 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.

Trong ví dụ này ta schedule một Full Database Backup vào ngày Chủ Nhật và Differential Backup vào các ngày thứ Ba và Thứ Năm. Transaction Log Backup ñược schedule hằng ngày.

(cid:1) 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).

DBMS03 – Slides 28 DBMS03 – Slides 29

Thuật ngữ về Backup

Backup

Giải Thích Thuật Ngữ

Backup

Quá trình copy toàn bộ hay một phần của database, transaction log, file hay file group hình thành một backup set. Backup set ñược chứa trên backup media (tape or disk) bằng cách sử dụng một backup device (tape drive name hay physical filename) drive name hay physical filename)

(cid:1) Chúng ta có thể tạo một backup device cố ñịnh (permanent) hay tạo ra một backup file mới cho mỗi lần backup. Thông thường chúng ta sẽ tạo một backup device cố ñịnh ñể có thể dùng ñi dùng lại ñặc biệt cho việc tự ñộng hóa công việc dùng lại ñặc biệt cho việc tự ñộng hóa công việc backup.

Một file vật lý (như C:\SQLBackups\Full.bak) hay tape drive cụ thể (như \\.\Tape0) dùng ñể record một backup vào một backup media. Backup Device

File chứa một backup set Backup File

Backup Media Disk hay tape ñược sử dụng ñể chứa một backup set. Backup media có thể chứa nhiều backup sets (ví dụ như từ nhiều SQL Server 2000 backups và từ nhiều Windows 2000 backups).

(cid:1) Ðể backup database bạn có thể dùng Backup Wizard hoặc click lên trên database muốn backup sau ñó Right-click(cid:2)(cid:2)(cid:2)(cid:2)All Tasks (cid:2)(cid:2)(cid:2)(cid:2) Backup Database

Một bộ backup từ một lần backup ñơn ñược chứa trên backup media. Backup Set DBMS03 – Slides 30 DBMS03 – Slides 31

Ví dụ Backup

Phục Hồi (Restore)

(cid:1) 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. ñiểm transaction gần nhất ñược commited.

(cid:1) 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 toà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.

(cid:1) 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ứ.

DBMS03 – Slides 32 DBMS03 – Slides 33

Phục hồi (Restore)

Phục hồi (Restore)

(cid:1) Nếu bạn restore từ một

instance khác của SQL Server hay từ một server khác bạn có chọn From device option và chọn backup device (file backup) tương ứng . backup) tương ứng . (cid:1) Lưu ý nếu bạn muốn

overwrite database có sẵn với data ñược backup bạn có thể chọn option Force restore over existing database như hình vẽ sau:

(cid:1) Trước khi restore database ta phải xác ñịnh ñược thứ tự file cần restore. Các thông tin này ñược SQL Server chứa trong msdb database và sẽ cho ta biết backup device nào, ai backup device nào, ai backup vào thời ñiểm nào. Sau ñó ta tiến hành restore. Ðể restore bạn Right-click(cid:2)(cid:2)(cid:2)(cid:2)All Tasks(cid:2)(cid:2)(cid:2)(cid:2)Restore database

DBMS03 – Slides 34 DBMS03 – Slides 35

Câu hỏi

Tóm lại

(cid:1) Phân biệt: thông tin (information), dữ liệu

(data) và tri thức (knowlegde)

(cid:1) Transaction là gì? (cid:1) Nếu không sao lưu dữ liệu thường xuyên thì

(cid:1) An toàn dữ liệu (cid:1) Các loại sự cố thường xảy ra (cid:1) Sao lưu và phục hồi dữ liệu trên SQL

gặp phải vấn ñề gì? gặp phải vấn ñề gì?

Server Server

(cid:1) Một số database object trong SQL Server? Table, View, Store, Trigger, Index, User,

(Cursor)

(cid:1) Một số action object trong SQL Server? Backup, Restore, Transaction, DTS, BCP

DBMS03 – Slides 36 DBMS03 – Slides 37