1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ngày 231220 c06auditdatabase191017 c07encryptionxmlsecurity audittrongsqlserver20127161 canxemauditingkiemtoanvagiaitrinh hk201 – bm csdl – cd cntt 20 – cklt bài t

49 45 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 189,4 KB

Nội dung

Bạn tạo login chỉ có quyền được cho (không được có quyền cao hơn), tạo xong bạn phải đăng nhập vào SQL Server bằng chính login vừa tạo, thực hiện kiểm tra quyền bằng cách thực hiện các c[r]

(1)

Bài Thực Hành Security Tuần 1-2-3: Login – User – Roles

PHẦN 1: TRẢ LỜI CÁC CÂU HỎI SAU

1 Cho biết mục tiêu bảo mật? Các mức bảo mật mà SQL Server hỗ trợ

2 SQL Server hỗ trợ chế độ chứng thực? Sự khác biệt? Để thay đối chế độ chứng thực thể SQL Server, bạn phải thực nào?

3 Cho biết logins, users gì?

4 Cho biết Roles gì? Có loại, mức độ nào? Liệt kê Roles mà SQL Server có hỗ trợ, bạn thành viên Roles bạn có quyền hạn thư nào? Cho biết Permissions gì?

PHẦN 2: THỰC HÀNH BÀI 1

1 Tạo sở liệu QLTV tham số tùy ý

2 Tạo users Minh, Huy, Le, Linh, An, Binh: a Password tên username viết hoa

b Đảm bảo user tạo bảng tablespace với quota 10M Hướng dẫn:

1 Tạo CSDL QLTV create database QLTV

2 Tạo users Minh, Huy, Le, Linh, An, Binh: a) Password tên username viết hoa use QLTV

go

create login Minh with password='MINH' go

create user Minh for login Minh go

use QLTV go

Mục tiêu:

- Tạo, sửa, xóa login - Tạo, sửa, xóa user - Tạo, sửa, xóa roles

(2)

create login Huy with password='HUY' go

create user Huy for login Huy go

use QLTV go

create login Le with password='LE' go

create user Le for login Le go

use QLTV go

create login Linh with password='LINH' go

create user Linh for login Linh go

use QLTV go

create login An with password='AN' go

create user An for login An go

use QLTV go

create login Binh with password='BINH' go

create user Binh for login Binh

b) Đảm bảo user tạo bảng tablespace với quota 10M Ví dụ minh họa:

go

CREATE USER Hung

IDENTIFIED BY out_standing1 DEFAULT TABLESPACE example QUOTA 10M ON example

TEMPORARY TABLESPACE temp QUOTA 10M ON system

PROFILE app_user PASSWORD 123456; Cho bảng Sach

(3)

)

Tạo bảng Sach Create table Sach (

ID INT PRIMARY KEY, Name NVARCHAR(2) )

Làm bước sau:

a Tạo role sau: DataEntry, Supervisor, Management go

use QLTV go

create application role DataEntry; go

use QLTV go

create application role Supervisor; go

use QLTV go

create application role Management;

b Gán Minh, Huy, Linh vào role DataEntry, gán Le vào role Supervisor, gán An Binh vào role Management

go

EXEC sp_addrolemember 'DataEntry','Minh' go

EXEC sp_addrolemember 'DataEntry','Huy' go

EXEC sp_addrolemember 'DataEntry','Lym' role Supervisor

go

EXEC sp_addrolemember 'Supervisor','Le' role Management

go

EXEC sp_addrolemember 'Management','An' go

EXEC sp_addrolemember 'Management','Binh'

c Cho role DataEntry quyền SELECT, INSERT, UPDATE bảng Sach go

(4)

grant select,insert,update on Sach to DataEntry

d Cho role Supervisor quyền SELECT DELETE bảng Sach go

use QLTV go

grant select,delete on Sach to Supervisor

e Cho role Management quyền SELECT bảng Sach go

use QLTV go

grant select on Sach to Management

f Lần lượt kiểm tra kết phân quyền cấp cho role

Dang nhap bang user Minh thuc hien lenh select , insert, update cua role DataEntry go

use QLTV go

select * from Sach go

insert into Sach values (1,'df') go

select * from Sach go

update Sach set Name='gg' where ID = go

select * from Sach

Dang nhap bang user Le thuc hien lenh select, delete cua role Supervisor go

use Sach go

select * from Sach go

delete from Sach where ID=1 go

select * from Sach

Dang nhap bang user An thuc hien lenh select cua role Management go

use QLTV go

(5)

4 Tạo user tên NameManager với password pc123 Gán quyền update cho user cột TenSach bảng Sach

tao user go

use QLTV go

create login NameManager with password='pc123' go

create user NameManager for login NameManager gan quyen

go

use QLTV go

grant update on Sach(TenSach) to NameManager user chay thu quyen dc cap

go

use QLTV go

update Sach set TenSach='TD' where Masach=1 –Lệnh xem quyền

SELECT

[UserName] = CASE memberprinc.[type]

WHEN 'S' THEN memberprinc.[name]

WHEN 'U' THEN ulogin.[name] COLLATE Latin1_General_CI_AI END,

[UserType] = CASE memberprinc.[type] WHEN 'S' THEN 'SQL User' WHEN 'U' THEN 'Windows User' END,

[DatabaseUserName] = memberprinc.[name], [Role] = roleprinc.[name],

[PermissionType] = perm.[permission_name], [PermissionState] = perm.[state_desc],

[ObjectType] = obj.type_desc, perm.[class_desc], [ObjectName] = OBJECT_NAME(perm.major_id) FROM

Role/member associations

(6)

Roles

sys.database_principals roleprinc ON roleprinc.[principal_id] = members [role_principal_id]

JOIN

