Quản trị hệ cơ sở dữ liệu _ Kiểm tra giữa kì thực hành Đại học Mở thành phố Hồ Chí Minh Mô tả thông tin file: Hướng dẫn chi tiết cách làm từng bước trong bài thực hành theo giáo trình dạy môn Quản trị hệ cơ sở dữ liệu của đại học Mở thành phố Hồ Chí Minh
Trang 1Các công cụ quản trị hệ cơ sở dữ liệu (phần 1/2)
BÀI 1: Sử dụng Object Explorer để tạo script, lưu script vào file “TaoCSDL_TestDB.sql”, nếu
chạy file script này thì sẽ tạo mới CSDL tên TestDB
USE master GO
CREATE DATABASE TestDB ON
(
Name 'TestDB', Tên logic
Filename 'D:\TestDB.mdf', vtri lưu file
Size = 10, kích thước khởi tạo
Maxsize = 50, kích thước tối đa
Filegrowth = 10 –-khi dlieu quá nhiều, kích thước size tự tăng 10 của size )
LOG ON
(
Name 'TestDB_Log', tên logic tập tin log
Filename 'D:\TestDB_log.ldf', vtri lưu file log
Size = 5,
Maxsize = 25MB,
Filegrowth = 5MB
)
BÀI 2: Sử dụng Object Explorer để đổi 1 SQL Instance từ Mixed mode qua Windows mode và
ngược lại Xem và đổi qua lại 2 mode ở mục Security của cửa sổ Property của Instance, các yêu cầu báo cáo:
a) Liệt kê các bước thực hiện đổi 1 SQL Instance từ Mixed mode qua Windows mode, sau khi đổi cần Disconnect, Stop SQL Service, Start lại SQL Service, Connect lại để xem kết quả đã thay đổi (login sa không dùng được nữa, phải connect bằng Windows mode) Để Stop/Start SQL service ta có thể dùng tool SQL Server Configuration Manager
− Chuột phải phần SQL D45 – Properties – Security
− Tìm SQL Server Configuration Manager, chuột phải và Stop SQL Service, Start lại SQL Service
Trang 2//dùng cái trên này cần Disable ‘sa’, chuyển dùng cái dưới
− Thử connect lại với ‘sa’
b) Liệt kê các bước thực hiện đổi 1 SQL Instance từ Windows mode qua Mixed mode, sau khi đổi cần Disconnect, Stop & Start lại SQL Service, Connect lại để xem kết quả đã thay đổi (login sa phải dùng lại được) Để login sa dùng lại được, ta phải vào property của login này để chỉnh enable (lúc mới chuyển qua mixed mode thì login sa vẫn còn bị disable)
− Chuột phải phần D45 – Properties - Security
Trang 3− SQL Server Configuration Manager: chuột phải và Stop SQL Service, Start lại SQL Service
− Kết nối sa: thành công
Bài 3: Sử dụng Object Explorer và Query Editor để tạo script gán quyền cho login Xem và gán
quyền trên server cho các login ở mục Permision của cửa sổ Property của Instance
− Tạo mới tài khoản login: security – new login
a) Tạo script gán quyền (GRANT) “thay đổi các login” cho 1 login
use [master] GO
GRANT ALTER ANY LOGIN TO [sqlLogin1] GO
b) Tạo script gán quyền là thành viên của 1 server role “dbcreater” cho 1 login
EXEC master sp_addsrvrolemember
@loginame = N'sqlLogin2', @rolename = N'dbcreator'
GO
Bài 4: Sử dụng Object Explorer và Query Editor để tạo script gán quyền cho database user Xem
và gán quyền trên dữ liệu cho database user ở mục Securables của cửa sổ Property của 1
database user
− Tạo database user của CSDL AdventureWorks: AdventureWorks – Security – Users – New user
a) Tạo script gán quyền (GRANT) Select cho 1 database user
use [AdventureWorks] GO
GRANT SELECT ON [HumanResources].[Department] TO [DBUSer1]
GO
− Sử dụng quyền SELECT:
Trang 4b) Tạo script gán quyền là thành viên của 1 database role
“db_datawriter” cho 1 database user
USE [AdventureWorks]
GO
EXEC sp_addrolemember N'db_datawriter', N'DBUSer2'
GO
− Kiểm tra: Object Explorer xem được thông tin các bảng
Bài 5: Sử dụng Registered Servers (chọn từ menu View của Managent studio, hay phím tắt
Ctr+Alt+G) để đăng ký tất cả các SQL Instance có thể đăng ký được Sau đó lập 1 server group và move các instance vào group Có thể thực hiện trên máy host / máy ảo
a) Chụp từng bước tạo mới 1 server group tên “Group1”
− Chuột phải Local Server Groups – New Server Group
b) Chụp từng bước đăng ký 1 instance vào cửa sổ Registered Servers
− Chuột phải Local Server Groups – New Server Registration
c) Chụp từng bước move instance vào group1
− Chuột phải nhóm 1 – Tasks – Move to …
Kết quả:
d) Chụp từng bước move instance đó ra khỏi Group1
− Chuột phải nhóm 1 – Tasks – Move to …
Kết quả:
Trang 5Các công cụ quản trị hệ cơ sở dữ liệu (phần 2/2)
Bài 1: Sử dụng chức năng tạo REPORT của cửa sổ SQL Server để xem thông tin các file
lưu trữ CSDL AdventureWorks Sau đó xuất report ra file Excel và PDF
, kết quả đc file pdf
Bài 2: Sử dụng chức năng tạo Script của TEMPLATE EXPLORER Các yêu cầu báo cáo:
a) Tạo script mà khi chạy script sẽ tạo mới CSDL tên ABC
USE master GO
CREATE DATABASE db1 GO
b) Tạo script mà khi chạy script sẽ xóa CSDL tên ABC vừa tạo ở trên
USE master GO
DROP DATABASE db1 GO
Bài 3: Sử dụng chức năng của công cụ SQL SERVER CONFIGURATION MANAGER
a) Chỉnh giao thức của service MSSQLSERVER (đây là tên service của default instance): Shared memory và TIP/IP
b) Chỉnh giao thức của client là Shared memory (ưu tiên 1) và TIP/IP (ưu tiên 2)
Trang 6c) Tạo 1 Alias tên Server1, ứng với server MSSQLSERVER, giao thức TCP/IP, port mặc định (không nhập)
Bài 4: Sử dụng công cụ giao diện console SQLCMD Trong Windows vào START - Run gõ
CMD - Enter vào mode console
a) Khởi chạy công cụ SQLCMD và thoát ra (sqlcmd để chạy công cụ, exit để thoát ra)
b) Xem hướng dẫn các đối số của câu lệnh (sqlcmd /?)
c) Đăng nhập vào default server dạng Windows mode (sqlcmd –S Server Name)
d) Đăng nhập vào default server dạng SQL Server mode (login name: sa, pasword: sa) (sqlcmd –
S WWW –U sa hay sqlcmd –U sa, sau đó nhập password sa)
e) Truy vấn data của bảng Contact thuộc schema Person, lấy 10 hàng 4 cột gồm ContactID, FirstName, LastName, EmailAddress
Trang 7
Kiến trúc lưu trữ
Bài 1: Tạo 1 CSDL mới tên MSSV_1 và thực hiện các yêu cầu sau
USE master
GO
CREATE DATABASE MSSV_1954052080_1 ON
(
Name 'MSSV_1954052080_1',
Filename 'D:\TestDB.mdf',
Size = 2MB,
Maxsize = 200MB,
Filegrowth = 10%
)
LOG ON
(
Name 'MSSV_1954052080_1_Log',
Filename 'D:\MSSV_1954052080_1.ldf',
Size = 2MB,
Maxsize = 200MB,
Filegrowth = 10%
)
GO
Trang 8a) Chỉnh Recovery model: Full
USE master
ALTER DATABASE MSSV_1954052080_1 SET RECOVERY FULL
SELECT name "Database Name", recovery_model_desc
From sys databases
b) Thêm Filegroup tên F1 có thuộc tính read only Sau khi thêm file vào file group, cài thuộc tính
ALTER DATABASE MSSV_1954052080_1 ADD FILEGROUP F1 -FileGroup F1
ALTER DATABASE MSSV_1954052080_1 MODIFY FILEGROUP F1 READONLY thuộc tính Read only
c) Thêm Filegroup tên F2 có thuộc tính default Sau khi thêm file vào file group thì cài thuộc tính
ALTER DATABASE MSSV_1954052080_1 ADD FILEGROUP F2 -FileGroup F2
ALTER DATABASE MSSV_1954052080_1 MODIFY FILEGROUP F1 READONLY thuộc tính Default
− Kiểm tra 2 câu b & c trong Database Properties
d) Thêm data file tên NDF1 thuộc filegroup F1
ALTER DATABASE MSSV_1954052080_1
ADD FILE (NAME 'NDF1 ', FILENAME 'D:\MSSV_1954052080_1_NDF1.ndf'
TO FILEGROUP F1
e) Thêm data file tên NDF2 thuộc filegroup F2
ALTER DATABASE MSSV_1954052080_1
ADD FILE (NAME 'NDF2 ', FILENAME 'D:\MSSV_1954052080_1_NDF2.ndf'
TO FILEGROUP F2
− Kiểm tra trong Database Properties
f) Thêm log file tên log1
ALTER DATABASE MSSV_1954052080_1
ADD LOG FILE (NAME 'log1', FILENAME 'D:\MSSV_1954052080_1_Log1.ldf'
− Kiểm tra trong Database Properties
Trang 9Bài 2: Chạy code sql script sau để tạo CSDL SmallWorks :
USE Master ;
CREATE DATABASE SmallWorks ON PRIMARY
( NAME = 'SmallWorksPrimary'
, FILENAME = 'C:\SmallWorks.mdf'
, SIZE = 10MB
, FILEGROWTH = 20 %
, MAXSIZE = 50MB )
, FILEGROUP FileGroup1
( NAME = 'SmallWorksData1'
, FILENAME = 'C:\SmallWorksData1.ndf'
, SIZE = 10MB
, FILEGROWTH = 20 %
, MAXSIZE = 50MB )
, FILEGROUP FileGroup2
( NAME = 'SmallWorksData2'
, FILENAME = 'D:\SmallWorksData2.ndf'
, SIZE = 10MB
, FILEGROWTH = 20 %
, MAXSIZE = 50MB )
LOG ON
( NAME = 'SmallWorks_log'
, FILENAME = 'C:\SmallWorks_log.ldf'
, SIZE = 10MB
, FILEGROWTH = 10 %
, MAXSIZE = 20MB );
GO
USE SmallWorks ;
GO
ALTER DATABASE SmallWorks
MODIFY FILEGROUP FileGroup1 DEFAULT;
GO
CREATE TABLE dbo Contact (
ContactID int NOT NULL , FirstName varchar( 75 ) NOT NULL , LastName varchar( 75 ) NOT NULL , EmailAddress varchar( 255 ) NULL , Phone varchar( 25 ) NULL ) ON FileGroup1 ;
CREATE TABLE dbo Product (
ProductID int NOT NULL , ProductName varchar( 75 ) NOT NULL , ProductNumber nvarchar( 25 ) NOT NULL , StandardCost money NOT NULL , ListPrice money NOT NULL ) ON FileGroup2 ;
INSERT dbo Contact
( ContactID , FirstName , LastName , EmailAddress , Phone ) SELECT ContactID , FirstName , LastName , EmailAddress ,
Phone
FROM AdventureWorks Person Contact
WHERE ContactID < 5000 ;
INSERT dbo Product
( ProductID , ProductName , ProductNumber , StandardCost ,
ListPrice ) SELECT ProductID , Name, ProductNumber , StandardCost ,
ListPrice
FROM AdventureWorks Production Product ;
ALTER DATABASE SmallWorks MODIFY FILEGROUP
FileGroup2 READONLY ; READWRITE
a) Giải thích các đặc điểm của CSDL SmallWorks (của các Data file, Log file, File group, Table,
dữ liệu của các Table)
SmallWorksData1 thuộc FileGroup1 FileGroup1 có thuộc tính Default mặc định
SmallWorksData2 thuộc FileGroup2 FileGroup2 có thuộc tính Read-Only, là chỉ có thể thực hiện thao tác xem
SmallWorks_log thuộc log file
b) Xem và chụp dữ liệu bảng Contact trước và sau khi thực hiện câu lệnh sau
USE SmallWorks
DELETE FROM dbo.Contact WHERE ContactID<500;
//trước sau vẫn chạy được
c) Xem và chụp dữ liệu bảng Product trước và sau khi thực hiện câu lệnh sau
USE SmallWorks
DELETE FROM dbo.Product WHERE ProductID<500;
//sau khi chạy câu lệnh, bị lỗi
− Không thể thực hiện xóa do bảng Product thuộc FileGroup2, mà FileGroup2 đang ở chế
độ Read-Only Cần thiết lập lại thuộc tính
ALTER DATABASE SmallWorks MODIFY FILEGROUP FileGroup2 READWRITE;
Bài 3: Thực hành về Synonym:
a) Nêu ý nghĩa, cách dùng của Synonym Synonym có thể dùng cho các loại đối tượng nào trong các loại views, tables, stored procedures, và functions?
Trang 10− Ý nghĩa: Tạo tên ảo cho 1 đối tượng cơ sở dữ liệu như views, tables, stored procedures,
và functions
− Cách dùng:
CREATE SYNONYM [schema_name_1.] Synonym_Name
FOR Object;
− Loại đối tượng:
b) Đặt Synonym NhanVien cho bảng HumanResources.Employee trong CSDL AdventureWorks, sau đó viết truy vấn xem dữ liệu bảng HumanResources.Employee dùng Synonym NhanVien
USE AdventureWorks
CREATE SYNONYM NhanVien
FOR AdventureWorks.HumanResources.Employee
Select From NhanVien xem DL
Bài 4: Tạo 1 CSDL mới tên MSSV_2 và thực hiện các yêu cầu sau:
USE master GO
CREATE DATABASE MSSV_1954052080_2
a) Thay đổi owner của CSDL bằng system stored procedure sp_changedbowner: xem owner của CSDL bằng cửa sổ property của CSDL, chạy lệnh thay đổi sang owner khác, sau đó xem lại owner mới
USE MSSV_1954052080_2 GO
sp_changedbowner 'sa' GO
b) Xem thông tin của (một và của nhiều) CSDL bằng system stored procedure sp_helpdb:
sp_helpdb
sp_helpdb 'MSSV_1954052080_2'
c) Trình bày các lựa chọn về auto growth, auto shrink và readonly, tiến hành chỉnh các lựa chọn này cho 1 CSDL:
d) Thực hiện bằng câu lệnh: Tạo mới 1 schema tên MySchema, tạo 1 bảng MyTable thuộc
MySchema, chuyển MyTable sang schema khác, xóa MySchema
− Tạo MySchema
USE MSSV_1954052080_2 GO
CREATE SCHEMA MySchema GO
− tạo 1 bảng MyTable thuộc MySchema
CREATE TABLE MySchema.SinhVien
(MaSV char(10) PRIMARY KEY, HoSV char(100), TenSV char(50)
) GO
Trang 11− Kiểm tra lại properties
− Chuyển MyTable sang schema khác
CREATE SCHEMA MySchema2 GO
ALTER SCHEMA MySchema2 TRANSFER MySchema.SinhVien GO
− xóa MySchema
DROP SCHEMA MySchema GO
Bảo mật (phần 1/2)
Trên máy host Windows 7, SQL 2008 developer, thực hiện các bài thực hành sau:
Bài 1: Tạo 2 login của SQL Server tên SQLLogin1, SQLLogin2 (chưa phân quyền, để toàn
bộ thông số mặc định, chụp login properties sau khi tạo)
USE master
CREATE LOGIN SQLLogin1 WITH PASSWORD '123'
CREATE LOGIN SQLLogin2 WITH PASSWORD '123'
Bài 2: Gán quyền cho SQLLogin1 để có thể tạo cơ sở dữ liệu nhưng không thể xem thấy được tất
cả các cơ sở dữ liệu do login khác tạo ra
− Login properties – Server Roles – tick dbcreator
Đăng nhập bên SQLLogin1:
o Các CSDL mà login SQLLogin1 nhìn thấy
o Tạo Database ABC: tạo thành công
Bài 3: Gán quyền cho SQLLogin2 để có thể tạo login mới, xem, sửa các login đã tạo Chụp đăng
nhập bằng SQLLogin2 và tạo thành công 1 login mới LogAFromLG2, sau đó sửa thành login LogBFromLG2
− Login properties – Server Roles – tick securityadmin
Đăng nhập bên SQLLogin1:
o Tạo Login LogAFromLG2: CREATE LOGIN LogAFromLG2 WITH PASSWORD '123'
o Đổi tên: ALTER LOGIN LogAFromLG2 WITH NAME LogBFromLG2
Bài 4: Tạo SQLLogin3 và gán cho login SQLLogin3 thành database user tên
SQLLogin3_DBuser1 của cơ sở dữ liệu AdventureWorks
− Tạo SQLLogin3: CREATE LOGIN SQLLogin3 WITH PASSWORD '123'
− Gán cho login SQLLogin3 thành database user tên SQLLogin3_DBuser1 của cơ sở dữ liệu AdventureWorks:
Trang 12Bài 5: Gán quyền cho SQLLogin3_DBuser1 chỉ được xem và thêm dữ liệu nhưng không cho xóa
dữ liệu bảng department, và kiểm tra quyền
− Phân quyền
− Kiểm tra
Trang 13Trên máy ảo Windows 2003 Server, SQL 2005 developer, thực hiện các bài thực hành sau:
Bài 6: Tạo 1 domain account mới tên MSSV của SV làm bài, tạo login từ account của domain này,
và đăng nhập thành công vào Domain và SQL Server (chưa phân quyền, chụp màn hình chỉnh domain policies, chụp khi đăng nhập thành công bằng login MSSV)
− Tạo Domain account:
o B1: Program – Administrative Tools - Active Directory Users and Computers
o B2: New user: nhập info (pass: có chữ hoa và số)
o B3: Tiếp, chọn Domain Controller Security Policy, thêm account vừa tạo, KQ:
o B4: Đăng nhập vào account vừa tạo:
− Tạo Login từ account vừa tạo: (acc MSSV)
o Tạo Login: security – Login – new login
o Đăng nhập
− Kiểm tra phân quyền: server roles chưa có tick gì cả
Bài 7: Gán cho login MSSV thành database user tên DBuser2 của cơ sở dữ liệu AdventureWorks
Bên login sa:
− tạo database user:
Bài 8: Gán quyền cho database user DBuser2 để chỉ có quyền duy nhất: SELECT trên 2 cột
EmployeeID và BirthDate của bảng Employee
Trang 14Bên login sa:
− Phân quyền:
Bên login MSSV:
− Kiểm thử:
Bài 9: Tạo 1 login của SQL Server tên SQLLogin3, gán thành user DBuser3 của cơ sở dữ liệu
AdventureWorks, gán DBuser3 là thành viên Database role db_datareader Đăng nhập bằng SQLLogin3, hỏi:
a) Info bảng hiển thị full, vẫn select được
b) Chọn Deny quyền View definition trên table HumanResouces.Department của DBuser3
Bên login sa:
o CSDL – security – users – Dbuser3 (properties) – Securable – Add - lựa bảng và tick quyền ở phần bảng phía dưới
Bên login SQLLogin3:
* So sánh: Bảng HumanResouces.Department không còn hiển thị bên phần Object
Explorer
* Chỉ ẩn hiển thị bảng nhưng vẫn được quyền xem dữ liệu trong bảng này
Trang 15c) Lấy lại quyền View definition, deny quyền Select trên table HumanResouces.Department của DBuser3
Bên login sa:
o CSDL – security – users – Dbuser3 (properties) – Securable – Add - lựa bảng và tick quyền ở phần bảng phía dưới
Bên login SQLLogin3:
* Ta thấy, bảng HumanResouces.Department không được hiển thị
* Không thể xem do ta đã giới hạn quyền xem
Bài 10: Tạo 1 login của SQL Server tên SQLLogin4, gán thành user DBuser4 của cơ sở dữ liệu
AdventureWorks Tìm phương án gán quyền để DBuser4 có thể sao lưu CSDL AdventureWorks, nhưng không thấy nội dung bên trong (View definition) của CSDL AdventureWorks Liệt kê và chụp các bước thực hiện
Bên login sa:
o Tạo login SQLLogin4 và gán thành DBuser4:
o Phân quyền chỉ cho sao lưu: tick Grant (backup database & backup log), deny (view definition)
Bên login SQLLogin4:
o Kiểm thử hiển thị: ko hiển thị
o Kiểm thử sao lưu CSDL: thành công
Bảo mật (phần 2/2)
Bài 1: Dùng hàm EncryptByPassPhrase và DecryptByPassPhrase để mã hóa và giải mã hóa một chuỗi văn bản unicode (tiếng Việt có dấu)
− Tạo 1 database BaoMat, tạo 1 bảng TaiKhoan có 3 cột Tên đăng nhập, mật khẩu, mật khẩu mã hóa Thêm các tài khoản người dùng vào bảng TaiKhoan đó
Create Database BaoMat Go -tao DB
Use BaoMat Go
Create Table TaiKhoan
(
ID varchar (20) primary key,
Pass nvarchar (50),
EncrypyedData varbinary (8000)
) -tao bang
-them DL
Insert into TaiKhoan
Values ('An', '12345', EncryptByPassPhrase 'An', '12345'))
Insert into TaiKhoan
Values ('Binh', '12358', EncryptByPassPhrase 'An', '12358'))
Bài 2: Tạo Database Master key bằng password là ‘ dkjuw4r$$#1946kcj$ngJKL95Q ’
Use BaoMat
Create Master Key
Encryption By password 'dkjuw4r$$#1946kcj$ngJKL95Q'
Go
Select name, is_master_key_encrypted_by_server From sys databases
Bài 3: Tạo một Certificate tên HRCert
Create Certificate HRCert
With Subject 'HRCert';
Go