You are on page 1of 125

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN


-------------o0o------------

BÀI GIẢNG

Tên môn học: Hệ quản trị cơ sở dữ liệu nâng cao


Hệ đào tạo: Đại học
Ngành: HTTT
Khoa: Công nghệ thông tin
Giảng viên biên soạn: Nguyễn Kim Sơn
Nguyễn Thu Hương
Hồ Thị Tuyến
Năm học: 2019 - 2020

Năm 2020

1
2
MỤC LỤC

CHƯƠNG 1. CÀI ĐẶT CẤU HÌNH VÀ LÀM VIỆC VỚI MANAGEMENT


STUDIO ................................................................................................................. 6
1.1. Cấu hình SQL Server để kết nối từ xa qua Internet ..................................... 6
1.1.1. Cài đặt SQL Server................................................................................ 7
1.1.2. Cấu hình SQL Server để mở kết nối từ xa. ......................................... 17
1.1.3. Tạo một user để thực hiện kết nối từ xa .............................................. 21
1.1.4. Cấu hình Firewall trên Server cho phép nhận kết nối đến qua cổng kết
nối của SQL Server ....................................................................................... 22
1.1.5. Cấu hình Router cho phép kết nối đến thông qua cổng của kết nối SQL
Server............................................................................................................. 26
1.2. Làm việc với SQL Server Management Studio ......................................... 31
1.2.1. Giới thiệu về SQL Server Management Studio .................................. 31
1.2.2. Thao tác trên Object Explorer ............................................................. 34
1.2.3. Database Object ................................................................................... 34
1.2.4. Backup & Restore ............................................................................... 34
CHƯƠNG 2. HÀM TRONG SQL SERVER (FUNCTION) .............................. 36
2.1. Giới thiệu ................................................................................................... 36
2.2. Hàm hệ thống ............................................................................................. 36
2.3. Hàm do người dùng định nghĩa ................................................................. 37
2.3.1. Scalar Functions .................................................................................. 37
2.3.2. Table-Valued Functions ...................................................................... 38
2.3.3. Sửa đổi cấu trúc hàm. .......................................................................... 38
CHƯƠNG 3. KỸ THUẬT SYNONYM TRONG SQL SERVER ...................... 40
3.1. Truy cập dữ liệu từ xa ................................................................................ 40
3.2. Kỹ thuật Synonym ..................................................................................... 43
3.2.1. Synonym là gì? .................................................................................... 43
3.2.2 Khai báo Synonym ............................................................................... 43
CHƯƠNG 4. DỊCH VỤ FULL-TEXT SEARCH TRONG SQL SERVER ........ 48
4.1 Giới thiệu Full-text Search (FTS) ............................................................... 48

3
4.2. Cấu trúc tìm kiếm theo Full-text Search .................................................... 49
4.2.1 Thành phần của FTS............................................................................. 50
4.2.2 Cơ chế hoạt động của FTS ................................................................... 51
4.3 Cấu hình Full-text Catalog (FTC) .............................................................. 52
4.3.1 Cách tạo FullTextCatalog và tạo FullTextIndex .................................. 53
4.3.2 Xóa FullText Catalog và FullTextIndex .............................................. 56
4.4 Sử dụng hàm trong câu truy vấn ................................................................. 57
4.4.1 Hàm CONTAINS ................................................................................. 57
4.4.2 Hàm FREETEXT ................................................................................. 61
4.4.3 Hàm CONTAINSTABLE .................................................................... 62
4.4.4 Hàm FREETEXTTABLE .................................................................... 63
CHƯƠNG 5. DỊCH VỤ REPORT TRONG SQL SERVER ............................... 66
5.1 Giới thiệu Report Service ........................................................................... 66
5.2 Các thành phần của Report Service ............................................................ 67
5.2.1 Chức năng chính ................................................................................... 67
5.2.2. Thành phần chính ................................................................................ 69
5.3 Tạo Report trong SQL Server ..................................................................... 70
5.3.1 Tạo Report bằng MS ............................................................................ 70
5.3.2 Thêm mới Report ................................................................................. 80
5.3.3 Khai báo biểu thức ............................................................................... 82
5.3.4 Định dạng số ......................................................................................... 83
5.3.5 Sử dụng hàm ......................................................................................... 84
5.3.6 Tham số trong Report ........................................................................... 87
5.3.7 Xuất dữ liệu ra tập tin ........................................................................... 90
5.3.8 Chạy chương trình ở chế độ Debug ..................................................... 91
5.3.9 Triển khai Report.................................................................................. 92
5.4 Cấu hình Report server ............................................................................... 94
CHƯƠNG 6. CHỨC NĂNG QUẢN TRỊ SQL SERVER .................................. 99
6.1 Backup và Restore cơ sở dữ liệu ................................................................ 99
6.1.1 Backup cơ sở dữ liệu .......................................................................... 100
6.1.2 Restore cơ sở dữ liệu .......................................................................... 104

4
6.2 Attach và Detach cơ sở dữ liệu ................................................................. 108
6.2.1 Attach cơ sở dữ liệu............................................................................ 108
6.2.2 Detach cơ sở dữ liệu ........................................................................... 110
6.3 Copy cơ sở dữ liệu .................................................................................... 111
6.4 Import và Export cơ sở dữ liệu ................................................................. 112
6.5 Chức năng tự động .................................................................................... 118
6.6 Cấu hình IP và Port ................................................................................... 123

5
CHƯƠNG 1. CÀI ĐẶT CẤU HÌNH VÀ LÀM VIỆC VỚI
MANAGEMENT STUDIO
1.1. Cấu hình SQL Server để kết nối từ xa qua Internet

Hệ quản trị cơ sở dữ liệu Microsoft SQL Server của Microsoft được đánh giá
là một trong những hệ quản trị cơ sở dữ liệu tốt và mạnh nhất hiện nay. Nếu chúng
ta là một nhà phát triển ứng dụng cũng như phát triển website trên môi trường
Windows thì không thể không biết đến SQL Server.
Khi phát triển các ứng dụng dạng Desktop thì chúng ta thường không quan
tâm và thậm chí có thể không cần biết đến tính năng hỗ trợ kết nối từ xa của SQL
Server. Nhưng khi phát triển các ứng dụng Web, hoặc các ứng dụng desktop đòi
hỏi dữ liệu tập trung tức thì để phục vụ cho việc ra báo cáo mà chương trình thì lại
cách xa nhau về mặt địa lý, thì chúng ta sẽ cần đến tính năng kết nối từ xa của SQL
Server. Tính năng này có trên tất cả các phiên bản SQL Server.
Trong tài liệu này, chúng tôi thực hiện hướng dẫn cài đặt và cấu hình trên
phiên bản SQL Server 2014, các phiên bản khác việc thực hiện hoàn toàn tương
tự.
Sau khi hoàn thành hướng dẫn này:
Chúng ta có thể cài đặt SQL Server
Chúng ta có kết nối vào SQL Server cài trên máy tính của mình từ bất kỳ máy
tính nào có nối mạng Internet từ bất cứ đâu.
Các bước thực hiện:
1/ Cài đặt SQL Server
2/ Cấu hình SQL Server để mở kết nối từ xa.
3/ Tạo user để thực hiện kết nối từ xa
4/ Cấu hình Firewall trên Server cho phép nhận kết nối đến qua cổng kết nối
của SQL Server
5/ Cấu hình Router cho phép kết nối đến thông qua cổng của kết nối SQL
Server

6
1.1.1. Cài đặt SQL Server

Microsoft SQL Server hiện đang nhiều loại phiên bản khác nhau như:
Enterprise, Standard, Developer, Workgroup, Express. Tùy vào mục đích và nhu
cầu của người sử dụng mà lựa chọn ấn bản thích hợp. Trong khuôn khổ bài viết
này, chúng tôi khuyến khích và sẽ hướng dẫn cài đặt Microsoft SQL Server 2014
Express, một phiên bản miễn phí của Microsoft và không giới hạn số người sử
dụng.Yêu cầu về phần cứng và hệ điều hành sử dụng
– Bộ xử lý: Trên nền tảng 32-bit, SQL Server 2014 yêu cầu bộ xử lý Pentium
III hoặc tốc độ nhanh hơn tốc độ 1.0 Ghz hoặc cao hơn. Trên nền tảng 64-bit, SQL
Server 2014 yêu cầu Intel Xeon, AMD Opteron hoặc Athlon 64 với tốc độ tối thiểu
là 2,0 Ghz.
– Bộ nhớ vật lý (RAM): Tối thiểu 512 MB RAM cho Express Edition, nhưng
tối thiểu cho tất cả các phiên bản khác là 1 GB RAM (tối thiểu là 2 GB nếu Dịch
vụ Chất lượng Chất lượng sẽ được cài đặt). Khuyến nghị số lượng RAM cho
Express Edition là 1 GB RAM, nhưng số lượng RAM đề nghị cho tất cả các phiên
bản khác là 4 GB RAM.
Bộ cài đặt:
1. Để cài đặt SQL Server 2014 Express, máy tính phải có bộ Windows
Installer 3.1 trở lên, download về tại địa chỉ:
http://go.microsoft.com/fwlink/?LinkId=46459
2. Microsoft.NET Framework 3.5
Hệ điều hành 32bit: https://www.microsoft.com/en-
us/download/confirmation.aspx?id=21.
Hệ điều hành 64bit: http://go.microsoft.com/fwlink/?LinkId=55734
3. Chúng ta phải có file cài đặt SQL Server 2014 Express, chúng ta có thể
download miễn phí từ Website của Microsoft tại địa chỉ:
https://www.microsoft.com/en-us/download/details.aspx?id=42299

7
Hình 1.1. Download SQL Server 2014 Express
Khi nhấn vào Download sẽ có nhiều file lựa chọn. Trong tài liệu này, chúng
tôi sẽ hướng cài đặt gói đầy đủ nhất (bao gồm Microsoft SQL Server, SQL
Management Studio và một vài công cụ nâng cao khác).
• SQLEXPRADV_x86_ENU.exe
• SQLEXPRADV_x64_ENU.exe
Chúng ta sẽ tải một trong hai file trên tùy thuộc vào hệ điều hành của máy
tính là 32 bit hay 64 bit.

Hình 1.2. Tùy chọn file download tùy theo hệ điều hành
Sau khi download về, hãy lưu vào một thư mục nào đó để bắt đầu tiến hành
cài đặt.
Sau khi tải về máy tính cá nhân xong, chúng ta tiến hành chạy file cài đặt.
Lựa chọn đường dẫn lưu trữ file cài giải nén sau đó chọn Ok.

8
Hình 1.3. Chọn đường dẫn lưu file sau khi giải nén
Thực hiện giải nén

Hình 1.4. Giải nén


Khi quá trình giải nén hoàn tất, hộp thoại SQL Server Installation Center xuất
hiện.
Do chúng ta cài đặt mới hoàn toàn Microsoft SQL Server 2014 Express nên
chúng ta chọn New Microsoft SQL Server…

Hình 1.5. Tùy chọn cài đặt phần mềm

9
Chấp nhận điều khoản sử dụng và cài đặt từ phía nhà cung cấp.

Hình 1.6. Chấp nhận điều khoản sử dụng và cài đặt


Ở thiết lập này, nếu muốn Microsoft SQL Server 2014 Express được kiểm
tra và cập nhật máy hệ điều hành đang dùng kiểm tra và cập nhật thì chúng ta
chọn Use Microsoft Update check for updates.

10
Hình 1.7. Thiết lập cài đặt
Chờ đợi

Hình 1.8. Giao diện cài đặt

11
Khi cài đặt và khởi tạo môi trường quản lý dữ liệu với Microsoft SQL Server
của chúng ta là tận dụng hết tất cả các tính năng của Microsoft SQL Server 2014
Express nên chúng ta chọn cài đặt hết tất cả các tính năng.

Hình 1.9. Lựa chọn các tính năng


Sau đó, trong trường hợp nếu xuất hiện hộp thoại Feature Rules, báo lỗi máy
tính của chúng ta bị thiếu một số cài đặt cần thiết, thì chúng ta cần phải bổ sung.

12
Hình 1.10. Hộp thoại Feature Rules
Ví dụ như hình bên trên, báo lỗi bị thiếu Microsoft.NET Framework 3.5 Service
Pack 1, chúng ta vào địa chỉ này https://www.microsoft.com/en-
us/download/details.aspx?displaylang=en&id=22 để tải về và chạy file cài đặt.

Hình 1.11. Tải bộ cài Microsoft.NET Framework 3.5 Service Pack 1


Còn nếu trong trường hợp không bị thiếu những file cài đặt trên, chúng ta có
thể bỏ qua những bước cập nhật trên. Khi đó sẽ tiến trình cài đặt sẽ chuyển thẳng
sang hộp thoại Instance Configuration như bên dưới. Chúng ta chọn Next.

13
Hình 1.12. Hộp thoại Instance Configuration
Tiếp tục chọn Next.

Hình 1.13. Hộp thoại Server Configuration

14
Tại bước này chúng ta có 2 lựa chọn. Nếu chọn Mixed Mode, điều đó có
nghĩa là chúng ta sẽ login vào Microsoft SQL Server có sử dụng Password. Ở đây,
chúng tôi chọn Windowns authentication mode như hình dưới và chọn Next.

Hình 1.14. Hộp thoại Database Engine Configuration


Tiếp theo chúng ta chọn Install and configure để tiến hành cài đặt Microsoft
SQL Server 2014 Express và chọn Next.

15
Hình 1.15. Hộp thoại Reporting Services Configuration
Đến bước này, chúng ta chỉ cần chờ đợi để hoàn tất bước cài đặt cuối cùng.

Hình 1.16. Installation Progress

16
Sau khi cài đặt hoàn tất, chúng ta cần phải khởi động lại máy tính.
Đến đây chúng ta đã cài đặt xong SQL Server 2014 Express và các công cụ
để quản lý database của nó. Từ đây chúng ta có thể bắt đầu sử dụng các tính năng
quản lý của hệ quản trị cơ sở dữ liệu này rồi. Cách thức sử dụng các tính năng phổ
biến cũng như một vài tính năng hay của nó mình sẽ đề cập đến trong các bài sau.
1.1.2. Cấu hình SQL Server để mở kết nối từ xa