Role members (database users)

sys.database_principals memberprinc ON memberprinc.[principal_id] = members [member_principal_id]

LEFT JOIN

Login accounts

sys.login_token ulogin on memberprinc.[sid] = ulogin.[sid] LEFT JOIN

Permissions

sys.database_permissions perm ON perm.[grantee_principal_id] = roleprinc.[principal_id] LEFT JOIN

Table columns

sys.columns col on col.[object_id] = perm.major_id AND col.[column_id] = perm.[minor_id] LEFT JOIN

sys.objects obj ON perm.[major_id] = obj.[object_id] Thực bước sau:

a Gán password cho role DataEntry “mgt” b Cho phép user Minh quyền cấp quyền cho user khác

c Gán tất quyền mà Minh có cho Binh Binh có quyền INSERT UPDATE bảng QLTV không?

a.Gán password cho role DataEntry “mgt” go

use QLTV go

alter application role DataEntry with password = 'mgt'

b Cho phép user Minh quyền cấp quyền cho user khác go

use QLTV go

grant select,insert,update on Sach to Minh with grant option Minh gan quyen cho user #

go

use QLTV go

grant insert on Sach to An An chay thu quyen dc cap

(7)

use QLTV go

insert into Sach values (1,'df') go

select * from Sach

c Gán tất quyền mà Minh có cho Binh Binh có quyền INSERT UPDATE bảng Sach không?

dang nhap bang user Join go

use QLTV go

grant select,insert,update on Sach to Binh Binh chay thu quyen dc cap

go

use QLTV go

select * from Sach go

insert into Sach values (4,'ff') go

select * from Sach go

update Sach set Tensach='gg' where Masach= go

select * from Sach

=> Binh có quyền INSERT UPDATE bảng QLTV BÀI 2

CSDL mẫu: AdventureWorks2008

Hướng dẫn: Attach file AdventureWorks2008_Data.mdf, AdventureWorks2008_Log.ldf để tạo sở dữ liệu mẫu AdventureWorks2008

(8)

I. Tạo Roles, Logins, gán quyền thao tác SQL Server Management Studio (SSMS).

1 Tạo login dạng SQL Server Authentication a Tạo login có tên tên bạn, login có:

 Chế độ chứng thực SQL Server Authentication, password tùy ý, CSDL mặc định AdventureWorks2008.

 Không thuộc Server Roles

Chỉ cho truy xuất đến CSDL AdventureWorks2008 không thuộc Database Roles ngoại trừ Public

 Kiểm tra:

- Ở SSMS, kiểm tra xem tên login bạn có nằm nhánh Security\Login khơng? kiểm tra xem tên login bạn có nằm nhánh User CSDL AdventureWorks2008 khơng? Xem properties

- Kết nối vào SSMS login vừa tạo

- Trong mục database bạn nhìn thấy database nào? Tại sao?

- Dùng câu lệnh SELECT … FROM… để xem mẫu tin bảng Production.Product, bạn xem không? Tại sao?

b Hiệu chỉnh login trên, cho phép login thuộc database Roles tên db_DataReader CSDL AdventureWorks2008

 Kiểm tra:

- Dùng câu lệnh SELECT … FROM… để xem mẫu tin bảng Production.Product, bạn xem không? Tại sao?

- Dùng câu lệnh INSERT … VALUES để chèn mẫu tin vào bảng Production.Product, bạn có chèn khơng? Tại sao? Muốn chèn bạn phải làm gì? Thực thử xem

c Tương tự vậy, lần lược tìm hiểu database Roles lại 2 Tạo login dạng Windows Authentication

a Quay hệ điều hành tạo local user account domain user account phép kết nối đến máy Server SQL Server User account có tên Nhanvien1.

b Cho phép Nhanvien1 trở thành login SQL Server, login thuộc vào database Roles là db_datareader CSDL AdventureWorks2008 (Lưu ý: phải chọn Windows Authentication)

c Bạn thử kết nối Server thông qua công cụ SSMS login vừa tạo kiểm tra quyền login AdventureWorks2008

(9)

3 Login tạo câu câu thực tạo Table, view, … CSDL AdventureWorks2008 hay không? Muốn tạo cần có điều gì?

4 Tạo Database Role có tên NVHoaDon CSDL AdventureWorks2008, Role có quyền hạn sau:

- Được phép chèn, cập nhật liệu hai bảng Purchasing.PurchaseOrderHeader và Purchasing.PurchaseOrderDetail

- Chỉ phép xem (Select) bảng Purchasing.WorkOrder

5 Tạo login dạng SQL Server Authentication, có tên lần lược NVHD1, NVHD2, NVHD3 Các Login thuộc DataBase Role NVHoaDon tạo Đăng nhập vào từng login NVHD1, NVHD2, NVHD3, ứng với login thực công việc sau:

- Xem thông tin bảng Purchasing.PurchaseOrderHeader

Purchasing.PurchaseOrderDetail, Purchasing.WorkOrder

- Chèn vào bảng Purchasing.PurchaseOrderHeader

Purchasing.PurchaseOrderDetail, Purchasing.WorkOrder, bảng record với dữ liệu tùy ý, ý ràng buộc khóa ngoại

- Xóa record bảng sau Purchasing.PurchaseOrderHeader Purchasing.PurchaseOrderDetail, Purchasing.WorkOrder.

- Nếu thực lệnh Update cho bảng Purchasing.PurchaseOrderHeader Purchasing.PurchaseOrderDetail, Purchasing.WorkOrder có thực khơng? Giải thích cho ví dụ minh họa trường hợp không

6 Tạo login dạng SQL Server Authentication, có tên lần lược QLKho1, QLKho2, QLKho3. Các login có quyền hạn phép chèn, xóa liệu bảng Production.Product; cập nhật cột ListPrice bảng Production.Product Chỉ được phép xem (Select) bảng Production.WorkOrder Cho ví dụ kiểm tra trường hợp cấp quyền cho login thông qua lệnh insert, update, delete, select

7 Bạn chọn giải pháp đơn giản phép login tạo phép xem thông tin trong bảng HumanResources.Employee.

8 Tạo hai login thuộc dạng SQL Server Autehtication, có tên lần lược PTUD1, PTUD Các login có quyền sau:

- Được phép tạo đối tượng database

- Được phép truy xuất hiệu chỉnh đối tượng database Ứng với login thực lệnh sau:

a) Tạo Table UngDung(MaUD int primary key, TenUD nvarchar(30)) b) Thêm cột TacGia nvarchar(30) vào bảng UngDung

(10)

e) Tạo thủ tục cho phép xem thơng tin ứng dụng f) Xóa liệu có bảng UngDung

g) Chạy thủ tục tạo câu e h) Xóa thủ tục câu e

II. Tạo Roles, Logins, gán quyền T_SQL thông qua thủ tục hệ thống Chú ý sau câu bạn thực kiểm tra lại lệnh bạn vừa thực hiện

1 Tạo login dạng Windows Authentication có tên GD1 (vào hệ điều hành Window tạo user GD1 trước tạo )

2 Tạo hai login dạng SQL Server Authentication tên PGD1 PGD2 có password tùy ý.

1 Bạn tạo user-defined role với tên QLSP có quyền sau: thêm, xóa, sửa bảng Production.Product Tạo user ứng với login trên, thực thêm user thành viên role QLSP.

2 Giả sử bạn muốn cấm cách tường minh quyền thêm, xóa, sửa bảng Production.Product đối với user PGD1, cho dù user thành viên role có quyền (quyền thêm, xóa, sửa trên bảng Production.Product) user bị cấm Các user khác không bị ảnh hưởng Bạn thực nào?

3 Ở câu bạn cấm quyền thêm, xóa, sửa bảng Production.Product user PGD1 Bạn muốn khơi phục lại quyền thêm, xóa, sửa bảng Production.Product user PGD1 Bạn thực nào?

4 Ở câu bạn cấp quyền cho role QLSP: thêm, xóa, sửa bảng Production.Product Bạn muốn cấm quyền thêm, xóa, sửa bảng Production.Product role Bạn thực thế nào? Các user thành viên role QLSP có quyền lúc này?

5 Tạo hai login dạng SQL Server Authentication có tên NghiepVu1, NghiepVu2 Tạo user NghiepVu1, NghiepVu2 ứng với login trên, user có quyền sau: xem hiệu chỉnh cột ListPrice bảng Production.Product ; xem, hiệu chỉnh, xóa liệu bảng Production.WorkOrder Production.Product, phép xem (Select) bảng Purchasing.WorkOrder

BÀI 3: ỨNG DỤNG VÀO BÀI TOÁN CỤ THỂ Bài 1

Câu 1: Sử dụng tài khoản với quyền quản trị thực tạo login, user cấp quyền 1.1 Tạo login tên admin1, mật Abc12345

1.2 Tạo user thuộc sở liệu master (Databases->System Databases->master) 1.3 Cấp quyền tạo sở liệu, tạo bảng quyền tạo login cho admin1

(11)

File Size MaxSize FileGrowth

Data 100 Không giới hạn 50

Log 300 Không giới hạn 100

2.2 Tạo bảng NhanVien LuongNV thuộc CSDL QuanLyNhanSu Bảng NhanVien

Tên cột Kiểu liệu Số kí tự Ghi

MaNv Varchar 20 Khóa

TenNv Nvarchar 100

NgaySinh Varchar 10

NoiSinh nvarchar 50

Bảng LuongNV

Tên cột Kiểu liệu Số kí tự Ghi

MaNv varchar 20

Khóa

NamThang varchar

Luong Float

2.3 Tạo login chứng thực SQL Server (SQL Server Authencation)

Tên login Mật

LyNT Abc12345

HungNT Abc12345

2.4 Tạo user

Tên user Tên login

LyNT LyNT

HungNT HungNT

2.5 Cấp quyền

Tên user Tên bảng Quyền cấp LyNT NhanVien, LuongNV Thêm, xóa liệu

HungNT NhanVien

Chỉ phép xem MaNv,TenNV cấp quyền

Cập nhật liệu 2.6 Kiểm tra cấp quyền

Thực lệnh sau với user LyNT HungNT

(12)

3) Sửa liệu nơi sinh cho nhân viên thành Hà Nội 4) Xóa nhân viên khỏi bảng nhân viên

Các lệnh có thực khơng? Lệnh khơng thực giải thích khơng thực thi được?

5) Thêm quyền cập nhật liệu cho bảng LuongNV cho user HungNT Sau thực lại lệnh Nhận xét

Bài 2:

Câu 1: Tạo database tên QuanLyDaoTao

File Size MaxSize FileGrowth

Data 100 Không giới hạn 10

Log 300 Không giới hạn 30

Câu 2: Tạo bảng thuộc CSDL QuanLyDaoTao Bảng Lop

Tên cột Kiểu liệu Số kí tự Ghi chú

MaLop Varchar 20 Khóa

TenLop Nvarchar 100 Bảng SinhVien

Tên cột Kiểu liệu Số kí tự Ghi chú

MaSv Varchar 20 Khóa

TenSv Nvarchar 100

NgaySinh Varchar 10 NoiSinh Nvarchar 50

MaLop Varchar 20 Khóa ngoại

Bảng MonHoc

Tên cột Kiểu liệu Số kí tự Ghi chú

MaMh Varchar 20 Khóa