Mục đích là kích hoạt tính năng cho phép kết nối từ xa của SQL Server và
thiết lập cổng nghe (Listenning Port) cho SQL Server.
Để thực hiện chúng ta vào Start → All Programs → Microsoft SQL Server
2014 → Configuration Tools → SQL Server Configuration Manager.
Ở menu bên trái, chọn vào mục SQL Server 2014 Services → Bên phải tìm
mục SQL Server (MSSQLSERVER) (chú ý đây là dịch vụ cơ bản của SQL Server,
tên của nó tùy thuộc vào Instant của SQL mà chúng ta đã cài đặt vào máy, trên
máy tính của tôi là MSSQLSERVER, có thể Instant trên máy tính của bạn sẽ khác).
Click phải vào và chọn Properties (xem hình)

Hình 1.17. SQL Server Properties


Trong Tab Log On, click chọn vào Built-In Account, chọn vào Network
Service như trong hình, Click OK

17
Hình 1.18. SQL Server Properties- Tab Log On
Quay lại màn hình SQL Server Configuration Manager → ở menu bên trái
tiếp tục click vào mục SQL Server 2014 Network Configuration để mở ra menu
con Protocols for MSSQLSERRVER (tên trên máy tính của bạn có thể khác), chọn
vào mục này → bên phải tìm mục có tên là TCP/IP, click phải vào nó và chọn
Properties (xem hình)

18
Hình 1.19. SQL Server Configuration Manager
Trong cửa sổ mở ra, ở Tab Protocols, mục Enabled chọn vào Yes

Hình 1.20. TCP/IP Properties - Protacol

19
Tiếp tục click qua Tab IP Address → Sẽ xuất hiện list các IP (IP1, IP2,…)
đây là danh sách các IP hình thành khi máy tính có kết nối vào các mạng LAN
khác nhau

Hình 1.21. TCP/IP Properties – IP Addresses


Hãy chọn một IP nào đó bất kỳ (ví dụ chúng tôi chọn IP1)
- Ở mục IP Address chúng ta xóa đi và gõ lại địa chỉ IP của máy tính trong
mạng LAN (chú ý đây là địa chỉ IP của máy chúng ta trong mạng LAN – ví dụ của
chúng ta là 192.168.1.2)
- Ở mục Active - chọn Yes, mục Enabled - chọn Yes
- Ở mục TCP Port, khai báo cổng share mặc định của SQL, chúng ta có thể
để mặc định là 1433
- Click OK
Restart lại SQL Server. (bằng cách chọn vào mục SQL Server 2014 Services,
bên phải click phải vào mục SQL Server (MSSQLSERVER) → Chọn Restart)

20
1.1.3. Tạo một user để thực hiện kết nối từ xa

Mở Start → All Programs → Microsoft SQL Server 2014 → SQL Server


Management Studio → Connect vào Server
Ở menu bên trái, mở mục Security → Login → Nhấn chuột phải và chọn
New Login

Hình 1.22. New Login


Gõ vào Tên User, Password như trong hình, bỏ dấu ở mục Enforce password
Expiration → Nhấn OK

21
Hình 1.23. New Login – Select page
1.1.4. Cấu hình Firewall trên Server cho phép nhận kết nối đến qua cổng
kết nối của SQL Server
Mục đích của việc này là để mở cổng Firewall của Windows cho phép nhận
kết nối từ bên ngoài qua cổng share của SQL, mặc định là cổng 1433
Trên Windows Vista, Windows 7 trở lên:
Vào Start → Control Panel → Windows Firewall → Ở menu bên trái chọn
Advanced settings
Menu bên trái, click vào mục Inbound Rules
Tiếp tục ở Menu bên phải, click vào mục New Rule
Trong cửa sổ mới hiện ra, đánh dấu vào mục Port như hình → Nhấn Next

22
Hình 1.24. Rule Type
Tiếp theo nhấn chọn vào mục TCP và Specific local Ports, gõ vào 1433 (số
cổng share của SQL Server đã config trong bước 2) → Nhấn Next

Hình 1.25. Protocol and Ports

23
Trên màn hình tiếp theo, đánh dấu chọn vào mục Allow the connection →
Next

Hình 1.26. Action


Trong màn hình tiếp theo, chọn kiểu mạng sẽ áp dụng mở cổng này, đánh
dấu vào cả 3 mục Domain, Private, Public → Nhấn Next

24
Hình 1.27. Profile
Trong màn hình tiếp theo, gõ tên kết nối và Description tùy ý → Nhấn Finish

25
Hình 1.28. Name
Log Off hoặc Restart lại máy

1.1.5. Cấu hình Router cho phép kết nối đến thông qua cổng của kết nối
SQL Server
Mục đích của việc này:
- Mở cổng của Router trên mạng của chúng ta để cho phép nhận kết nối từ
bên ngoài mạng (từ Internet) qua cổng kết nối của SQL Server (Port 1433).
- Chuyển hướng (Forward) kết nối về đến đúng máy mà chúng ta lựa chọn
làm Server khi Router nhận được yêu cầu qua cổng 1433
Tùy loại Router mà chúng ta đang sử dụng, việc cấu hình có thể khác nhau
đôi chút. Ở đây chúng tôi đang thực hiện config trên một loại Router của Dlink.
Các loại Router khác chúng ta có thể tự tìm hiểu thêm. Cách thiết lập trên các loại
Router cơ bản là giống nhau, chỉ khác nhau về cách bố trí trên menu thôi.

26
Sau đây là các bước đơn giản để kiểm tra việc này và cấu hình để mở cổng
kết nối SQL Server:
Bước 1: Khởi động dịch vụ MS SQL Server nếu chúng ta đang để ở chế độ
“manual” thay vì “automatic”.
Bước 2: Chạy chương trình CMD.exe

Hình 1.29. Chạy chương trình CMD.exe


Bước 3: Thực hiện lệnh netstat -an -P TCP

27
Hình 1.30. Thực hiện lệnh netstat – an – P TCP
Quan sát trong các thông tin nhận được sau khi thực hiện lệnh trên, nếu không
thấy xuất hiện cổng 1433 (cổng mặc định của MS SQL Server) thì đây là nguyên
nhân. Chúng ta bắt đầu tiến hành các bước tiếp theo để thực hiện cấu hình cần thiết
để mở cổng 1433.
Bước 4: Chạy chương trình quản lý cấu hình của MS SQL Server
Chọn Start → Microsoft SQL Server 2014 → Configuration Tools → SQL
Server Configuration Management.
Bước 5: Kiểm tra thông tin trong phần “SQL Server Network Configuration”

28
Hình 1.31. Kiểm tra thông tin trong phần “SQL Server Network
Configuration”
Thông tin này cho thấy TCP/IP đang bị vô hiệu hóa.
Bước 6: Chọn giao thức TCP/IP để thay đổi cấu hình

Hình 1.32. Cấu hình TCP/IP

29
Hình 1.33. Thay đổi cấu hình TCP/IP
và thêm thông tin về cổng trong tab “IP Address” (chúng ta có thể đổi sang cổng
khác 1433)

Hình 1.34. Thay đổi cấu hình IP Addresses

30
Bước 7. Tiếp theo là khởi động lại dịch vụ MS SQL Server và quay lại các
bước 1, 2, 3 ở trên để kiểm tra lại kết quả cấu hình.
1.2. Làm việc với SQL Server Management Studio

1.2.1. Giới thiệu về SQL Server Management Studio

Phiên bản đầu tiên của Microsoft SQL Server được ra đời lần đầu tiên vào
năm 1989 cho các hệ điều hành chạy 16 bít với SQL Server phiên bản 1.0 và tiếp
tục phát triển cho đến ngày nay. Kể từ version 6.5, SQL Server của Microsoft mới
được thị trường chấp nhận rộng rãi. Sau đó Microsoft đã cải tiến và viết lại một
engine mới cho SQL Server 7.0. Cho đến phiên bản 8.0 thì những cải tiến chủ yếu
là mở rộng các tính năng về web.

Hình 1.35. Cửa sổ Object Explorer


Trong đó, Microsoft SQL Server Management Studio là một công cụ trực
quan dùng để quản lý SQL Server. Với SQL Server Management Studio chúng ta
có thể thực hiện được các tương tác với database bằng câu lệnh hoặc trên giao diện
người dùng. SQL Server Management Studio được thiết kế đơn giản và dễ sử dụng
nhưng chúng ta cũng cần có thời gian nhất định để làm quen với nó.
Khi mở SQL Server Management Studio, đầu tiên chúng ta sẽ phải đăng
nhập.

31
Hình 1.36. Cửa sổ Connect to Server
Như ở phần trước chúng ta có đề cập, khi cài đặt ở phần chọn quyền login,
chúng ta chọn Mixed Mode tức là cho phép login bằng cả 2 quyền: Windows và
SQL Server. Nếu chúng ta chọn server type như hình, nhập tên server của mình
(thường nó sẽ tự động có) sau đó chọn quyền login (nếu chọn quyền SQL Server
chúng ta sẽ nhập Username và Password), click Connect.

Hình 1.37. Lựa chọn quyền Login

32
Hình 1.38. Windows Authentication

Hình 1.39. SQL Server Authentication


Giao diện của SQL Server Management Studio

Hình 1.40. Giao diện của SQL Server Management Studio

33
1.2.2. Thao tác trên Object Explorer

- Thao tác tạo và quản lý tệp CSDL


- Xem và thay đổi các thuộc tính.
- Tạo và quản lý các đối tượng như Table, View, …
- Cấp phát và thu hồi các quyền và nhóm quyền
- Quản lý các gói Integration Services.
- Xem các tập tin log của Windows và SQL Server.
- Quản lý các SQL Server Agent
1.2.3. Database Object

Đây là nơi lưu trữ database của SQL cũng như của user. Với database của
SQL (System Database), mặc định sẽ có các database sau:
master
model
msdb
Tempdb
Hoặc có thêm các tùy chọn cài đặt:
ReportServer
ReportServerTempDB
AdventureWorks
AdventureWorksDW
Các database này như là những templates mẫu được Microsoft xây dựng sẵn
để làm cơ sở tham khảo cho người dùng. Chúng ta có thể mở từng mục của một
database mẫu bất kì để tiến hành xem cấu trúc chuẩn mà Microsoft đã xây dựng
hoặc khi gặp thắc mắc về các vấn đề trong quá trình tương tác với database chúng
ta có thể vào xem các dạng tương tự của nó để giải quyết vấn đề của mình.
1.2.4. Backup & Restore

- Backup
Click chuột phải trên Database cần backup → Tasks → Backup
Thực hiện theo hướng dẫn wizard
- Restore

34
Click chuột phải trên Database → chọn Restore → chọn tập tin đã backup
cần restore
Thực hiện theo hướng dẫn wizard
- Detach & Attach
Detach: gỡ DB (Tập tin .mdf và .ldf) ra khỏi Management Studio
Attach: đưa tập tin .mdf và .ldf vào Management Studio

35
CHƯƠNG 2. HÀM TRONG SQL SERVER (FUNCTION)
2.1. Giới thiệu
Function (Hàm) là một đối tượng trong cơ sở dữ liệu bao gồm một tập nhiều
câu lệnh được nhóm lại với nhau và được tạo ra với mục đích sử dụng lại. Trong
SQL Server, hàm được lưu trữ và người sử dụng có thể truyền các tham số vào
cũng như trả về các giá trị.
Hàm trong SQL Server bao gồm 2 loại: Hàm có sẵn; Hàm do người dùng
định nghĩa (user-defined).
- Hàm có sẵn: Là các hàm do hệ thống SQL Server cung cấp như: hàm quản
trị hệ thống, hàm ngày tháng, hàm toán học…
- Hàm do người dùng định nghĩa: Là các hàm được định nghĩa bởi người
dùng. Hàm do người dùng định nghĩa là tập các phát biểu T_SQL kết hợp tạo nên
hàm, chúng ta có thể gọi thực thi các hàm này như là một đơn vị độc lập.

2.2. Hàm hệ thống


Trong SQL Server có rất nhiều các hàm được định nghĩa sẵn. Có thể chia
thành các hàm: Hàm hệ thống (Systems Functions); Hàm về chuỗi (String
Functions); Hàm về ngày tháng (Date and Time Functions); Hàm toán học
(Mathematical Function), … Sau đây chúng tôi xin phép đề cập đến một số hàm
hệ thống:
- Hàm @@CONNECTIONS: Hàm này trả về tổng cộng số lượng user kết nối kể
từ khi SQL Server khởi động.
Select @@CONNECTIONS
- Hàm @@CPU_BUSY: Hàm này trả về số lượng milion giây của CPU làm việc
kể từ khi SQL Server khởi động, với giá trị này chúng ta có thể hiển thị phần trăm
thời gian CPU chiếm bởi SQL Server.
Select @@CPU_BUSY
- Hàm @@CURSOR_ROWS: Hàm này trả về số mẩu tin Cursor đang thực hiện
kể từ mẩu tin bắt đầu.
Select @@CURSOR_ROWS
- Hàm @@DATEFIRST: Hàm trả về số ngày trong tuần, ngày đầu tuần là thứ 2

36
Select @@DATEFIRST
- Hàm @@ERROR: Hàm này có giá trị trả về 0 thì không có lỗi, ngược lại có giá
trị khác 0 thì lỗi xảy ra. Hàm này chỉ có hiệu lực trên kết nối hiện tại.
- Hàm @@IDENTITY: Hàm này trả về giá trị Identity của bảng có chứa cột
Identity và thường được sử dụng trong các phát biểu Select hoặc Insert.
- Hàm @@MAX_CONNECTIONS: Hàm này trả về giá trị số cho biết có bao
nhiêu User cho phép kết nối vào cơ sở dữ liệu.

2.3. Hàm do người dùng định nghĩa


2.3.1. Scalar Functions
Một Scalar Function là hàm trả về một giá trị với kiểu dữ liệu được khai báo
trong RETURNS lúc tạo hàm.
Cú pháp tạo Scalar Function:
CREATE FUNCTION tên_hàm ([@<Tên tham số vào> <Kiểu dữ liệu> [ =
default ] [ ,...n ] ] )
RETURNS kiểu_dữ_liệu AS
BEGIN
thân hàm
RETURN value
END
VD: Tạo Scalar Function đếm số nhân viên theo phòng ban (tên phòng ban là tham
số). Hàm này được tạo trong QuanLyNhanSu
CREATE FUNCTION fn_DemSoNhanVien(@TenPhong nvarchar(30))
RETURNS int AS
BEGIN
DECLARE @ret int;
SELECT @ret = count(*)
FROM NHANVIEN
WHERE TenPhong = @TenPhong;
IF (@ret IS NULL)
SET @ret = 0