TenMh Nvarchar 100 SoGio Int

Bảng DiemTP

Tên cột Kiểu liệu Số kí tự Ghi chú

MaSv Varchar 20

Khóa

MaMh Varchar 20

Diem Float

(13)

Câu 4: Thêm liệu cho bảng Bảng Lop

MaLop TenLop

CN0201 Khóa 2001

CN0202 Khóa 2002

Bảng SinhVien

MaSv TenSv NgaySinh(dd/mm/yyyy) NoiSinh MaLop sv01

Nguyễn Văn

Hưng 12/02/1988

Hồ Chí

Minh CN0201 sv02 Lê Hùng 17/03/1990

Bình

Dương CN0201 sv03 Lê Hùng 02/12/1991

Bình

Dương CN0202 Bảng MonHoc

MaMh TenMh SoGio

THVP Tin học văn phòng 45

THDC Tin học đại cương 45

CSDL Cơ sở liệu 30

Bảng DiemTP

MaSv MaMh Diem

sv01 THVP 8.0

sv01 THDC 7.0

sv01 CSDL 6.0

sv02 THVP 9.0

sv02 THDC 4.0

sv02 CSDL 7.0

sv03 THVP 5.0

sv03 THDC 5.0

sv03 CSDL 5.0

(14)

5.1 Tạo nhóm quyền thuộc CSDL QuanLyDaoTao tương ứng với phòng ban mơ tả 5.2 Cấp quyền cho phịng ban CSDL QuanLyDaoTao

1 Ban Giam Hiệu phép xem tất liệu tất bảng database Khoa Mạng Truyền Thông phép xem bảng SINHVIEN, LOP

3 Khoa Kỹ thuật phần mềm đươc phép xem, thêm, xóa cập nhật liệu bảng SINHVIEN, LOP, MONHOC

4 Khoa Tài kế toán phép xem liệu bảng DiemTP

5 Phịng Đào tạo phép xem,thêm,xóa cập nhật liệu tất bảng database 5.3 Tạo danh sách nhân cho phòng ban (Lưu ý tất tài khoản phải đổi mật lần đăng nhập đầu tiên)

Ban Giám Hiệu

Tên Mật khẩu

AnhNH Abc12345

HoangNT Abc12345

Khoa Mạng Truyền Thông

Tên Mật khẩu

TrungDM Abc12345

CongND Abc12345

DangNS Abc12345

Khoa Kỹ thuật phần mềm

Tên Mật khẩu

ThuatDV Abc12345

DatDT Abc12345

NguyenTT Abc12345

(15)

Tên Mật

TuanTV Abc12345

DieuNT Abc12345

GiangNN Abc12345

Phòng Đào tạo

Tên Mật

TramNTH Abc12345

ThuyLT Abc12345

5.4 Chọn thành viên đại diện cho phòng ban, bạn thực lệnh insert, update, delect, select cho table, giải thích lệnh mà bạn thực

Tuần 4-5-6: Transaction

PHẦN 1: BACKUP AND RECOVERY

1 Tạo CSDL Qlsach tham số tùy ý Tạo table có cấu trúc sau: NhomSach(MaNhom char(5), TenNhom nvarchar(25))

NhanVien(MaNV char(5), HoLot nvarchar(25), TenNV nvarchar(10), Phai nvarchar(3), NgaySinh Smalldatetime, DiaChi nvarchar(40))

DanhMucSach(MaSach char(5), TenSach nvarchar(40), TacGia nvarchar(20), MaNhom char(5), DonGia Numeric(5), SLTon numeric(5))

HoaDon(MaHD char(5), NgayBan SmallDatetime, MaNV char(5)) ChiTietHoaDon(MaHD char(5), MaSach char(5), SoLuong numeric(5)) Nhập liệu cho table

NhomSach

MANHOM TENNHOM

N001 Kỹ thuật trồng trọt Sach

MaS TenSach TacGia MaN DonGi SlTon

Mục tiêu:

- Backup and recovery - Index

(16)

H H a S111 Đèn khơng

hắt bóng

Dzunichi Watanabe (Cao Xuân Hạo dịch)

N001 55000 45

S112

Kỹ thuật trồng hoa phong lan

Nguyễn Lân Hùng N001 45000 35

S113

Kỹ thuật chăm sóc hoa mai

Lê Xuân A N007 35000 15

S114

Kỹ thuật chăm sóc cam

Trần Ha N001 24000 12

Các Table khác sinh viên tự thêm liệu vào

2 Tạo thiết bị backup có tên QuanLySachBackup lưu thư mục T:\backup\QuanLySachBackup.bak

Viết câu lệnh để set CSDL QLSach chế độ phục hồi FULL

3 Thực backup sau cho CSDL QLSach, tất backup lưu vào thiết bị backup vừa tạo a Thực full backup CSDL QLSach

b Thực việc insert sau:

insert NhomSach values('N007','Truyen ngan') insert HoaDon values('11',GETDATE(),'NV001')

Bạn muốn backup CSDL QLSach đến thời điểm thay đổi câu b ( nghĩa có nhóm sách 'N007' hóa đơn 11), thay thực full backup để backup lại CSDL đến thời điểm câu b, bạn thực loại backup kết hợp với full backup câu a để thực yêu cầu mà tiết kiệm dung lượng đĩa? Bạn thực việc backup mà bạn chọn lựa

Xóa CSDL, thực phục hồi lại CSDL QLSach đến thời điểm câu b Chú ý xem có mẫu tin vừa insert không

c. Thực việc insert sau:

insert NhomSach values('N008','Phap van') insert HoaDon values('12',GETDATE(),'NV001')

Giả sử đến thời điểm bị cố ( bạn tự giả lập cố cách cho database offline xóa datafile), bạn có backup câu a, câu b

Bạn thực việc phục hồi liệu cho không liệu (nghĩa có nhóm sách N008 hóa đơn 12)

d. Thực việc insert sau:

(17)

insert HoaDon values('13',GETDATE(),'NV001')

Tạo transaction log backup Xóa CSDL QLSach

Thực việc restore CSDL QLSach thời điểm câu d

e. Xóa CSDL QLSach phục hồi liệu thời điểm insert hóa đơn 11 câu b

Câu 2: Thực giống 1, thay tạo thiết bị backup QuanLySachBackup, file backup lưu trực tiếp vào file cụ thể (sv tự đặt tên file)

PHẦN 2: INDEX

Cơ sở liệu mẫu: AdventureWork2008

Trong CSDL mẫu tạo sẵn mục sau cho bảng Production.WorkOrder: CREATE TABLE [Production].[WorkOrder](

[WorkOrderID] [int] IDENTITY(1,1) NOTNULL, [ProductID] [int] NOTNULL,

[OrderQty] [int] NOTNULL,

[StockedQty] AS (isnull([OrderQty]-[ScrappedQty],(0))), [ScrappedQty] [smallint] NOTNULL,

[StartDate] [datetime] NOTNULL, [EndDate] [datetime] NULL, [DueDate] [datetime] NOTNULL, [ScrapReasonID] [smallint] NULL, [ModifiedDate] [datetime] NOTNULL,

CONSTRAINT [PK_WorkOrder_WorkOrderID] PRIMARY KEY CLUSTERED ([WorkOrderID] ASC)

WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,

ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY];

Trong đó:

 PK_WorkOrder_WorkOrderID (clustered)

(18)

Table scan: đọc toàn heap

Index scan: đọc toàn mức mục clustered hay non-clustered ̣

Index seek: định vị dịng liệu thơng qua b-tree trả dòng chọn

1 Vào Management Studio  vào hình query: Chọn CSDL mẫu AdventureWorks2008:

Dùng lệnh:

use AdventureWorks2008

(Hoặc thực thao tác chọn database AdventureWorks2008)

Dùng lệnh để xem mục tạo bảng Production.WorkOrder sp_helpindex 'Production.WorkOrder'

Thực câu truy vấn sau: SELECT *

FROM Production.WorkOrder

Câu truy vấn sử dụng mục sử dụng thao tác ?

Bạn sử dụng Query Optimizer để xem cách xử lý câu truy vấn cách bôi đen câu lệnh nhấn vào biểu tượng Execution Plan

Hoặc bôi đen câu lệnh click chuột phải, chọn Display Estimated Execution Plan SELECT *

FROM Production.WorkOrder WHERE WorkOrderID = 1234;

Câu truy vấn sử dụng mục sử dụng thao tác gì? Bạn sử dụng Query Optimizer để xem cách xử lý câu truy vấn SELECT *

FROM Production.WorkOrder

(19)

Câu truy vấn sử dụng mục sử dụng thao tác gì? Bạn sử dụng Query Optimizer để xem cách xử lý câu truy vấn Giả sử bạn có nhu cầu truy vấn thường xuyên câu lệnh sau:

SELECT *

FROM Production.WorkOrder WHERE StartDate = '2003-06-25';

Bạn thực việc tạo mục thích hợp cho câu trên?

Bạn sử dụng Query Optimizer để xem cách xử lý câu truy vấn So sánh với trước tạo mục

5 Giả sử có nhu cầu truy vấn thường xuyên câu sau: SELECT WorkOrderID, StartDate

FROM Production.WorkOrder WHERE ProductID = 757

Để giảm chi phí bookmark lookup, nghĩa thực việc tìm kiếm bảng, khơng cần nhảy sang bảng khác, bạn xóa mục có sẵn tạo lại mục cho thích hợp câu trên?

Bạn sử dụng Query Optimizer để xem cách xử lý câu truy vấn trên, có nhận xét so với trước tạo mục vừa tạo

Bạn sử dụng Database Tuning Advisor để xem lời khuyên việc tạo mục câu truy vấn

6 Giả sử có nhu cầu truy vấn thường xuyên câu sau: SELECT WorkOrderID, StartDate

FROM Production.WorkOrder WHERE ProductID = 757 AND StartDate = '2002-01-04';

Bạn thực việc tạo mục thích hợp cho câu trên? Nếu có nhiều giải pháp, đưa nhận xét cho giải pháp lựa chọn giải pháp phù hợp

(20)

Bạn sử dụng Database Tuning Advisor để xem lời khuyên việc tạo mục câu truy vấn

7 Thực lệnh để xem tình trạng phân mảnh mục bảng sau: a Production.Product

b HumanResource.Employee

Nếu có phân mảnh viết lệnh để tổ chức lại mục PHẦN 3: TRANSACTION

Cơ sở liệu mẫu: QLSach

1 So sách mức cô lập READ UNCOMMITTED READ COMMITTED Trường hợp

T1 T2

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' COMMIT TRAN

Nhận xét kết ? Giải thích ?

Các vấn đề :

(21)(22)

Trường hợp 1a

T1 T2

USE QLSach

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001'

waitfor delay '00:00:15‘ USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' COMMIT TRAN

(23)

Trường hợp 1b

T1 T2

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' waitfor delay '00:00:15‘

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' COMMIT TRAN

(24)

Trường hợp

T1 T2

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' waitfor delay '00:00:15‘

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' COMMIT TRAN

Nhận xét kết ? Giải thích ?

(25)

Trường hợp 1a

T1 T2

SET TRANSACTION ISOLATION LEVEL READ COMMITTED USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' SELECT sum(SLTon)

(26)

Trường hợp 1b

T1 T2