37
RETURN @ret
END
Sử dụng hàm fn_DemSoNhanVien
Select dbo.fn_DemSoNhanVien (‘Phong Dao tao’)

2.3.2. Table-Valued Functions


Nếu như scalar function trả về một giá trị (single value) thì table-valued
function trả về một table chứa những giá trị từ câu lệnh SELECT.
Cú pháp tạo table-valued function:
CREATE FUNCTION tên_hàm ([@<Tên tham số vào> <Kiểu dữ liệu> [ =
default ] [ ,...n ] ] )
RETURNS TABLE AS
RETURN
câu_lệnh_select
Ví dụ: tạo table-valued function hiển thị danh sách nhân viên thuộc phòng ban
(với tên phòng ban là tham số).
CREATE FUNCTION fn_DSNhanVien (@TenPhong nvarchar(30))
RETURNS TABLE AS RETURN
(
SELECT *
FROM NHANVIEN
WHERE TenPhong = @TenPhong
)
Sử dụng hàm fn_ DSNhanVien
Select fn_ DSNhanVien (‘Phong Dao tao’)

2.3.3. Sửa đổi cấu trúc hàm


- Cú pháp sửa đổi cấu trúc hàm Scalar Function:
ALTER FUNCTION tên_hàm ([@<Tên tham số vào> <Kiểu dữ liệu> [ =
default ] [ ,...n ] ] )
RETURNS kiểu_dữ_liệu AS
BEGIN

38
thân hàm
RETURN value
END
- Cú pháp sửa đổi cấu trúc hàm Table-valued Function:
ALTER FUNCTION tên_hàm ([@<Tên tham số vào> <Kiểu dữ liệu> [ = default
] [ ,...n ] ] )
RETURNS TABLE AS
RETURN
câu_lệnh_select

39
CHƯƠNG 3. KỸ THUẬT SYNONYM TRONG SQL SERVER
3.1. Truy cập dữ liệu từ xa
Cấu hình truy cập từ xa trong SQL Server nhằm mục đích kiểm soát việc
thực hiện quá trình lưu trữ từ các máy chủ cục bộ hoặc từ xa mà SQL Server đang
chạy.
Giá trị mặc định của tùy chọn truy cập từ xa là 1, cho phép chạy các bước
cục bộ từ các máy chủ từ xa. Để ngăn chặn quá trình này chúng ta chỉ cần đặt tùy
chọn thành 0.
Tuy nhiên hạn chế của thiết lập này là tùy chọn truy cập từ xa chỉ áp dụng
cho các máy chủ được thêm bằng cách sử dụng sp_addserver.
Vì vậy bài viết này chúng tôi sẽ mô tả cách định cấu hình truy cập từ xa trong
SQL Server bằng cách:
- Định cấu hình Truy cập từ xa bằng SQL Server Management Studio
- Cấu hình truy cập từ xa máy chủ SQL với Transaction-SQL
Cách 1: Định cấu hình truy cập từ xa bằng SQL Server Management Studio
Đầu tiên chúng ta phải đăng nhập vào SQL Server với chế độ xác thực
Windows hoặc chế độ xác thực SQL Server.
Trong Object Explorer, bấm chuột phải vào máy chủ và
chọn Properties (Thuộc tính).

40
Hình 3.1. Properties of Object Explorer
Nhấp vào Connections.

Hình 3.2. Server Properties

41
Trong Remote server connections, chúng ta có thể chọn hoặc xóa
hộp Allow remote connections to this server.
Cách 2: Cấu hình truy cập từ xa máy chủ SQL với Transaction-SQL
Kết nối với Công cụ cơ sở dữ liệu SQL Server bằng tài khoản SQL SA hoặc
quyền quản trị viên Windows.
Từ thanh công cụ nhấp vào New Query

Hình 3.3. Cấu hình truy cập từ xa máy chủ SQL với Transaction-SQL
Copy và dán phần sau vào ô truy vấn và nhấp vào Execute. Ví dụ này cho
chúng ta thấy cách sử dụng sp-configure để đặt giá trị của tùy chọn truy cập từ xa
thành 0.
USE ‘ServerName’ ;
GO
EXEC sp_configure ‘remote access’, 0 ;
GO
RECONFIGURE ;
GO

42
3.2. Kỹ thuật Synonym
3.2.1. Synonym là gì?
Kỹ thuật Synonym là bí danh được đặt cho đối tượng cơ sở dữ liệu bao gồm
khai báo tên Server, cơ sở dữ liệu và tên chủ nhân. Ứng dụng trình khách có thể sử
dụng bí danh này khi tham chiếu đến đối tượng CSDL.

3.2.2 Khai báo Synonym


Để khai báo Synonym, chúng ta có thể thực hiện theo hai cách, cách thứ nhất
là sử dụng Enterprise Management và cách thứ 2 sử dụng phát biểu Create
Synonym.
3.2.2.1. Tạo Synonym bằng Enterprise Managemant
Để tạo Synonym bằng Enterprise Managemant, chúng ta chọn vào tệp CSDL
cần khai báo Synonym, chọn vào ngăn Synonym sau đó Click chuột phải, chọn
New Synonym, cửa sổ xuất hiện như hình:

Hình 3.4. Tạo Synonym bằng Enterprise Managemant

43
Giả sử rằng chúng ta cần khai báo Synonym với tên SynonymQLBH trong
tệp CSDL QLBH như hình sau:

Hình 3.5. Khai báo tạo Synonym bằng Enterprise Managemant


Sau khi nhấn nút OK, chúng ta có thể tìm thấy Synonym với tên SynonymQLBH
vừa tạo trong ngăn Synonym như hình sau:

44
Chẳng hạn, trong hình trên chúng ta khai báo Synonym cho đối tượng Table
có tên HANG, sau đó chúng ta khai báo đọc dữ liệu trong đối tượng Table này
thông qua Synonym có tên SynonymQLBH như ví dụ sau.
Ví dụ: Khai báo Synonym cho đối tượng Table
Select *
From SynonymQLBH
Khi thực thi phát biểu trong ví dụ trên, chúng ta có thể thấy danh sách mẩu
tin có giá trị trả về là dữ liệu của bảng HANG trong CSDL QLBH

45
3.2.2.2. Tạo Synonym bằng phát biểu SQL
Chúng ta có thể tạo Synonym bằng phát biểu CREATE SYNONYM thay vì
dùng Enterprise Management bằng cách sử dụng cú pháp sau:
CREATE SYNONYM [schema_name_1.] synonym_name FOR <object>
<object>::=
{
[server_name, [database_name],
[schema_name_2]. | database_name.
[schema_name_2]. | schema_name_2.] object_name
}
Trong đó, tham số synonym_name là tên Synonym, server_name ứng với tên
Server, database_name là tên CSDL và object_name là tên đối tượng CSDL cần
truy cập.
Ví dụ: Khai báo Synonym bằng phát biểu CREATE
CREATE SYNONYM SQLBH
FOR HANG
Sau khi tạo thành công chúng ta có thể tìm thấy Synonym có tên SYNONYM
SQLBH trong danh sách Synonym như hình sau:

46
Chúng ta có thể gọi Synonym bằng cách khai báo như sau:
SELECT * FROM SQLBH
Khi thực thi phát biểu trên, chúng ta có thể tìm thấy danh sách kết quả mẩu tin trả
về như sau:

47
CHƯƠNG 4. DỊCH VỤ FULL-TEXT SEARCH TRONG SQL
SERVER
4.1 Giới thiệu Full-text Search (FTS)
Full-Text Search cho phép tạo chỉ mục một cách uyển chuyển và nhanh chóng
dễ truy vấn với từ khóa trên chuỗi dữ liệu trong cơ sở dữ liệu SQL Server. Trái với
phép toán Like mà chúng ta thường dùng trong mệnh đề Where, nó chỉ làm việc
trên kiểu dữ liệu ký tự, trong khi đó truy vấn Full-Text Search thực hiện theo hình
thức tìm kiếm trên từ hay cụm từ dựa trên quy luật liên quan đến ngôn ngữ.
Sau đây chúng ta sẽ tìm hiểu kiến trúc tìm kiếm theo chức năng Full-Text
Search, các cấu hình cơ sở dữ liệu cho Full-Text Search, các hàm sử dụng khi dùng
câu truy vấn tìm kiếm Full-Text.
Nếu tìm từ khóa trong bảng dữ liệu, chúng ta thường sử dụng phép toán Like
với ký tự % để chỉ định không phân biệt chuỗi sau và trước ký tự đang tìm.
Chú ý: Có thể tìm thấy cách cấu hình cơ sở dữ liệu rồi khai báo và cài đặt dịch vụ
tìm kiếm trong tập tin Full-Text Search.sql.
Chẳng hạn, khai báo để tìm kiếm tên nhà cung cấp trong bảng Nhà cung cấp
với phép toán like như sau:
Ví dụ: Khai báo phép toán Like
Select * from nhacungcap
Where tenNCC like ‘%MA%’
Go
Khi thực thi phát biểu SELECT trong ví dụ trên, có thể tìm thấy kết quả như
hình sau:

Hình 4.1. Danh sách nhà cung cấp với tên có chuỗi Ma

Trong trường hợp muốn tìm kiếm trên nhiều cột thì có thể sử dụng toán tử
AND hay OR. Chẳng hạn, khai báo tìm kiếm trên một cột dữ liệu với hai điều kiện
Like như ví dụ sau:

48
Ví dụ: Khai báo phép toán tìm kiếm trên một cột dữ liệu với hai điều kiện
SELECT *FROM Nhacungcap
Where tenNCC LIKE ‘%YAMA’
OR tenNCC LIKE ‘%Delle’
Go
Khi thực thi phát biểu SELECT trong ví dụ trên, có thể tìm thấy danh sách
nhà cung cấp trình bày như hình sau:

Hình 4.2. Danh sách nhà cung cấp


Tuy nhiên, có thể sử dụng FTS với hàm CONTAINS như ví dụ sau:
Ví dụ: Khai báo hàm CONTAINS
SELECT * FROM Nhacungcap
CONTAINS (tenNCC, ‘ “*Yama*”’ OR ‘ “Delle”’);
Go
Khi thực thi phát biểu SELECT với hàm CONTAINS trong ví dụ trên, có thể
tìm thấy danh sách nhà cung cấp trình bày như hình sau:

Hình 4.3. Danh sách nhà cung cấp


Để làm được điều này, chúng ta cần nghiên cứu kỹ thuật tìm kiếm và cách
cấu hình dịch vụ Full-Text Search trong ứng dụng ở phần kế tiếp.
4.2. Cấu trúc tìm kiếm theo Full-text Search
FTS trong Microsoft SQL server là công cụ tìm kiếm dữ liệu rất mạnh dựa
vào Microsoft Full –Text Engine dành cho cơ sở dữ liệu SQL Server

49
(MSFTESQL). Dịch vụ MSFTESQL có hai vai trò chính là hỗ trợ chỉ mục theo
tên (Named Indexing Support) và truy vấn dữ liệu (Query Support).
Trong đó, vai trò thứ nhất là cài đặt cơ sở dữ liệu Full-Text và khai báo chỉ
mục cho cơ sở dữ liệu. Vai trò thứ hai là xử lý câu truy vấn và quan tâm đến tiêu
chí tìm kiếm có phù hợp với dữ liệu đã khai báo trong cột đã chỉ định chỉ mục.
4.2.1 Thành phần của FTS
Hai thành phần chính sử dụng trong FTS là: The Microsoft Full –Text Engine
for SQL (MSFTESQL) và The Microsoft Full –Text Engine Filer Daemon for SQL
(MSFTEFD).
4.2.1.1 MSFTESQL
Đây là thành phần được xây dựng dựa trên kỹ thuật Microsoft Search
(MSSearch) được tích hợp rất hoàn thiện trong Microsoft SQL Server Database
Engine.
Dịch vụ MSFTESQL được cài đặt mặc định nhưng nó chỉ vận hành khi sử
dụng FTS.
MSFTESQL chạy như một dịch vụ trong hệ điều hành dưới tên tham chiếu
là MSFTESQL, chúng ta có thể tìm thấy dịch vụ này trong cơ sở dữ liệu Services.
4.2.1.2 MSFTEFD
MSFTEFD bao gồm ba chức năng sau:
• Bộ lọc dữ liệu.
• Bộ kiểm soát nghi thức truy vấn (Protocol handler).
• Bộ ngắt từ (Word breaker).
Sau đây là cơ chế hoạt động của FTS được minh họa như sau:

50
Hình 4.4. Cơ chế hoạt động của FTS

4.2.2 Cơ chế hoạt động của FTS


4.2.2.1 Bộ lọc dữ liệu
Nhiệm vụ của chức năng Filter là trích lọc luồng thông tin dạng Text từ văn
bản được lưu trong cơ sở dữ liệu và loại bỏ những thông tin không thuộc định dạng
này, sau đó tạo những chuỗi của văn bản cùng với thuộc tính này mà có thể truyền
vào cho chức năng chỉ mục.
Ngoài ra, Filter còn có thể trích lọc thông tin dạng chuỗi tử các dạng định
dạng văn bản như: Micrisoft word, tập tin dạng Text. Chẳng hạn, Microsoft cung
cấp bộ lọc Microsoft Office Filter để trích lọc dữ liệu từ tập tin dạng Word,
Microsoft Excel và Microsof Powerpoint.
4.2.2.2 Bộ kiểm soát nghi thức truy vấn
Trong SQL Server, chức năng của bộ kiểm soát nghi thức truy vấn là cho
phép truy cập dữ liệu từ bảng trong cơ sở dữ liệu cụ thể.
4.2.2.3 Bộ ngắt từ
Bộ ngắt từ là thành phần được sử dụng để quan tâm đến vị trí và ranh giới
của tồn tại trong luồng gồm nhiều ký tự khai báo trong câu truy vấn hay văn bản.

51
4.3 Cấu hình Full-text Catalog (FTC)
Sau khi chúng ta đã tìm hiểu sơ lược cách vận hành của dịch vụ Full-Text
Search, để bắt đầu áp dụng cho kỹ thuật này trong cơ sở dữ liệu, cần chỉ định tùy
chọn “Use full-text indexing” cho phép cơ sở dữ liệu sử dụng dịch vụ FTS khi tạo
cơ sở dữ liệu như hình sau:

Hình 4.5. Cho phép cơ sở dữ liệu sử dụng dịch vụ FTS


Trong trường hợp cở sở dữ liệu đã tồn tại cũng có thể chọn vào tùy chọn “Use
full-text indexing” bằng cách kích hoạt của sổ Properties, ví dụ trong trường hợp
cơ sở dữ liệu Accountsystem như hình sau:

Hình 4.6. Kích hoạt của sổ thuộc tính


Chú ý:
Chúng ta có thể sử dụng thủ tục nội tại hệ thống để cho phép hay vô hiệu hóa
dịch vụ FTS của CSDL bằng cách khai báo cú pháp như sau:
Sp_FullText_Database[@action=] ‘Action’

52
Trong đó, Action ứng với hai giá trị enable hay disable. Chẳng hạn khai báo
để cho phép sử dụng dịch vụ FTS cho CSDL có tên “QuanLySinhVien” như ví dụ
sau:
Ví dụ: Khai báo thủ tục nội tại sp_fullText_Database
Use QuanLySinhVien;
Go
Exec Sp_fullText_database ‘Enable’;
Go
Trong trường hợp loại bỏ dịch vụ này khỏi CSDL hiện hành thì khai báo như
ví dụ sau:
Ví dụ: Khai báo thủ tục nội tại sp_fullText_Database
Use QuanLySinhVien;

Go

Exec Sp_fullText_database ‘disable’;

Go

4.3.1 Cách tạo FullTextCatalog và tạo FullTextIndex


Sau khi CSDL hiện hành sử dụng FullTextSearch cần tạo CSDL để chứa
thông tin cho dịch vụ này bằng cách chọn ngăn storage → FullText catalogs → R-
click → new fulltext catalog là được.

Nhập tên là QuanLySinhVienfulltextsearch trong ô fulltextcatalog name và


chọn vị trí đặt CSDL tại ô catalog location và chủ nhân của CSDL này tại ô
filegroup cần xác định CSDL này có phân biệt chữ hoa và thường ứng với tùy chọn
sensitive và insensitive như hình sau:

53
Hình 4.7. Chọn tùy chọn Sensitive và Insensitive

Ngoài cách sử dụng MS như trên, có thể tạo CSDL fulltextsearch bẳng cách
sử dụng phát biểu CREATE FULLTEXT CATALOG với cú pháp như sau:
CREATE FULLTEXT CATALOG catalog_name

[ ON FILEGROUP filegroup ]

[ INPATH ‘rootpath ’]

[ WITH <catalog_option>]

[ AS DEFAULT ]

[ AUTHORIZATION owner_name]

< catalog_option >:: =

ACCENT_SENSITIVITY = {on| off}

Chẳng hạn, tạo CSDL FTS có tên QuanLySinhVien thì khai báo như sau:
CREATE FULLTEXT CATALOG QuanLySinhVien

WITH ACCENT_SENSITIVITY = off

AS DEFAULT

GO

Chú ý:
Khi tạo mới CSDL cho dịch vụ FTS có thể tìm thấy ngăn general. Tuy nhiên,
sau khi tạo thành công, nếu kích hoạt trở lại có thể tìm thấy ba ngăn general, table/
views, population schedule.

54
Trong đó ngăn General trình bày thông tin của CSDL.
Nếu muốn sử dụng hàm của FTS trong khi tìm kiếm cần khai báo FTI (full
text indexing) cho các cột dữ liệu trong bảng. Để làm điều này có thể dùng 2 cách,
cách thứ nhất là chọn vào ngăn table /views và chọn tên table cho phép tìm kiếm
bằng hàm của FTS.
Sau khi chọn table hay view vào danh sách bên phải, tiếp tục chỉ định cột dữ
liệu. Ví dụ, chọn bảng dữ liệu là SinhVien rồi tiếp tục chọn cột diachi và lop

Cách 2, chọn vào tên table → R-click → fulltextindex → define fulltextindex


một cửa sổ xuất hiện, nhấn nút next, chỉ định unique index duy nhất của bảng dữ
liệu ứng với cột khóa chính.
Sau đó chỉ định các cột dữ liệu cần khai báo FTI bằng cách chọn vào tên cột.
Nếu CSDL FTI đã tồn tại chỉ cần chọn tên xuất hiện trong phần select
fulltextcatalog.
Chọn nút next, ta tìm thấy thông tin tổng kết trước khi tạo FTI.
Một table đã khai báo FTI thì chức năng difine fullTextIndex sẽ bị vô hiệu
hóa khi chọn tên table → R-click → fullTextIndex.
Trong trường hợp xóa FTI đang tồn tại của bảng dữ liệu thì chọn vào chức
năng delete FullTextIndex.
Lưu ý, ngoài hai cách trên có thể sử dụng phát biểu create FullTextIndex để
tạo FTI cho bảng dữ liệu với cú pháp như sau:
CREATE FULLTEXT INDEX ON table_name
[
(column_name [ TYPE COLUMN type_column_name]

[LANGUAGE languare_term][…n])]

KEY INDEX IndexName

[ ON fullText_catalog_Name]