SET TRANSACTION ISOLATION LEVEL READ COMMITTED USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001'

(27)

Trường hợp

T1 T2

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001'

Nhận xét kết ? Giải thích?

3 So sách mức lập REPEATABLE READ SERIALIZABLE Thử nghiệm xem transaction đọc có cho phép transaction khác thực ghi (insert) liệu mà giao tác đọc quan tâm không?

(28)

T1 T2 SET TRANSACTION ISOLATION

LEVEL REPEATABLE READ USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001'

USE QLSach BEGIN TRAN

INSERT DanhMucSach values('S011',N'Hợp ngữ LT

Điều kiển thiết bị',N'Nguyễn Minh Tuấn','N001',25000,20)

Nhận xét kết ? Giải thích ?

Trường hợp 2a

(29)

SET TRANSACTION ISOLATION LEVEL

SERIALIZABLE USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

INSERT DanhMucSach values('S011',N'Hợp ngữ LT

Nhận xét kết ? Giải thích ?

Trường hợp 2b

(30)

SET TRANSACTION ISOLATION LEVEL

SERIALIZABLE USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

INSERT DanhMucSach values('S011',N'Hợp ngữ

LT Điều kiển thiết bị',N'Nguyễn Minh Tuấn ,

'N001',25000,20) Nhận xét kết ?

(31)

Bài 2:

+ Nội dung kiến thức thực hành:

+Transaction: Chỉ định khoá trực tiếp lệnh

Thay mức lập read uncommitted, read committed, repeatable read, serializable, trở lại mức cô lập mặc định, đặt khóa trực tiếp vào lệnh cho giải vấn đề thay cho mức cô lập read uncommitted, read committed, repeatable read, serializable

Bài 3:

+ Nội dung kiến thức thực hành:

+Transaction: mức cô lập Optimistic

Mức cô lập Read Committed ( Snapshot Isolation ) : thiết lập database Thiết lập mức cô lập:

ALTER DATABASE <Tên Database>

SET READ_COMMITTED_SNAPSHOT ON Ví dụ:

ALTER DATABASE QLSach

SET READ_COMMITTED_SNAPSHOT ON

(32)

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘ Nhận xét kết ? Giải thích ?

Mức lập Snapshot Isolation (SI): Thiết lập nơi: database connection Thiết lập mức cô lập:

ALTER DATABASE <Tên Database>

SET ALLOW_SNAPSHOT_ISOLATION ON Ví dụ:

ALTER DATABASE QLSach

(33)

T1 T2 USE QLSach

BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

COMMIT TRAN

SET TRANSACTION ISOLATION LEVEL SNAPSHOT

USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:15‘

SELECT sum(SLTon) FROM DanhMucSach

(34)

Sự xung đột transaction cập nhật mức cô lập Snapshot Isolation

T1 T2

SET TRANSACTION ISOLATION LEVEL SNAPSHOT

BEGIN TRAN USE QLSach BEGIN TRAN

SELECT sum(SLTon) FROM DanhMucSach WHERE MaNhom = 'N001' waitfor delay '00:00:10'

UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001'

USE QLSach BEGIN TRAN

UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' waitfor delay '00:00:15'

Nhận xét kết ? Giải thích ?

(35)

T1 T2 SET TRANSACTION ISOLATION LEVEL SNAPSHOT

BEGIN TRAN USE QLSach BEGIN TRAN

SELECT sum(SLTon)

FROM DanhMucSach WITH (UPDLOCK) WHERE MaNhom = 'N001'

waitfor delay '00:00:10'

UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001'

USE QLSach BEGIN TRAN

UPDATE DanhMucSach SET SLTon = SLTon +1 WHERE MaSach = 'S001' waitfor delay '00:00:15'

BÀI TẬP LÀM THÊM SINGLE TRANSACTION

Autocommit mode chế độ quản lý giao dịch mặc định SQL Server Database Engine Mỗi lệnh Transact-SQL commit Rollback hồn thành. 1) Thêm vào bảng Department dòng liệu tùy ý câu lệnh

INSERT VALUES

1) Thực lệnh chèn thêm vào bảng Department dòng liệu tùy ý Giữ khóa

(36)

cách thực lệnh Begin tran rollback, dùng câu lệnh Select*from Department xem kết

2) Thực câu lệnh với lệnh commit kiểm tra kết quả.

2) Tắt chế độ autocommit SQL Server (SET IMPLICIT_TRANSACTIONS ON) Tạo đoạn batch gồm thao tác:

Thêm dòng vào bảng

Department

Tạo bảng

Test (id int, name nvarchar(10)) Thêm dòng vào

Test

ROLLBACK;

Xem liệu bảng

Department Test để kiểm tra liệu, giải thích kết

Mục tiêu:

Sinh viên hiểu khái niệm transaction, thuộc tính của transaction, chế hoạt động transaction

Hiện thực transaction ngữ cảnh cụ thể

3) Viết đoạn batch thực thao tác sau (lưu ý thực lệnh SET

XACT_ABORT ON: câu lệnh T-SQL làm phát sinh lỗi run-time, toàn giao dịch chấm dứt Rollback)

Câu lệnh SELECT với phép chia :SELECT 1/0 as Dummy

Cập nhật dòng bảng

Department với id=’9’ (id khơng tồn tại) Xóa dịng khơng tồn bảng

Department (id=’66’)

Thêm dòng vào bảng

Department

COMMIT;

Thực thi đoạn batch, quan sát kết thông báo lỗi giải thích kết 4) Thực lệnh SET XACT_ABORT OFF (những câu lệnh lỗi rollback,

transaction tiếp tục) sau thực thi lại thao tác đoạn batch câu Quan sát kết giải thích kết quả?

II CONCURRENT TRANSACTIONS

1) Tạo bảng Accounts (AccountID int NOT NULL PRIMARY KEY, balance int NOT NULL

CONSTRAINT unloanable_account CHECK (balance >= 0) Chèn liệu:

INSERT INTO Accounts (acctID,balance) VALUES (101,1000); INSERT INTO Accounts (acctID,balance) VALUES (202,2000); 2) SET TRANSACTION ISOLATION LEVEL

(37)

{ READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT

| SERIALIZABLE }[ ; ]

READ UNCOMMITTED: đọc dòng hiệu chỉnh transaction khác chưa commit

READ COMMITTED: đọc dòng hiệu chỉnh bởi transaction khác mà chưa commit

3) Mở cửa sổ Query SQL server, thiết lập SET TRANSACTION ISOLATION LEVEL READ COMMITTED cửa sổ (tạm gọi clients A bên trái, và client B bên phải)

Client A, client B: thực lệnh SELECT bảng Accounts với AccountID =101

Clients A cập nhật account AccountID =101, balance =1000-200 Client B cập nhật account AccountID =101, balance =1000-500 Client A: SELECT Accounts với AccountID =101; COMMIT; Client B: SELECT Accounts với AccountID =101; COMMIT; Quan sát kết hiển thị giải thích

4) Thiết lập ISOLATION LEVEL REPEATABLE READ (không thể đọc liệu hiệu chỉnh chưa commit transaction khác khơng có transaction khác hiệu chỉnh liệu đọc giao dịch tại cho đến transaction hoàn thành) client Thực yêu cầu sau: Client A, client B: thực lệnh SELECT bảng Accounts với AccountID =101

Clients A cập nhật accounts AccountID =101, balance =1000-200 Client B cập nhật accounts AccountID =101, balance =1000-500. Client A: SELECT Accounts với AccountID =101; COMMIT; Quan sát kết hiển thị giải thích

5) Giả sử có giao dịch chuyển tiền từ tài khoản 101 202 sau: Client A chuyển 100$ từ tài khoản 101 sang 202

Client B chuyển 200$ từ tài khoản 202 sang 101

(38)

INSERT INTO Accounts (AccountID ,balance) VALUES (202,2000); Client A: cập nhật balance account giảm 100 cho AccountID =101, cập nhật balance account tăng lên 100 cho AccountID =202

Client B: thiết lập ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM Accounts;

COMMIT; Client A: ROLLBACK;

SELECT * FROM Accounts; COMMIT;

Quan sát kết giải thích

7) Xóa tất liệu bảng Account, thêm lại dòng mới INSERT INTO Accounts (AccountID ,balance) VALUES (101,1000); INSERT INTO Accounts (AccountID ,balance) VALUES (202,2000); - Client A: thiết lập ISOLATION LEVEL REPEATABLE READ; Lấy Accounts có Balance>1000

- Client B:

INSERT INTO Accounts (AccountID ,balance) VALUES (303,3000);

COMMIT; - Client A:

SELECT * FROM Accounts WHERE balance > 1000; COMMIT;

(39)

Tuần 7-8: Audting

Bài tập :

Tạo giám sát đăng nhập thông qua window application log Tạo Audit server (lưu file application)

CREATE SERVER AUDIT KiemTraDoiTuong

TO FILE(FILEPATH='T:\BMCSDL\AUdit\AuditFile') /* substitute in here network drive */

WITH (ON_FAILURE=FAIL_OPERATION, QUEUE_DELAY=0); Bật lên (Enable) Audit Server

ALTER SERVER AUDIT KiemTraDoiTuong WITH (STATE=ON);

3 Tạo Server Specificatetionc

CREATE SERVER AUDIT SPECIFICATION ThucThiKiemTraDoiTuong FOR SERVER AUDIT KiemTraDoiTuong

add (AUDIT_CHANGE_GROUP) Bật lên Server Specificatetion

ALTER SERVER AUDIT SPECIFICATION ThucThiKiemTraDoiTuong WITH (STATE=ON);

5 Thay đổi đường dẫn

ALTER SERVER AUDIT KiemTraDoiTuong WITH (STATE=OFF); ALTER SERVER AUDIT KiemTraDoiTuong TO

FILE(FILEPATH='D:\Audit'); Mục tiêu:

(40)

ALTER SERVER AUDIT KiemTraDoiTuong WITH (STATE=ON);

6 Test

drop server audit Giam_Sat_Tong //thử xóa hay tạo audit ghi lại

7 Truy cập file

SELECT * FROM sys.server_file_audits

SELECT * FROM sys.fn_get_audit_file('D:\Audit\*',NULL,NULL); SELECT * FROM sys.dm_server_audit_status

Hình ví dụ Bài tập :

Tạo giám sát thay đổi liệu bảng (lưu file đọc từ file )

(41)

CREATE SERVER AUDIT KiemTraTao_Them

TO FILE(FILEPATH='D:\Audit1') /* substitute in here network drive */ WITH (ON_FAILURE=FAIL_OPERATION, QUEUE_DELAY=0);

2 Enable

ALTER SERVER AUDIT KiemTraTao_Them WITH (STATE=ON);

3 Tạo Database audit specificate

CREATE DATABASE AUDIT SPECIFICATION KiemTraTao_Them FOR SERVER AUDIT KiemTraTao_Them

ADD (SELECT , INSERTON [dbo].[NguoiLaoDong] BY dbo ) WITH (STATE = ON) ;

GO Test thử

select * from NguoiLaoDong

Insert into NguoiLaoDong(maNLD,hoTen) values ('NLD5000','Hoai-Yen') Insert into NguoiLaoDong(maNLD,hoTen) values ('NLD6000','Hoai-Yen sua cua user')

5 Đọc file

(42)(43)