[ WITH {STOPLIST = SYSTEM, CHANGE_TRACKING

{ MANUAL| AUTO| OFF [ NO POPULATION]}}

55
Chẳng hạn, có thể tạo FTI cho cột makhoa của bảng khoa, bằng cách sử dụng
phát biểu CREATE FULLTEXT INDEX như ví dụ:
Ví dụ: khai báo FTI cho bảng khoa
CREATE FULLTEXT INDEX ON khoa
( makhoa ) KEY INDEX pk_makhoa
ON QuanLySinhVienFullTextSearch
GO
Ví dụ: thêm cột 'NgaySinh' chỉ mục
EXEC SinhVien ' NgaySinh ', 'COLUMN1', 'thêm'
EXEC SinhVien ' NgaySinh ', 'COLUMN2', 'thêm'
Ví dụ: start full reindexing
EXEC sp_fulltext_catalog 'YourCatalogName', 'start_full'
Ví dụ: theo dõi toàn văn và Populating
exec sp_fulltext_table YourTableName, 'start_change_tracking'
exec sp_fulltext_table YourTableName, 'start_background_updateindex'
4.3.2 Xóa FullText Catalog và FullTextIndex

• Xóa FullTextCatolog
Loại bỏ một danh mục đầy đủ văn bản từ cơ sở dữ liệu. Chúng ta phải xóa tất
cả các chỉ mục toàn văn kết hợp với danh mục trước khi xóa catalog.
DROP FULLTEXT CATALOG catalog_name DROP toàn văn Catalog
catalog_name
Các đối số:
catalog_name: Là tên của catalog để được gỡ bỏ. Nếu catalog_name không tồn tại,
Microsoft SQL Server trả về một lỗi và không thực hiện các hoạt động thả. Các
filegroup của danh mục toàn văn không phải được đánh dấu OFFLINE hoặc chỉ
đọc cho lệnh thành công.
Người dùng phải có sự cho phép xóa trên danh mục văn bản đầy đủ hoặc là
một thành viên của database.

• Xóa FullTextIndex
Cấu trúc: DROP FULLTEXT INDEX ON table_name

56
Table_name: Là tên của bảng hoặc xem được lập chỉ mục có chứa các chỉ mục
toàn văn phải được loại bỏ.
Người lập không cần phải xóa tất cả các cột từ chỉ mục toàn văn trước khi sử
dụng lệnh DROP INDEX toàn văn.
Người sử dụng phải có sự cho phép ALTER trên bảng hoặc xem lập chỉ mục,
hoặc là một thành viên có vai trò máy chủ quản trị hệ thống cố định, hoặc database
Ví dụ
xóa FullTextIndex trên bảng SinhVien
USE QuanLySinhVien;
GO
DROP FULLTEXTINDEX ON SinhVien;
GO
4.4 Sử dụng hàm trong câu truy vấn
4.4.1 Hàm CONTAINS
Hàm CONTAINS Trả về một bảng số không, một, hoặc nhiều hơn cho những
hàng cột có chứa các loại ký tự dựa trên dữ liệu cho chính xác hoặc mờ (ít chính
xác) phù hợp với những từ đơn và cụm từ, gần gũi với các từ trong một khoảng
cách nhất định với nhau, hoặc phù hợp với trọng. CONTAINSTABLE chỉ có thể
được tham chiếu trong mệnh đề FROM của câu lệnh SELECT như thể nó là một
tên bảng thông thường.
Truy vấn sử dụng CONTAINSTABLE định dạng chứa toàn văn các truy vấn
có trả lại giá trị liên quan xếp hạng (RANK) và khóa toàn văn (KEY) cho mỗi
hàng. Chức năng CONTAINSTABLE sử dụng điều kiện tìm kiếm tương tự như
có chứa vị.
Hàm contains dùng để tìm kiếm mẩu tin trong bảng với cột có kiểu dữ liệu là
chuỗi chứa chính xác hay gần khớp với từ hay nhóm từ do người dùng truyền vào
có cú pháp như sau:
Contains
(
{column_name |(column_list)|*}
’<contains_search_condition> ‘

57
[,language language_term]
)
Trong đó:

• Tham số column_name là cột dữ liệu có kiểu char, varchar, nvarchar, text,


ntext, image, xml hay varbinary (max) và đã được khai báo FTI.
• Tham số contains_search_condition có cấu trúc như sau:
<contains_search_condition>::=
{
<simple_term>
|<prefix_term>
|<generation_term>
|<proximity_term>
|<weighted_term>
}
|{(<contains_search_condition>)
[{<and>|<and not>|<or>}]
<contains_search_condition>[…n]
}
Chúng ta có thể khai báo các tùy chọn trong điều khiển tìm kiếm với cú
pháp tương tự như sau:
<simple_term>::=
Word | ”shrase “
< prefix_term >::=
{”Word* “ | ”shrase* “}
<generation_term>::=
Formsof
(
{inflectional | thesaurus},
<simple_term>[,…n]
)
<proximity_term>::=
{<simple_term> | < prefix_term >}
{{NEAR| ~}
{<simple_term> | < prefix_term >}
}[…n]
< weighted_term >::=

58
ISABOUT
({{<simple_term>
|< prefix_term >
|<generation_term>
}
[WEIGHT( weight_ value)]
}
[,…n]
)
<and>::=
{and | &}
<and not>::=
{and not | & !}
<or>::=
{or||}

Chẳng hạn, có thể liệt kê danh sách sảm phẩm trong bảng properties với cột
ProductNameInVietNamese có chuỗi là “túi xách”
Ví dụ: khai báo sử dụng hàm contains
Select *from products where
Contains (productNameInVietNamese, ‘ “túi xách” ’);
Go
Khi thực thi phát biểu câu lệnh SELECT trong ví dụ trên, có thể tìm thấy
danh sách sản phẩm trình bày như hình sau:

Hình 4.8. Sản phẩm túi sách


Trong trường hợp chứa mẩu tin chứa từ hay nhóm từ không phân biệt chuỗi
ngay sau đó, có thể sử dụng kí tự ‘*’, tương tự như ví dụ sau:
Ví dụ: Khai báo kí tự ‘*’
Select * from sanpham where contains

59
(ten, ‘ “túi sách dùng cho * ” ’), go
Khi thực thi phát biểu SELECT trong ví dụ trên, có thể tìm thấy danh sách
sản phẩm như hình sau:

Hình 4.9. Sảm phẩm túi sách dành cho

Chúng ta tìm hiểu một số tùy chọn NEAR | ~ và phép toán { AND | &} |
{AND NOT |&!}|{OR||} sử dụng trong mệnh đề where.
4.4.1.1 Tùy chọn NEAR
Tùy chọn này chỉ ra từ hay nhóm từ gần phía bên trái, ví dụ khai báo “wordA
NEAR wordB NEAR wordC ”. từ hay nhóm từ wordA có thể đứng gần với từ hay
nhóm từ wordB, mà từ hay nhóm từ WordB sẽ đứng gần từ hay nhóm từ wordC.
Ví dụ: Khai báo sử dụng tùy chọn NEAR
Select * from SinhVien where
Contains (HoTen, ‘ “Phan” near “Hiệp” ’);
Kết quả:

Hình 4.10. Sử dụng tùy chọn NEAR

Ví dụ: Khai báo tùy chọn


Select * from sinhvien where contains (hoten, ‘ “Vũ” ~ “Trang” ’);

Hình 4.11. Sử dụng tùy chọn ~

60
4.4.1.2 Phép toán
Ta có thể sử dụng phép toán AND hoặc OR trong hàm CONTAINS
Ví dụ: khai báo phép toán OR
Select * From SinhVien where
Contains (HoTen, ‘ “Phan” or “Thu”’);
Kết quả:

Hình 4.12. Phép toán OR


Ví dụ: Khai báo sử dụng biến
Declare @ HoTen nvarchar(10)
Set @HoTen = ‘ “Phan”’
Select * from sinhvien where
Contains(hoten,@hoten);
Kết quả:

Hình 4.14. Sử dụng biến


4.4.2 Hàm FREETEXT
Hàm Freetext dùng để tìm kiếm mẩu tin trong bảng có cột với kiểu dữ liệu là
chuỗi có ý nghĩa đúng hay không cần chứa đúng từ hoặc nhóm từ do người sử dụng
truyền vào. Cú pháp:
FREETEXT ({column_name|(column_list)|*}
‘freetext_string ’[,LANGUAGE language_term])
Trong đó:
✓ Tham số column_name là cột dữ liệu có kiểu dữ liệu char, varchar,
nchar, nvahchar, text, ntext, image, xml varbinary dược khai báo FTI
✓ Tham số freetext_string là văn bản tìm kiếm được tìm kiếm trong cột
column_name.

61
Đây là kiểu tìm kiếm theo kiểu fuzzy (tìm kiếm mờ), ví dụ khi tìm kiếm với
từ khóa “Phan” tất cả dữ liệu có dạng “han,Tha,…” sẽ được tìm thấy.
Khi truyền vào một tập các từ như “Phan Thị Hiệp”, tất cả dữ liệu có từ
“Phan” hoặc “Thị”,… sẽ được tìm thấy
Full-Text có ưu điểm không phân biệt tiếng Việt có dấu hay không dấu
Ví dụ: Tìm kiếm sinh viên có tên ‘Trang’ trong cột HoTen của bảng
SinhVien
Select * from SinhVien where
Freetext (Hoten, ‘ “Trang” ’);
Kết quả:

Hình 4.15. Sử dụng hàm FREETEXT


4.4.3 Hàm CONTAINSTABLE
Là hàm trả về một bảng số không, một, hoặc nhiều hơn cho những hàng cột
có chứa các loại ký tự dựa trên dữ liệu cho chính xác hoặc mờ (ít chính xác) phù
hợp với những từ đơn và cụm từ, gần gũi với các từ trong một khoảng cách nhất
định với nhau.
CONTAINSTABLE chỉ có thể được tham chiếu trong mệnh đề FROM của
câu lệnh SELECT như thể nó là một tên bảng thông thường.
Truy vấn sử dụng CONTAINSTABLE định dạng chứa toàn văn các truy vấn
có trả lại giá trị liên quan xếp hạng (RANK) và khóa toàn văn (KEY) cho mỗi
hàng.
Chức năng CONTAINSTABLE sử dụng điều kiện tìm kiếm tương tự như có
chứa vị. Cú pháp:
CONTAINSTABLE(table,{column_name|(column_list)|*},
‘<contains_search_condition>’
[,LANGUAGE language_term][,top_n_by_rank]).
Trong đó:

62
✓ Table: Là tên của một bảng mà đã được lập chỉ mục toàn văn có thể, khi truy
vấn, chỉ có một văn bản đầy đủ bảng chỉ mục cơ sở có thể có liên quan.
✓ column_name: Là tên của một hoặc nhiều cột được lập chỉ mục toàn văn để tìm
kiếm
✓ LANGUAGE language_term Là ngôn ngữ có nguồn tài nguyên sẽ được sử dụng
để vi phạm từ, xuất phát. Tham số này là tùy chọn và có thể được quy định như
một số nguyên, chuỗi.
4.4.4 Hàm FREETEXTTABLE
Hàm này họat động giống như vị từ FREETEXT nhưng có cấu trúc khác
nhau.
Cú pháp:
SELECT * FROM FREETEXTTABLE (<bảng cần tìm>,<cột cần tìm >,<chuỗi
>)
Kết quả trả ra gồm 1 bảng có 2 cột KEY và RANK.
Trongđó
✓ KEY là cột khóa chính của bảng cần tìm
✓ RANK là cột chứa độ phù hợp giữa dòng dữ liệu có khóa là KEYđó so với
yêu cầu tìm kiếm.

Cột RANK có giá trị từ 0 → 1000. Giá trị RANK càng cao thì dòng đó càng
phù hợp với điều kiện tìm kiếm.
Ví dụ:
Select * from FREETEXTTABLE (SinhVien, HoTen, ‘ “Trang” ’)
Kết quả trả về như sau:

KEY RANK

SV02 12

SV03 14

Hình 4.16. Sử dụng hàm FREETEXTTABLE


Trong đó SV02 và SV03 là khóa của bảng cần tìm.
MỘT SỐ VÍ DỤ

63
USE pubs
-- Create and populate a table.
IF EXISTS (SELECT TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'FulltextTest')
DROP TABLE FulltextTest
GO
CREATE TABLE FulltextTest
( article_id int IDENTITY(100,1)
CONSTRAINT PK_title_id PRIMARY KEY,
article_title nvarchar(200)
)
GO
INSERT FulltextTest (article_title) VALUES (N'Steven Buchanan has always
enjoyed ice skating.')
INSERT FulltextTest (article_title) VALUES (N'Elvis Stoiko: The best male
figure skater')
INSERT FulltextTest (article_title) VALUES (N'Steven Buchanan On Ice:
Skating Reaches Tops in Public Opinion Poll')
INSERT FulltextTest (article_title) VALUES (N'Last night, Steven Buchanan
skated on the ice!! Skating fans cheer!')
INSERT FulltextTest (article_title) VALUES (N'Ice-skating brings out the best
in Steven. Buchanan exults in first victory...')
GO
-- Enable full-text searching in the database.
EXEC sp_fulltext_database 'enable'
GO
-- Create a new full-text catalog.
EXEC sp_fulltext_catalog 'StevenBCatalog',
'create'
GO
-- Register the new table and column within it for full-text querying,
-- then activate the table.
EXEC sp_fulltext_table 'FulltextTest',
'create',
'StevenBCatalog',
'PK_title_id'
EXEC sp_fulltext_column 'FulltextTest',
'article_title',
'add'

64
EXEC sp_fulltext_table 'FulltextTest',
'activate'
GO
-- Start full population of the full-text catalog. Note that it is
-- asynchronous, so delay must be built in if populating a
-- large index.
EXEC sp_fulltext_catalog 'StevenBCatalog',
'start_full'
WHILE (SELECT fulltextcatalogproperty('StevenBCatalog',
'populatestatus')) <> 0
BEGIN
WAITFOR DELAY '00:00:02' -- Check
every 2 seconds to see if full-text index population is complete.
CONTINUE
END
GO
-- Execute a full-text query against the new table.
SELECT article_title
FROM FulltextTest
WHERE CONTAINS(article_title, ' "Steven Buchanan" AND "ice skating" ')
Here is the result set:
article_title
------------------------------------------------------------------------
Steven Buchanan has always enjoyed ice skating.
Last night, Steven Buchanan skated on the ice!! Skating fans cheer!
Steven Buchanan On Ice: Skating Reaches Tops in Public Opinion Poll
Ice-skating brings out the best in Steven. Buchanan exults in first victory...
(4 row(s) affected)

65
CHƯƠNG 5. DỊCH VỤ REPORT TRONG SQL SERVER
5.1 Giới thiệu Report Service
SQL Server Reporting Service (SSRS) cho phép xây dựng các loại báo cáo
dưới dạng bảng tham chiếu chéo và dạng biểu đồ từ các thao tác phân tích dữ liệu
một cách thuận tiện và chính xác. Các báo cáo trực quan về dữ liệu là một công cụ
rất hữu ích cho các nhà quản lý trong việc ra quyết định và điều hành doanh nghiệp.
SSRS sử dụng ngôn ngữ định nghĩa báo cáo (RDL – Report Definition
Language) và ngôn ngữ đánh dấu mở rộng XML. Công cụ soạn thảo báo cáo được
tích hợp trên công cụ BIDS (công cụ xây dựng mô hình khai phá dữ liệu Business
Intelligence Development Studio) dựa trên bộ Visual studio. Người dùng có thể
soạn thảo các báo cáo một cách dễ dàng trên nền tảng đồ họa, sau khi báo cáo được
tạo có thể trích xuất ra nhiều định dạng khác nhau như: Excel, PDF, CSV, XML,
TIFF hay dưới dạng văn bản web.
SQL Server Reporting Services là một ứng dụng hệ thống, giúp tạo các báo
cáo dựa trên nền tảng Server của Microsoft. Nó là một trong các dịch vụ của
Microsoft, bao gồm SQL Server Analysis Services (SSAS) và SQL Server
integration Services (SSIS). Trong khi SSAS cho phép người dùng xây dựng các
cơ sở dữ liệu đặc biệt để phân tích nhanh lượng dữ liệu lớn và SSIS cho phép người
dùng tích hợp dữ liệu từ nhiều nguồn bên ngoài Microsoft SQL Server, SSRS lại
cho phép người dùng tạo ra các báo cáo từ cơ sở dữ liệu Microsoft SQL Server
một cách dễ dàng và nhanh chóng.
SSRS dựa trên nền tảng server, cho phép mở rộng khả năng mở rộng để
truyền dẫn và trình bày thông tin. Phạm vi của nó mở rộng từ các báo cáo truyền
thống sang nền tảng Web. SSRS cũng có thể được cấu hình để gửi báo cáo tới hộp
thư người dùng, chia sẻ file,… SSRS có khả năng tạo báo cáo ở các định dạng
khác nhau, ví dụ như ngôn ngữ đánh dấu Siêu văn bản (HTML) và các định dạng
ứng dụng cho máy tính để bàn (Microsoft Excel và CSV). Do đó, nó cho phép
người dùng thao tác với dữ liệu của họ với bất kỳ định dạng nào được yêu cầu.
Ngoài ra, SharePoint có thể được dùng như là giao diện người dùng cho SSRS, cho
phép báo cáo có thể hiển thị trực tiếp qua các Cổng thông tin điện tử của doanh
nghiệp.
SSRS là một trong các thành phần của nền tảng Microsoft Business
Intelligence (BI). Kết hợp các thành phần này cung cấp một nền tảng tuỵệt vời cho

66
việc phân tích dữ liệu doanh nghiệp. Với 3 giai đoạn của quá trình tạo Report,
chúng ta sẽ tìm hiểu chi tiết về chúng qua từng ví dụ trình bày trong phần kế tiếp.
5.2 Các thành phần của Report Service
5.2.1 Chức năng chính
Trước khi tìm hiểu các thành phần của Report, chúng ta tìm hiểu một số chức
năng chính sử dụng khi làm việc với Report Service: Report Definition, Published
Report, Rendered Report, Parameterized Report, Linked Report, Report Snapshot,
Report Model và Report Server Folder Namspace.
1. Report Definition
Report Definition là bản thiết kế chi tiết tạo ra bởi tiện ích Report Designer
hay Report Builder. Chúng chứa các thông tin về câu truy vấn, hình dạng và các
phần tử khác của Report khi nó thực thi. Đặc tả của Report sẽ được lưu trữ theo
định dạng XML và lưu dưới tập tin có tên mở rộng là .rdl (Report Definition
Language).
2. Published Report
Sau khi Report đã được tạo ra, chúng sẽ triển khai trên Report Server bằng
cách sử dụng tiện ích Report Designer, Report Builder hay tải trực tiếp thống qua
Report Manager hay MS.
3. Rendered Report
Sau khi triển khai Report trên Report Server, nếu Report được triệu gọi thì
dữ liệu sẽ được truy vấn và trình bày theo định dạng đã thiết kế, quá trình này được
gọi là render.
4. Parameterized Report
Cũng giống như khái niệm tham số trong phát biểu SQL hay thủ tục nội tại,
Report cũng có thể chấp nhận tham số truyền từ bên ngoài, bằng cách này chúng
ta có thể yêu cầu Report trình bày dữ liệu theo tiêu chí ràng buộc nào đó.
5. Linked Report
Với những Report đã tồn tại, ta có thể liên kết đến chúng và thay đổi thuộc
tính, kết nối cơ sở dữ liệu, định dạng ngay cả tham số.
6. Report Snapshot
Đây là tên gọi mang tính tham khảo, khi chúng ta thiết kế Report thì dữ liệu
mang tính minh họa sẽ hiển thị trên Report, những thông tin này sẽ biến mất khi

67
dữ liệu được truy vấn từ cơ sở dữ liệu.
7. Report Model
Chức năng này dùng để tạo Report dạng đặc biệt bằng cách sử dụng tiện ích
Report Builder. Một khi Report được tạo ra bằng cách này, người sử dụng có thể
tạo Report dựa vào loại Report này mà không cần quan tâm đến câu truy vấn, kết
nối cơ sở dữ liệu, cơ sở dữ liệu.
8. Report Server Folder Namspace
Report Server Folder Namspace cho phép ta nhận dạng Report, thư mục, mô
hình, kết nối cơ sở dữ liệu, bảo mật và một số thông tin khác. Ví dụ, cấu trúc của
Report Server trình bày như hình 5.1.

9.
Hình 5.1. Report Server
Chú ý: Để đăng ký Report Server như hình trên, ta cần nhấn vào nút Connect
rồi chọn tùy chọn như hình 5.2.
Chúng ta sẽ tìm hiểu chi tiết các chức năng vừa giới thiệu ở trên trong phần
kế tiếp.

68
10.
Hình 5.2. Đăng ký Report Server
5.2.2. Thành phần chính
Công cụ của Report Service bao gồm các thành phần chính như: Report
Server, Report Manager, Report Designer, Report Builder, Model Designer,
Report Services Configuration Tool và Report Server Command Prompt Utilities.
Ngoài ra, Report Service còn các Interface như: Windows Management
Instrumentation (WMI), Simple Object Access Protocol (SOAP) và URL.
1. Report Server
Report Server là thành phần chính của Report Service, chúng là tập các chức
năng chính cho phép xử lý và kết xuất Report theo yêu cầu của người sử dụng.
2. Report Manager
Report Manager là công cụ cho phép quản lý và triệu gọi Report trên trình
duyệt thông qua nghi thức HTTP. Report Manager cũng cho phép chúng ta trình
bày dữ liệu trên Report rồi phân trang và điều hướng.
3. Report Designer
Report Designer là công cụ cho phép chúng ta thiết kế Report trong Visual
Studio 2005 bằng chức năng Report Wizard thông qua dịch vụ Business Intelligent
Development Studio với các hình dạng như bảng, ma trận hay tùy ý.
4. Report Builder
Report Builder là công cụ đặc biệt cho phép người sử dụng đầu cuối có thể

69
thiết kế nhanh Report mà không cần biết nhiều về cấu trúc dữ liệu.
5. Model Designer
Model Designer là công cụ dùng để tạo Report Model trong Report Builder;
Report Model kết nối với Data Source View trong Analysis Server hay cơ sở dữ
liệu SQL Server 2005 để trích lọc dữ liệu dạng siêu dữ liệu.
6. Report Services Configuration Tool
Công cụ này dùng để cấu hình ứng dụng Website cho Report Manager,
Report Server, tạo cơ sở dữ liệu cho Report Server, quản lý khóa mã hóa và khởi
tạo Report Server.
7. Report Server Command Prompt Utilities
SQL Server cung cấp 3 tiện ích command-line, tiện ích rsconfig dùng để cấu
hình cơ sở dữ liệu Report Server, rskeymgmt dùng để tạo khóa mã hóa, rs dùng để
thực thi kịch bản Visual Basic .NET trong Report Server.
5.3 Tạo Report trong SQL Server
5.3.1 Tạo Report bằng MS
5.3.1.1 Tạo Report bằng Report Wizard
Với các thành phần và chức năng vừa trình bày ở trên, chúng ta sẽ tìm hiểu
cách làm việc với Report Service qua từng bước.
Chú ý: Chúng ta có hai cách tạo Report, cách thứ nhất là sử dụng MS và cách
thứ hai là dùng Report Builder. Tuy nhiên, trong phần này, chúng ta tập trung tìm
hiểu cách tạo Report bằng Report Wizard và ReportDesigner trong MS. Chúng ta
có thể tìm hiểu cách tạo Report bằng Report Builder trong phần quản lý Report
bằng Report Manager Virtual Directory.
Để sử dụng được SSRS để xây dựng các báo cáo thì chúng ta phải cấu hình
các dịch vụ Report Server bằng công cụ Reporting Services Configuration
Manager. Công cụ này có trong bộ Configuration Tools khi chúng ta cài đặt SQL
Server. Giao diện sau khi chọn Reporting Services Configuration Manager như
sau:

70
Hình 5.3. Reporting Services Configuration Connection
Chọn Connect để kết nối, giao diện sau xuất hiện:

Hình 5.4. Reporting Services Configuration Manager


Tại cửa sổ bên trái, chọn Database, chọn Change Database trên màn hình
hiển thị, kết quả như hình sau:

71
Hình 5.5. Report Server Database Configuration Wizard
Chọn Next để tạo cơ sở dữ liệu làm báo cáo. Chọn Next để chuyển sang giao
diện sau:

Hình 5.6. Thiết lập tên CSDL


Tại ô Database Name nhập tên cơ sở dữ liệu (ví dụ là QLBH), mục Temp
Database Name sẽ tự động sinh ra, tiếp tục chọn Next ở các cửa sổ tiếp theo, ta

72
được kết quả như hình sau:

Hình 5. 7. Kết quả sau khi cài đặt CSDL


Chọn Finish để kết thúc quá trình thiết lập CSDL.
Trước tiên, chúng ta tạo Report trong MS thông qua Business Intelligence
Development Studio bằng cách chọn vào Start → SQL Server Data Tools for
Visual Studio 2013 (đối với phiên bản SQL Server 2014). Tại màn hình chính,
Click chọn menu File, chọn New và chọn Project, cửa sổ xuất hiện như hình 5.8.

73
Hình 5.8. Business Intelligent Development Studio

Chọn vào Reporting Services và chọn Report Server Project, đặt tên thư mục
là Test và nhấn OK, cửa sổ kế tiếp xuất hiện như hình 5.9.

Hình 5.9. Cửa sổ Solution Explore


Tạo bộ dữ liệu gốc chia sẻ:
Nguồn dữ liệu SSRS có thể được “nhúng” kèm trong các báo cáo, hoặc chia
sẻ giữa nhiều báo cáo của 1 project. Tùy từng loại báo cáo mà chúng ta sẽ chia sẻ
dữ liệu gốc này theo cách khác nhau. Ví dụ, nếu nguồn dữ liệu thay đổi, hoặc toàn
bộ cơ sở dữ liệu được chuyển tới 1 server khác, người sử dụng chỉ cần thay đổi lại
nguồn của dữ liệu chia sẻ, trong đó có bao gồm hàng chục, hàng trăm các báo cáo
riêng rẽ được bao gồm bên trong đó.
Để tạo nguồn dữ liệu chia sẻ, bên trong cửa sổ Solution Explorer, ta kích
chuột phải và chọn Shared Data Sources → Add New Data Source. Đặt tên cho cơ
sở dữ liệu, lưu ý rằng không được để khoảng trống tại đây. Tiếp đó, chọn thể loại

74
cơ sở dữ liệu phù hợp từ danh sách, ví dụ tại đây là Microsoft SQL Server. Nhấn
Edit để điền các chi tiết về giao thức kết nối. Tại cửa sổ Connection Properties, ta
điền tên server, thông tin nhận dạng, và CSDL. Sau đó nhấn Test Connection để
kiểm tra và OK khi hoàn tất.

Hình 5.10. Kết nối cơ sở dữ liệu


Các bước tạo báo cáo:
Trong Solution Explorer, kích chuột phải vào Reports → Add New Report.
Chọn Next ở cửa sổ tiếp theo. Tại màn hình Select the Data Source, chọn nguồn
cơ sở dữ liệu vừa tạo ở bước trên và nhấn Next. Tiếp theo, màn hình Design the
Query hiển thị cho phép người sử dụng gõ các câu lệnh truy vấn, hoặc dùng chức
năng Query Builder để xây dựng với giao diện đồ họa. Trong phần này, ta sử dụng
đoạn mã truy vấn sau:

75
Hình 5.11. Truy vấn dữ liệu
Chọn nút Next, chúng ta có thể định nghĩa phát biểu SQL dạng SELECT để
truy vấn dữ liệu theo các tiêu chí.
Chú ý: cũng có thể sử dụng chức năng Query Builder để chọn bảng dữ liệu
cùng với cột dữ liệu cần lấy ra như hình 5.12.

Hình 5.12. Truy vấn dữ liệu dùng Query Builder

76
Trên màn hình Select the Report Type, chọn Tabular. Lưu ý rằng định dạng
theo kiểu Tabular sẽ trông giống như một bảng tính thông thường (hoặc bảng cơ
sở dữ liệu), với các cột ở đầu trang, và số dòng phụ thuộc vào lượng dữ liệu của
dataset. Sau đó nhấn Next.
Tiếp đến bước Design the Table, thêm SoHD vào trong mục Group, thêm các
trường còn lại vào mục Details, nhấn Next.
Giữ nguyên lựa chọn Stepped tại bước Choose the Table Layout và Next.
Tiếp theo, chọn kiểu cho bảng báo cáo và tiếp tục Next. Cuối cùng là đặt tên (ví
dụ Report1) và Finish:

Hình 5.13. Thiết kế Report


Trong thẻ Design, chúng ta có thể chỉnh lại báo cáo theo một số cách sau. Ví
dụ:
- Thay đổi kích thước của bản báo cáo cùng các thành phần bằng thao tác kéo
thả.
- Thêm các đối tượng khác như ảnh, từ thanh công cụ Toolbox.
- Định dạng lại ký tự và chữ số (nhấn chuột phải và chọn Text Box
Properties).
- Thêm, di chuyển, xóa, hoặc thay đổi thuộc tính dữ liệu.
Tương tự như vậy, nếu muốn xem dữ liệu trình bày trên Report trước khi
chính thức publish chúng, ta có thể chọn vào thẻ Preview.

77
Hình 5.14. Thẻ Preview

Ngoài ra, Report Server Project cũng được tạo ra, ta có thể tìm thấy trong cửa
sổ Solution Explorer như hình 5.15.

Hình 5.15. Cấu trúc Project

78
Để thiết kế Report, chúng ta có thể sử dụng các thành phần trên cửa sổ công
cụ (Toolbox) như hình 5.16.

Hình 5.16. Cửa sổ Toolbox


Ngoài ra, chúng ta cũng có thể tìm thấy đối tượng DataSet với các cột dữ liệu
đã chọn thuộc bảng CTHD như hình 5.17.

Hình 5.17. Đối tượng DataSet


Chú ý: Chúng ta có thể xóa, đổi tên hay thêm cột dữ liệu vào Report bằng
cách click chuột phải trên cửa sổ Dataset như hình 5.18.

79
Hình 5.18. Xóa, dổi tên hay thêm cột dữ liệu

5.3.1.2. Tạo Report bằng Report Designer


Tương tự như trên, thay vì chọn Report, chúng ta chọn vào biểu tượng Report
Wizard như hình sau.

Hình 5.19. Tạo báo cáo bằng chức năng Report Wizard

Sau đó, ta có thể tự thiết kế các TextBox tương ứng với các Field trong bảng
dữ liệu.
5.3.2 Thêm mới Report
Để thêm Report vào dự án, chúng ta có thể chọn vào ngăn Report trong cửa
sổ Solution Explorer như hình 5.20.

80
Hình 5.20. Thêtn mới Report vào Project

Chẳng hạn, chúng ta tạo mới Report để trình bày danh sách mẩu tin trong
bảng CTHD như sau:
SELECT SoHD, MaH, (SoLuong*DonGia) AS [Thanh Tien]
FROM CTHD
Trong bước chọn nhóm dữ liệu, ta có thể chọn cột SoHD cho phần Group và
các cột còn lại vào phần Details như hình 5.21.

Hình 5.21. Chọn cột dữ liệu


Sau khi nhấn nút Finish, ta tìm thấy Report2 có giao diện như hình sau:

81
Hình 5.22. Giao diện Report2
5.3.3 Khai báo biểu thức
Để thêm cột vào Report, chúng ta click chuột phải vào cột tùy ý rồi chọn
Insert Column → Right, ta có thể khai báo cột được thêm vào là ThanhTien với
biểu thức là: =Fields!SoLuong.Value*Fields!DonGia.Value

Hình 5.23. Thêm cột dữ liệu


Khi chuyển sang Preview, kết quả trình bày tương tự như hình sau:

82
Hình 5.24. Khai báo biểu thức cho cột dữ liệu
5.3.4 Định dạng số
Nếu chúng ta muốn định dạng số thì khai báo chuỗi định dạng trong thuộc
tính Format của điều khiển TextBox tương ứng như hình 5.25.

Hình 5.25. Khai báo định dạng số cho cột ThanhTien

83
Chuyển sang ngăn Preview, ta có thể tìm thấy định dạng số của các cột trên
Report trình bày tương tự như hình 5.26.

Hình 5.26. Khai báo định dạng cho số


5.3.5 Sử dụng hàm
Trong trường hợp tính tổng số lượng cho từng sản phẩm, ta có thể khai báo
biểu thức =Sum(Fields!SoLuong.Value) trong TextBox ứng với cột SoLuong
thuộc hàng mã sản phẩm.
Tương tự như vậy, ta có thể khai báo hàm Avg cho cột DonGia và hàm Sum
cho các cột còn lại bằng cách chọn hàm trong mục Common Functions như hình
5.27.

84
Hình 5.27. Sử dụng hàm của Report
Sau khi khai báo hàm Sum và Avg cho các cột dữ liệu, chúng ta chuyển sang
mục Preview, kết quả trình bày như hình 5.28.

85
Hình 5.28. Khai báo hàm Sum và Avg cho mỗi sản phẩm
Bằng cách thực hiện tương tự như trên, ta có thể click chuột phải trên header
của từng hàng, cửa sổ xuất hiện như hình 5.29.

Hình 5.29. Thêm phần footer của bảng

86
Trong phần Footer, ta có thể thêm điều khiển TextBox và khai báo hàm Sum và Avg
cho các cột dữ liệu tương ứng.
Chẳng hạn, trong Report1.rdl, chúng ta khai báo Sum cho các cột SoLuong,
ThanhTien và Avg cho cột DonGia.
Sau đó, chuyển sang mục Preview, kết quả của phần tính tổng trong Footer sẽ trình
bày tương tự như hình 5.30.

Hình 5.30. Khai báo Footer


5.3.6 Tham số trong Report
Nếu khai báo phát biểu SQL hay thủ tục nội tại có tham số, khi chọn vào mục Preview,

87
Report Viewer yêu cầu chúng ta nhập tham số vào TextBox tương ứng như hình 5.31.

Hình 5.31. Yêu cầu nhập tham số


Chẳng hạn, chúng ta nhập vào ô MaH là H01 và nhấn Enter hay chọn nút View
Report, lập tức hóa đơn chi tiết của sản phẩm này trình bày như hình 5.32.

Hình 5.32. Sử dụng tham số


Chú ý: Để thực hiện minh họa cho tham số, chúng ta tạo mới Report có tên
Report3.rdl rồi khai báo phát biểu SQL như sau:
SELECT *
FROM CTHD
WHERe MaH = @MaH
Nếu không nhập giá trị của tham số mà nhấn nút View Port, ta sẽ nhận được cảnh

88
báo như hình 5.33.

Hình 5.33. Cảnh báo giá trị cho tham số


Để khai báo thuộc tính cho tham số của phát biểu SQL hay thủ tục nội tại, ta có thể
chọn vào Report Data → Parameters → Click chuột phải vào tham số MaH → Parameter
Properties, cửa sổ xuất hiện như hình 5.34.

Hình 5.34. Khai báo thuộc tính tham số


Chú ý: Nếu cho phép giá trị rỗng cho tham số, chúng ta check vào tùy chọn “Allow

89
blank value (“”)”.
Đối với trường hợp tham số thêm vào phát biểu SQL hay thủ tục nội tại sau khi thiết
kế Report, ta có thể khai báo chúng bằng cách Parameters → Click chuột phải rồi chọn
Add Parameters rồi tiếp tục khai báo các thuộc tính khác tương tự.
5.3.7 Xuất dữ liệu ra tập tin
Khi chọn vào mục Preview hay chạy chương trình ở chế độ Debug, chúng ta có thể
xuất dữ liệu nhìn thấy trên màn hình ra tệp tin với các định dạng như PDF, Excel, CSV,
XML, TIFF.
Chẳng hạn, ta chọn vào mục Preview khi đang thiết kế Report3.rdl và nhập H03 vào
phần tham số, nhấn nút View Report, kết quả trình bày như hình 5.35.

Hình 5.35. Hóa đơn chi tiết của mã hàng H03

Tiếp tục nhấn biểu tượng , danh sách các loại định dạng tập tin xuất hiện như
hình sau:

90
Hình 5.36. Danh sách dạng tập tin cho phép xuất
Ví dụ, ta chọn vào Excel rồi đặt tên là Report3.xls và lưu ngoài ổ đĩa C:\. Sau đó,
chuyển sang cửa sổ Windows Explorer, chọn tập tin này và kích hoạt, dữ liệu trong tập tin
Excel sẽ trình bày tương tự như hình 5.37.

Hình 5.37. Dữ liệu xuất ra Excel


5.3.8 Chạy chương trình ở chế độ Debug
Để chọn Report mặc định kích hoạt mỗi khi chúng ta chạy chương trình, ta có thể
chọn Project → Set as Startup Object hay tên Report thuộc phần StartItem trong cửa sổ
thuộc tính của Project như hình sau:

91
Report1.rdl Report1.rdl

Hình 5.38. Chọn Report để khởi động


5.3.9 Triển khai Report
Chúng ta sẽ không tìm thấy hai Report có tên Report2.rdl và Report3.rdl khi chưa
chạy chức năng Deploy. Điều này có nghĩa là ta chỉ tìm thấy Report1.rdl trong phần Report
Service của SQL Server như hình 5.39.

Hình 5.39. Đối tượng Report1.rdl


Nếu chọn vào Deploy Solution hay Deploy Reports như hình 5.40 thì ta có thể tìm
thấy Report2.rdl và Report3.rdl trong phần đăng ký Report Service của SQL Server Data
Tools như hình 5.41.

92
Hình 5.40. Triển khai Report
Lưu ý: Chúng ta cũng có thể tìm thấy tham số của phát biểu SQL hay thủ tục nội tại
bằng cách kích hoạt cửa sổ thuộc tính rồi chọn vào mục Parameters như hình 5.42.
Chú ý: Để người sử dụng có thể truy cập chúng bằng trình duyệt, sau khi thiết kế
xong Report, chúng ta cần Deploy chúng trên Report Server.

Hình 5.41. Triển khai Report2.rdl và Report3.rdl

93
Hình 5.42. Cửa sổ tuỳ chỉnh các thuộc tính của tham số
Tuy nhiên, ta có thể Deploy các Report trong Business Intelligent Development
Studio sau khi cấu hình Report Service.
5.4 Cấu hình Report server
Sau khi thiết kế Report, để người sử dụng có thể sử dụng Report này thông qua trình
duyệt, chúng ta cần tạo và cấu hình ứng dụng Web tương ứng trong IIS (Internet
Information Service).
Chú ý: Ứng dụng Web mà ta cấu hình trong IIS là Report Server, nơi cung cấp các
dịch vụ cho phép người sử dụng truy cập Report và tương tác Report thông qua Web
Service.
Để làm điều này, trước tiên chúng ta mở SQL Server 2014 Reporting Services
Configuration Manager, cửa sổ xuất hiện như hình sau:

94
Hình 5.43. Cấu hình Report Service
Chú ý: chúng ta có thể tìm tên Server bằng cách chọn vào nút Find và chọn Instance
cùa SQL Server 2014 từ ComboBox.
Giả sử, chúng ta chọn tên máy là DESKTOP-IC5A2DA và Instance của SQL Server
2014 trên máy này là SQLEXPRESS như trong hình trên rồi nhấn nút Connect. Sau khi kết
nối thành công, ta có thể tìm thấy cửa sổ kế tiếp xuất hiện như hình 5.44.

Hình 5.44. Cấu hình Report Service


Chúng ta cũng có thể tìm thấy danh sách các chức năng cấu hình cho Report Service

95
phía bên trái trong hình 5.44.
Bước kế tiếp, ta chọn Web Service URL, cửa sổ xuất hiện như hình 5.45.

Hình 5.45. Tạo ứng dụng Report Service


Bằng cách đặt tên ứng dụng Web là ReportServer_SQLEXPRESS (tên do chúng ta
đặt tùy ý) và nhấn nút Apply, cửa sổ kế tiếp xuất hiện như hình 5.46.

Hình 5.46. Tạo Report Server thành công


Chúng ta có thể tìm thấy thư mục chứa tập tin của ứng dụng Reportserver trong thư
mục C:\Program Files\Microsoft SQL Server\MSRS12.SQLEXPRESS\Reporting
Services\ReportServer.
Sau đó, mở cửa sổ IIS từ Administrative Tools trong cửa sổ Control Panel, ta có thể
tìm thấy ứng dụng ReportServer xuất hiện như hình 5.47.

96
Hình 5.47. Ứng dụng Reportserver trong IIS
Mặc định đặc quyền của ứng dụng này chỉ cho phép người dùng trong hệ điều hành
sử dụng thay vì Anonymous; để kiểm tra điều này, ta có thể chọn vào ngăn Directory
Security → Edit, cửa sổ xuất hiện như hình 5.48.

97
Hình 5.48. Thay dổi đặc quyền truy cập của người sử dụng

98
CHƯƠNG 6. CHỨC NĂNG QUẢN TRỊ SQL SERVER
6.1 Backup và Restore cơ sở dữ liệu
Sao lưu và phục hồi (Backup và Restore) dữ liệu trong SQL SERVER là một trong
những thao tác quan trọng mà người quản trị cơ sở dữ liệu (Database Administrator) phải
thực hiện. Có rất nhiều lý do mà người Quản trị CSDL phải đảm bảo để dữ liệu của hệ
thống được chính xác, không bị sai lệch và cần phải giảm tối đa số lần phải phục hồi dữ
liệu, luôn theo dõi, kiểm tra thường xuyên để phát hiện các trục trặc trước khi nó xảy ra.
Phải dự phòng các biến cố có thể xảy ra và bảo đảm rằng có thể nhanh chóng phục hồi dữ
liệu trong thời gian sớm nhất có thể được.
Các dạng biến cố hay tai họa có thể xảy ra là:

• Ðĩa chứa file dữ liệu hoặc file Transaction Log hay file hệ thống bị mất
• Server bị hư hỏng
• Những thảm họa tự nhiên như bão lụt, động đất, hỏa hoạn
• Toàn bộ server bị đánh cắp hoặc phá hủy
• Các thiết bị dùng để backup – restore bị đánh cắp hay hư hỏng
• Những lỗi do vô ý của người sử dụng như lỡ tay xoá dữ liệu chẳng hạn
• Những hành vi mang tính phá hoại của nhân viên như cố ý đưa vào những thông
tin sai lạc.
• Bị hack (nếu server có kết nối với internet).
Nếu như thao tác sao lưu (Backup database) được thực hiện để lưu dữ liệu và được
thực hiện thường xuyên thì thao tác phục hồi dữ liệu (Restore database) chỉ được thực hiện
khi nào máy chủ bị sự cố như hư ổ cứng hoặc dữ liệu bị mất do người dùng vô tình hoặc
cố ý xoá,…
Ngoài ra thao tác phục hổi dữ liệu cũng được thực hiện để sao chép database từ máy
chủ này sang máy chủ khác.

99
Hình 6.1. Backup và Restore cớ sở dữ liệu
6.1.1 Backup cơ sở dữ liệu
Backup cơ sở dữ liệu là chức năng cho phép ta tạo các bản sao cơ sở dữ liệu dự phòng
dạng tập tin đĩa hay băng từ, ... để có thể phục hồi nếu cơ sở dữ liệu gặp sự cô' hay hư hỏng.
Chúng ta cần chuẩn bị phương án backup cơ sở dữ liệu theo thời gian trong ngày và
tuần dựa vào mức độ thay đổi dung lượng do nhân viên nhập liệu.
Chẳng hạn, chúng ta sẽ backup cơ sở dữ liệu hằng ngày trong tuần vào lúc 12 và 18
giờ theo hình thức trực tiếp thực hiện hay theo lịch trình cho trước.
Khi backup cơ sở dữ liệu, ta có thể chỉ định loại backup là đĩa cứng (Disk) hay thiết
bị backup (Tape backup).
Ngoài ra, ta có thể backup phần dữ liệu phát sinh (Differential) sau lần backup trước
đó hay backup toàn phần (Full).
SQL Server cung cấp các loại backup như sau:
• Full Backup: Backup toàn bộ dữ liệu tại thời điểm thực hiện (thường dùng nhất).
• Differential Backup: Backup các dữ liệu mới được cập nhật kể từ lần full backup
trước đó.
• File/Filegroup Backup: backup những file và filegroup.
• Transaction Log Backup: Backup các log record hiện có trong log file. Nghĩa là
sao lưu các hành động (các thao tác xảy ra đối với database) chứ không sao lưu
dữ liệu. Đồng thời nó cũng cắt bỏ (truncate) log file, loại bỏ các log record vừa

100
được backup ra khỏi log file. Vì thế khi thấy log file tăng quá lớn, có thể là chúng
ta chưa từng backup transaction log bao giờ.
• Partial Backup: sao lưu một phần
• Copy Only Backup: Chỉ sao chép các bản sao lưu có thể được thực hiện trên các
tập tin cơ sở dữ liệu và các bản ghi giao dịch để tạo ra một bản sao lưu mà không
ảnh hưởng tới chuỗi của các sao lưu cần thiết để khôi phục lại một cơ sở dữ liệu.
Full Backup là cách khôi phục cơ sở dữ liệu đơn giản nhất cung cấp cho người sử
dụng một giải pháp hoàn hảo. Full Backup sẽ tạo một thư mục có chứa toàn bộ dữ liệu,
gồm có Transaction Logs. Khi thực hiện xem một thư mục trên SQL Server Management
Studio Object Explorer, ta có thể thấy một số đối tượng quen thuộc như Tables, Views,
Stored Procedures hay Security.
❖ Cú pháp: Full Backup
Backup database <tên database> TO <tên logic backup>
Ví dụ:
BACKUP DATABASE AdventureWorks
TO DISK = ‘D:\Backup\AdventureWorks.bak’
❖ Cú pháp: Differential Backup
Backup database <tên database>
TO <tên logic backup> WITH DIFFERENTIAL
Ví dụ:
BACKUP DATABASE AdventureWorks
TO DISK = ‘D:\Backup\AdventureWorks.bak’
WITH DIFFERENTIAL
❖ File/Filegroup Backup
--Backup of the "SWUserData1" User-Defined Filegroup
BACKUP DATABASE SmallWorks
FILEGROUP = ‘SWUserData1'
TO DISK = ‘D:\Backup\SmallWorksUserData1FG.BAK’
--Differential Filegroup Backup of the "SWUserData1" User-Defined Filegroup
BACKUP DATABASE SmallWorks
FILEGROUP = 'SWUserData1'
TO DISK = ‘D:\Backup\SmallWorksUserData1FGDIFF.BAK'
WITH DIFFERENTIAL

101
❖ Cú pháp: Transaction Log Backup
BACKUP LOG <tên database> TO < tên logic backup >
Ví dụ:
BACKUP LOG AdventureWorks
TO DISK = ‘C:\Backup\AdventureWorks.bak’
❖ Cú pháp: Copy Only Backup
Backup database <tên database> TO <tên logic backup>
WITH COPY_ONLY
Ví dụ:
BACKUP DATABASE SmallWorks
TO DISK = 'C:\SQLData\SmallWorksCopyOnly.BAK'
WITH COPY_ONLY
Để backup nhiều cơ sở dữ liệu, chúng ta sử dụng backup device bằng cú pháp sau:
Sp_addumpdevice 'device_type', 'logical_name', 'physical_name' Trong đó:
device_type: có thể là (disk, pipe, tape)
Hoặc chúng ta có thể backup device bằng cách dùng MS như sau: Chọn tên cơ sở dữ
liệu → Right-Click → Tasks → Back up, cửa sổ xuất hiện tương tự như hình 6.2.

Hình 6.2. Backup cơ sở dữ liệu

102
Ví dụ, nếu chúng ta backup cơ sở dữ liệu QLBH thì chọn vào nút Add, rồi chọn thư
mục để lưu tập tin .bak như hình 6.3.

Hình 6.3. Chọn thư mục để lưu tập tin .bak


Chẳng hạn, chúng ta đặt tên là QLBH.bak như hình 6.4. Phần tiếp theo, mục “Backup
set will expire” được sử dụng khi backup và tạo các nhóm backup Media Sets. Bước cuối
cùng trên màn hình đó chính là định vị vị trí để backup. SQL Server sẽ được mặc định đặt
tất cả backup vào thư mục MSSQL\Backup. Hơn nữa, các file được backup thường được
kết thúc bằng file mở rộng .BAK.

Hình 6.4. Đặt tên tập tin backup


Chọn nút OK và nhấn OK tiếp để kết thúc quá trình backup cơ sở dữ liệu. Công việc
cuối cùng đó chính là tùy chọn nén cho cơ sở dữ liệu trên SQL Server. Điều này giúp giảm
dung lượng trên file gốc một cách đáng kể. Hơn nữa, nếu thực hiện nén file còn giúp việc
khôi phục dữ liệu dễ dàng hơn. Tuy nhiên, nhược điểm của tính năng này có chính là chúng
chiếm khá nhiều dung lượng trong máy tính trong lúc backup.

103
Sau bước này, hãy click nút Ok ở góc bên phải để hoàn tất quá trình sql backup. Khi
backup hoàn tất, trên màn hình sẽ hiện thông báo như hình sau.

Hình 6.5. Backup cơ sở dữ liệu thành công


Một tùy chọn khác là “Files and Filegroups” được sử dụng khi cơ sở dữ liệu cần tạo
nhằm mục đích mở rộng thêm các thuộc tính hoặc thêm thư mục trên hệ điều hành. Với
thao tác này còn được thực hiện trên cơ sở dữ liệu lớn nhằm tăng hiệu quả làm việc. Nếu
chúng ta mong muốn sử dụng thiết lập này thì hãy chọn một cơ sở dữ liệu bất kỳ hoặc tất
cả Filegroup.
Việc backup sql server 2008 có thể được thực hiện nhanh hơn tại cửa sổ dòng lệnh.
Để có thể backup một cơ sở dữ liệu trên sql server 2008, hãy mở một Query Window từ
Management Studio, sau đó bấm chọn New Query tại vị trí góc bên phải. Sau đây là câu
lệnh thực thi Full Backup:

BACKUP DATABASE AdventureWorksLT2008

TO DISK = 'C:Program FilesMicrosoft SQL


ServerMSSQL10.MSSQLSERVERMSSQLBackuptest.bak'

WITH FORMAT;

Việc thực hiện backup bằng câu lệnh có ưu điểm là nhanh và dễ dàng hơn. Tuy nhiên,
chúng ta không thể backup tất cả đầy đủ thư mục mà chỉ được backup một cách đơn lẻ từng
bước. Việc backup vào băng, ta nên sử dụng “To TAPE” thay thế cho “To Disk”, câu lệnh
sẽ giúp cho chúng ta backup vào đĩa và thư mục đích. Cuối cùng, hãy “With Format” để
tạo một thư mục mới. Nếu không có câu lệnh cuối này nếu đã có backup cũ tồn tại thì việc
backup mới không được thực hiện.
6.1.2 Restore cơ sở dữ liệu
Khi cơ sở dữ liệu bị nguy hiểm, quá trình phục hồi nên theo các bước sau:
- Backup nhật ký các giao tác: Backup log QLBH to QLBHLog

104
with no_truncate (sử dụng khi backup một CSDL đang trong tình trạng không hoạt
động)
- Phục hồi CSDL từ bảng backup gần nhất
- Phục hồi nhật ký các giao tác
Hoặc chúng ta cũng có thể thực hiện khôi phục dữ liệu trên SQL Server thông qua
các bước sau:
Bước 1: Đầu tiên, mở Microsoft SQL Server Management Studio chọn connect.
Bước 2: Bấm chọn cơ sở dữ liệu cần restore rồi chọn Right-click chọn Tasks chọn Restore
chọn Database.

Hình 6.6. Restore cơ sở dữ liệu


Bước 3: Sau đó cửa sổ restore database xuất hiện. Chọn Device và chọn đường dẫn để mở
tập tin sao lưu như trong hình dưới đây.

105
Hình 6.7. Tìm nơi đã lưu file sao lưu khi tạo trước đây
Bước 4: Click OK và màn hình dưới đây sẽ hiện ra.

Hình 6.8. Chọn CSDL cần khôi phục và tập tin sao lưu đã tạo trước đó
Bước 5: Chọn Files ở góc bên trái màn hình, hộp thoại dưới đây sẽ hiện ra.

106
Hình 6.9. Thông tin các file cho quá trình khôi phục CSDL
Bước 6: Chọn Options ở góc trái và click OK để bắt đầu khôi phục CSDL QLBH như
trong hình dưới đây.

Hình 6.10. Khôi phục thành công CSDL

107
Hoặc chúng ta có thể sử dụng câu lệnh để restore cơ sở dữ liệu. Cú pháp như sau:
Restore database <Your database name> from disk = '<Backup file location + file name>'
Ví dụ:
Lệnh sau đây được dùng để khôi phục lại CSDL có tên TestDB đã có tập tin sao lưu
tên là TestDB_Full.bak nằm tại địa chỉ D:\ nếu chúng ta chọn viết đè lên CSDL hiện tại.
Restore database TestDB from disk = 'D:\TestDB_Full.bak' with replace
Nếu tạo CSDL mới bằng lệnh khôi phục này và không có đường dẫn, file ghi lại lịch
sử trên máy chủ nói trên, hãy dùng lệnh dưới đây. Đảm bảo là có tồn tại đường dẫn D:\Data.
RESTORE DATABASE TestDB FROM DISK = 'D:\ TestDB_Full.bak' WITH MOVE
'TestDB' TO 'D:\Data\TestDB.mdf', MOVE 'TestDB_Log' TO 'D:\Data\TestDB_Log.ldf'
Muốn phục hồi các giao tác, ta thực hiện theo cú pháp sau:
Restore Log <tên database> From <thiết bị backup>
6.2 Attach và Detach cơ sở dữ liệu
6.2.1 Attach cơ sở dữ liệu
SQL Server hỗ trợ người dùng nhiều cách để attach một CSDL, trong đó, cú pháp để
attach CSDL như sau:
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’
Lưu ý: chép tập tin .mdf và .ldf vào thư mục MSSQL\Data trước khi thực hiện attach.
Để thực hiện attach CSDL bằng giao diện, chúng ta khởi động Microsoft SQL Server
Management Studio, và connect vào server.
Trong cây bên trái, click chuột phải lên mục Database → Chọn Attach.

108
Hình 6.11. Cửa sổ Attach Database
Trong cửa sổ tiếp theo, nhấn Add. Cửa sổ hiển thị như hình sau:

Hình 6.12. Tìm đường dẫn lưu file .mdf và .ldf


Tìm đến thư mục chứa file .mdf và .ldf (lưu ý 2 file này phải để cùng thư mục). Chọn
file .mdf, xong nhấn OK.

109
Trở lại cửa sổ Attach, lúc này thông tin của database đã được thể hiện. Ở đây chúng
ta có thể gõ lại tên database tại ô "Attach As". Xong nhấn OK.
6.2.2 Detach cơ sở dữ liệu
Detach là quá trình gỡ bỏ CSDL ra khỏi Instance của SQL Server. Cú pháp như sau:
Sp_detach_db ‘tên_database’
Hoặc chúng ta có thể tiến hành detach bằng cách khởi động Microsoft SQL Server
Management Studio, connect vào server.
Trong cây bên trái, trong mục Database, chuột phải vào database cần Detach → Tasks
→ Detach…

Hình 6.13. Chọn CSDL cần detach

Trong cửa sổ tiếp theo, Check vào ô Drop Connections (để ngắt toàn bộ kết nối đến
database này) → Nhấn OK.

110
Hình 6.14. Chọn Drop Connections

6.3 Copy cơ sở dữ liệu


Giả sử chúng ta đang thiết kế CSDL trên máy tính cá nhân và muốn chuyển CSDL
này sang máy khác, tức là ta phải copy CSDL sang máy khác. Các bước thực hiện như sau:
Đầu tiên, ngắt kết nối với CSDL cần copy. Trong cây bên trái, trong mục Database,
chuột phải vào CSDL cần di chuyển → Tasks → Detach…

Hình 6.15. Chọn CSDL cần copy


Vào đường dẫn copy File: C:\Program Files\Microsoft SQL
Server\MSSQL12.SQLEXPRESS\MSSQL\DATA

111
Hình 6.16. Tìm đường dẫn để copy file
Chúng ta có thể copy File này sang máy khác.
6.4 Import và Export cơ sở dữ liệu
Chúng ta có thể chọn vào tùy chọn ứng với đặc quyền truy cập theo hệ điều hành hay
SQL Server.
Chọn nút Next, tiếp tục chọn tùy chọn chép dữ liệu và đối tượng cơ sở dữ liệu hay sử
dụng câu truy vấn để trích lọc dữ liệu như hình 6.17.

112
Hình 6.17. Chọn phương thức Import dữ liệu

Chẳng hạn, chúng ta có các bảng dữ liệu như hình sau:

113
Hình 6.18. Chọn bảng để Import
Mặc định là bảng dữ liệu tương ứng với Sheet sẽ tạo ra, nhưng chúng ta có thể chọn
Table tương ứng để nhận dữ liệu rồi chọn nút Next.

114
Hình 6.19. Thực thi ngay tức thì chức năng Import
Tiếp tục chọn nút Next hay Finish, nếu import thành công, ta sẽ nhận kết quả trình
bày như hình 6.20.

Hình 6.20. Import thành công

115
Sau đó, chúng ta có thể tìm thấy bảng NHANVIEN sẽ được tạo ra trong cơ sở dữ liệu
QLBH tương tự như hình 6.21.

Hình 6.21. Kết quả sau khi Import


Tương tự như trường hợp import, chúng ta cũng có thể xuất dữ liệu từ cơ sở dữ liệu
SQL Server ra các loại cơ sở dữ liệu khác hoặc SQL Server bằng chức năng Export.
Chẳng hạn, ta có thể export dữ liệu của cơ sở dữ liệu QLBH ra tập tin Excel bằng
cách chọn tên cơ sở dữ liệu trong cửa sổ cơ sở dữ liệu nguồn xuất hiện như hình 6.22.

Hình 6.22. Chọn cơ sở dữ liệu nguồn


Chọn nút Next, chúng ta khai báo tên tập tin Excel để nhận dữ liệu tương tự như hình
6.23.

116
Hình 6.23. Chọn cơ sở dữ liệu đích

Tiếp tục chọn nút Next, tương tự như trường hợp import thì cửa sổ kế tiếp sẽ xuất
hiện như hình 6.24.

Hình 6.24. Chọn phương thức xuất dữ liệu

Nhấn nút Next, chọn vào các Table hay View để xuất dữ liệu ra tập tin Excel như
hình 6.25.

117
Hình 6.25. Chọn bảng xuất dữ liệu

Nhân nút Next rồi tiếp tục chọn nút Finish, ta có thể tìm thây tập tin QLBH.xls trong
ổ đĩa C:\ như hình 6.26.

Hình 6.26. Tập tin QLBH.xls


6.5 Chức năng tự động
SQL Server cung cấp nhiều chức năng cho phép nhà quản trị cơ sở dữ liệu thực hiện
tự động những tác vụ quản lý người sử dụng, cơ sở dữ liệu, bảo mật và các dịch vụ khác.
❖ Thiết lập quyền chạy service SQL Server Agent

118
- Bước 1: Vào Start → Run → gõ cmd → gõ Services.msc, kiểm tra service SQL
Server Agent đã được chạy với account admin của mạng chưa? Nếu chưa thì tiến
hành thiết lập account admin của mạng cho service này.
- Bước 2: Thiết lập quyền chạy service SQL Server Agent
- Click chuột phải vào service SQL Server Agent
- Chọn tab Log On, Chọn option Log on as this account. Nhập tên đăng nhập và mật
khẩu admin mạng của máy tính cài đặt SQL.
- Click OK khi thực hiện nhập xong, tiến hành restart lại service.
Lưu ý: Trong trường hợp người quản trị máy chủ thay đổi mật khẩu của account
quản trị máy tính đó thì phải tiến hành nhập lại mật khẩu cho service SQL Server
Agent
❖ Backup tự động cơ sở dữ liệu SQL Server
Để thực hiện chức năng tự động, chúng ta cần khởi động dịch vụ SQL Server Agent,
sau đó khai báo Job cùng với hành động cụ thể được cài đặt theo lịch trình định sẵn.
Chẳng hạn, để backup cơ sở dữ liệu theo lịch trình đã định sẵn, ta có thể thực hiện
các bước như sau:

Để tạo job, ta chọn vào mục Jobs và Click chuột phải → New Job, cửa sổ xuất hiện
như hình 6.27.

Hình 6.27. Tạo job


Một cửa sổ mới sẽ hiện ra cho phép ta nhập thông tin về job cần tạo. Ở ô Name, ta
nhập “Backup – Daily”, và ở Owner ta nhập “sa”:

119
Hình 6.28. Khai báo phát biểu BACKUP DATABASE

Sau đó ở hàng menu bên trái, click chuột vào dòng “Steps”, rồi bấm vào nút “New…”:

Hình 6.29. Khai báo Step

120
Chú ý: Ở phần “Command” là nơi nhập các câu lệnh để thực hiện công việc nào đó
mà chúng ta muốn làm. Cụ thể trong ví dụ này là việc backup dữ liệu một cách tự động:
Ở cửa sổ mới này, ở ô “Step name” ta nhập “Backup”, để nguyên các ô còn lại, và ở
phần soạn thảo “Command” hãy nhập đoạn code sau:
BACKUP DATABASE CongTyDB
TO DISK = 'D:\Backup\CongTyDB.bak' WITH INIT
Chúng ta cần đổi tên database và đường dẫn tương ứng với môi trường của chúng ta.
Ở cuối câu lệnh là mệnh đề “WITH INIT” để đảm bảo hàng ngày chạy nó sẽ ghi đè lên file
hiện tại. Nếu không có mệnh đề này, các bản backup sẽ được ghi nối tiếp nhau trong cùng
một file và file backup sẽ tăng kích thước lên nhanh chóng.
Sau khi nhập xong, click OK và trở lại màn hình ban đầu.
Chú ý: Ở mục "Steps" ta có thể thêm mới hoặc chỉnh sửa các step:

Hình 6.30. Các tuỳ chỉnh ở mục Steps


Và để chỉnh sửa các câu lệnh script, ta click chọn "Edit":

121
Hình 6.31. Chỉnh sửa câu lệnh Script
Giờ ở hàng menu bên trái, ta chọn “Schedules” và click vào “New…” để tạo một lịch
làm việc cho Job:

Hình 6.32. Tạo lịch làm việc cho job

122
Trong ô “Name” ta nhập vào “Backup – Daily”; ở ô “Occurs” ta chọn “Daily” và
“Occurs once at:” chọn “1:00:00 AM”; các phần khác giữ nguyên. Như vậy backup job sẽ
chạy hàng ngày vào lúc 1h sáng. Lý do của việc chọn giờ như vậy là vì thường ban đêm
database có ít hoạt động và do đó không ảnh hưởng nhiều đến user. Hoặc chúng ta cũng có
thể chọn giờ thích hợp cho mình.
Sau đó click “OK” để trở về màn hình trước và click “OK” lần nữa để quay trở lại
Management Studio. Việc setup như vậy là đã xong, chúng ta đã tạo được một job có tên
“Backup – Daily” để backup database và sẽ được chạy hàng ngày vào lúc 1h sáng.
6.6 Cấu hình IP và Port
Khi phát triển các ứng dụng Web, hoặc các ứng dụng desktop đòi hỏi dữ liệu tập trung
tức thì để phục vụ cho việc ra báo cáo mà chương trình thì lại cách xa nhau về mặt địa lý,
thì ta sẽ cần đến tính năng kết nối từ xa của SQL Server. Tính năng này có trên tất cả các
phiên bản SQL Server.
Để cho phép truyền dữ liệu theo nghi thức truyền thông là Named Pipes hay TCP/IP
từ máy trình khách vào Instance của SQL Server, chúng ta có thể chỉ định chúng trong cửa
sổ như hình 6.33.

Hình 6.33. Cấu hình nghi thức truyền dữ liệu


Trong trường hợp ứng dụng trình khách kết nối cơ sở dữ liệu bằng nghi thức TCP/IP
thì port mặc định là 1433, khi đó chuỗi kết nối sẽ không cần khai báo thuộc tính port.
Chẳng hạn, chúng ta khai báo chuỗi kết nối cơ sở dữ liệu bằng cách đặc quyền hệ
điều hành như sau:

123
server=(local); database=databaseName;
Integrated Security=True;
Tuy nhiên, nếu ta thay đổi port thì chuỗi kết nối phải được thay đổi. Ví dụ, ta khai
báo chuỗi kết nối cơ sở dữ liệu với port là 1455 bằng đặc quyền hệ điều hành như sau:
server=(local); database=databaseName; Integrated Security=True; Port = 1455
Chú ý: Mục đích của việc thay đổi port là nhằm giới hạn sự truy cập trái phép trừ khi
ứng dụng chỉ định đúng số port cùng với các thuộc tính khác hợp lệ.
Để thay đổi port, ta kích hoạt cửa sổ thuộc tính TCP/IP như hình 6.34.

Hình 6.34. Cấu hình Port


Nếu ta kết nối vào cơ sở dữ liệu nằm trên Server khác mà nghi thức truyền dữ liệu
chỉ cho phép TCP/IP thì chúng ta khai báo trong phần Client Protocols như hình 6.35.

124
Hình 6.35. Cấu hình TCP/IP cho phần Client Protocols
Tương tự như vậy, nếu Port của Server cấu hình khác với giá trị mặc định, chúng ta
cũng cần khai báo port trong cửa sổ TCP/IP như hình 6.36.

Hình 6.36. Cấu hình port cho ứng dụng trình khách
Chứ ý: Nếu cần kiểm chứng sự khác biệt về port thông qua cách khai báo chuỗi kết
nối thì phải sử dụng đối tượng ADO.NET để kết nối SQL Server.

125

You might also like