Tuần 9-10: Mã hóa giải mã

BÀI 1: Encryption USE master

GO

CREATE DATABASE EncryptTest go

USE EncryptTest GO

CREATE TABLE TestTable (FirstCol INT, SecondCol VARBINARY(256)) go

/* Create Database Master Key */

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'SQLAuthority'

GO

/* Create Encryption Certificate */

CREATE CERTIFICATE EncryptTestCert WITH SUBJECT = 'SQLAuthority'

GO

/* Create Symmetric Key */

CREATE SYMMETRIC KEY TestTableKey

WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE EncryptTestCert

GO

Mục tiêu:

(44)

OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert

GO

UPDATE TestTable

SET EncryptSecondCol = ENCRYPTBYKEY(KEY_GUID('TestTableKey'),SecondCol) GO

INSERT INTO TestTable

values(1,ENCRYPTBYKEY(KEY_GUID('TestTableKey'),'Hello')) INSERT INTO TestTable

values(2,ENCRYPTBYKEY(KEY_GUID('TestTableKey'),'123456')) INSERT INTO TestTable

values(3,ENCRYPTBYKEY(KEY_GUID('TestTableKey'),'gogogo')) go

SELECT * FROM TestTable GO

/* Decrypt the data of the SecondCol */

OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert

SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(SecondCol)) AS DecryptSecondCol

FROM TestTable GO

CLOSE SYMMETRIC KEY TestTableKey GO

BÀI 2

/* Create Database */ USE master

GO

CREATE DATABASE EncryptTest

(45)

First, let’s create a sample table and then populate it with sample data We will now encrypt one of the two columns of the table

/* Create table and insert data in the table */ USE EncryptTest

GO

CREATE TABLE TestTable (FirstCol INT, SecondCol VARCHAR(50)) GO

INSERT INTO TestTable (FirstCol, SecondCol) SELECT 1,'First'

UNION ALL

SELECT 2,'Second' UNION ALL

SELECT 3,'Third' UNION ALL

SELECT 4,'Fourth' UNION ALL

SELECT 5,'Fifth' GO

/* Check the content of the TestTable */ USE EncryptTest

GO

SELECT *

FROM TestTable GO

The preceding code will return the result depicted in the subsequent figure

Result of the SQL query

(46)

Triple DES algorithm together with user-provided password to encrypt the keys /* Create Database Master Key */

USE EncryptTest GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'SQLAuthority'

GO

Certificates are used to safeguard encryption keys, which are used to encrypt data in the database SQL Server 2005 has the capability to generate self-signed X.509 certificates /* Create Encryption Certificate */

USE EncryptTest GO

CREATE CERTIFICATE EncryptTestCert WITH SUBJECT = 'SQLAuthority'

GO

The symmetric key can be encrypted by using various options such as certificate, password, symmetric key, and asymmetric key A number of different algorithms can be employed for encrypting key The supported algorithms are DES, TRIPLE_DES, RC2, RC4, RC4_128, DESX, AES_128, AES_192, and AES_256

/* Create Symmetric Key */ USE EncryptTest

GO

CREATE SYMMETRIC KEY TestTableKey

WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE EncryptTestCert

GO

Now add a column of type varbinary to the original table, which will store the encrypted value for the SecondCol

/* Encrypt Data using Key and Certificate

Add Columns which will hold the encrypted data in binary */ USE EncryptTest

(47)

ALTER TABLE TestTable

ADD EncryptSecondCol VARBINARY(256) GO

Before the key is used, it needs to be decrypted using the same method that was used for encrypting it In our example, we have used a certificate for encrypting the key Because of the same reason, we are using the same certificate for opening the key and making it

available for use Subsequent to opening it and making it available for use, we can use the encryptkey function and store the encrypted values in the database, in the

EncryptSecondCol column

/* Update binary column with encrypted data created by certificate and key */ USE EncryptTest

GO

OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert

UPDATE TestTable

SET EncryptSecondCol =ENCRYPTBYKEY(KEY_GUID('TestTableKey'),SecondCo l)

GO

We can drop the original SecondCol column, which we have now encrypted in the EncryptSecondCol column If you not want to drop the column, you can keep it for future comparison of the data when we decrypt the column

/* DROP original column which was encrypted for protect the data */ USE EncryptTest

GO

ALTER TABLE TestTable DROP COLUMN SecondCol GO

We can run a SELECT query on our database and verify if our data in the table is well protected and hackers will not be able to make use of it even if they somehow manage to reach the data

/* Check the content of the TestTable */ USE EncryptTest

(48)

SELECT *

FROM TestTable GO

Result of the previous SQL query

Authorized user can use the decryptbykey function to retrieve the original data from the encrypted column If Symmetric key is not open for decryption, it has to be decrypted using the same certificate that was used to encrypt it An important point to bear in mind here is that the original column and the decrypted column should have the same data types If their data types differ, incorrect values could be reproduced In our case, we have used a

VARCHAR data type for SecondCol and EncryptSecondCol /* Decrypt the data of the SecondCol */

USE EncryptTest GO

OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert

SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) ASDe cryptSecondCol

FROM TestTable GO

(49)

certificates are used only once or their use is over, they can be dropped as well Dropping a database will drop everything it contains – table, keys, certificates, all the data, to name a few

/* Clean up database */ USE EncryptTest

GO

CLOSE SYMMETRIC KEY TestTableKey GO

DROP SYMMETRIC KEY TestTableKey GO

DROP CERTIFICATE EncryptTestCert GO

DROP MASTER KEY GO

USE [master] GO

DROP DATABASE [EncryptTest] GO

Summary

Encryption is a very important security feature of SQL Server 2005 Long keys and

Ngày đăng: 17/02/2021, 16:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w