Tổng quan hệ quản trị cơ sở dữ liệu
Một số khái niệm
Dữ liệu là những sự kiện có thể ghi lại được, và thường không có ý nghĩa Dữ liệu được gọi là thông tin sau khi được người sử dụng xử lý trong một ngữ cảnh cụ thể để trở nên có ý nghĩa
Cơ sở dữ liệu là tập hợp các dữ liệu liên quan có ý nghĩa, được lưu trữ trên các thiết bị nhớ thứ cấp để đáp ứng nhu cầu khai thác thông tin của nhiều người dùng hoặc nhiều chương trình ứng dụng.
Tính hiệu quả của hệ thống đòi hỏi phải thiết kế các cấu trúc dữ liệu phức tạp để biểu diễn dữ liệu trong CSDL Các nhà phát triển che dấu sự phức tạp này thông qua các mức trừu tượng nhằm đơn giản hóa sự trao đổi của người sử dụng với hệ thống:
- Mức vật lý : Mô tả cách thức lưu trữ dữ liệu trong thiết bị thứ cấp
- Mức ngữ nghĩa: Mô tả cách tổ chức dữ liệu trong CSDL và các mối liên hệ giữa các dữ liệu với nhau
- Mức khung nhìn : Mô tả chỉ một phần của CSDL theo góc nhìn hay nhu cầu của người sử dụng
Mô hình kiến trúc ba mức của hệ CSDL bao gồm:
Mô hình mức ngoài được dùng để mô tả dữ liệu ở mức luận lý và mức khung nhìn
Chúng cung cấp khả năng cấu trúc linh hoạt và cho phép các ràng buộc dữ liệu được xác định một cách tường minh
Mô hình mức khái niệm là mô tả trừu tượng dữ liệu theo góc nhìn tổng quát Nó xác định cấu trúc logic của cơ sở dữ liệu thông qua việc cung cấp thông tin chi tiết về cấu trúc dữ liệu.
Mô hình mức trong được dùng để mô tả dữ liệu ở mức thấp nhất Hai mô hình dữ liệu vật lý được biết rộng rãi nhất là mô hình hợp nhất (unifying model) và mô hình khung- bộ nhớ (frame-memory model )
Ngôn ngữ định nghĩa dữ liệu (data definition language) là loại ngôn ngữ được sử dụng để định nghĩa cấu trúc của các thành phần trong CSDL
Ngôn ngữ thao tác dữ liệu (data manipulation language ) là loại ngôn ngữ được sử dụng để thực hiện các thao tác như thu thập, chèn, sửa, và xóa dữ liệu
Ngôn ngữ điều khiển dữ liệu (data controlling language) là loại ngôn ngữ được sử dụng để để thực hiện các khai báo bảo mật thông tin và cấp quyền hạn khai thác CSDL cho những người sử dụng khác trong hệ thống.
Kiến trúc hệ cơ sở dữ liệu
Kiến trúc hệ thống cơ sở dữ liệu (CSDL) phụ thuộc chặt chẽ vào hệ thống máy tính cài đặt Có ba loại kiến trúc chính: kiến trúc khách-chủ, kiến trúc song song và kiến trúc phân tán.
Kiến trúc client-server chia sẻ trách nhiệm xử lý giữa hai loại máy tính: máy chủ (server) và máy trạm (client) Trong đó, máy chủ chịu trách nhiệm lưu trữ dữ liệu và xử lý các yêu cầu từ máy trạm Ngược lại, máy trạm chịu trách nhiệm xử lý dữ liệu cục bộ và gửi lại kết quả cho máy chủ, tương tác với người dùng và thực hiện các nhiệm vụ khác.
- Kiến trúc song song cho phép thực hiện cùng lúc nhiều truy vấn dữ liệu, qua đó làm tăng tốc độ các hoạt động của hệ CSDL, phản hồi các giao dịch nhanh hơn
- Kiến trúc phân tán được phát triển để quản lý dữ liệu phân tán, trên phương diện địa lý hay quản trị, trải rộng trên nhiều hệ CSDL.
Lịch sử phát triển của hệ quản trị cơ sở dữ liệu
Trong gần 50 năm, hệ quản trị CSDL đã trải qua nhiều giai đoạn phát triển
Giai đoạn đầu những năm 1960 (giai đoạn tiền CSDL – hệ thống hướng tập tin)
Dữ liệu được tổ chức lưu trữ trên các tập tin và được xử lý thông qua ngôn ngữ lập trình thế hệ thứ ba (ngôn ngữ bậc cao) như COBOL, BASIC Mỗi chương trình máy tính hay ứng dụng phần mềm làm việc với dữ liệu của riêng mình Do đó, sự trùng lặp dữ liệu, không chia sẻ, khó khăn trong việc nâng cấp là đặc điểm chung của các hệ thống hướng tập tin Giai đoạn này chưa có sự hiện diện của các hệ quản trị CSDL
Giai đoạn 1968-1980 chứng kiến sự ra đời của các hệ quản trị CSDL đầu tiên như IMS (mô hình phân cấp) của IBM và IDMS (mô hình mạng CODASYL) Tuy nhiên, nhược điểm của những hệ thống này và các mô hình CSDL này là người dùng phải hiểu sâu về cấu trúc vật lý của CSDL để truy cập thông tin, gây cản trở cho đội ngũ phát triển ứng dụng.
Giai đoạn 1970 đến nay (giai đoạn CSDL quan hệ - relational database) Người đặt nền tảng cho mô hình dữ liệu quan hệ là E.F Codd (1972) khi đề xuất tách tổ chức logic của CSDL khỏi các phương pháp lưu trữ vật lý Quan điểm này cho đến nay vẫn được đánh giá là đúng đắn và nhận được sự quan tâm phát triển trong suốt thời gian qua Đi tiên phong trong lĩnh vực CSDL, vào đầu những năm 1980, IBM giới thiệu hệ quản trị CSDL DB2, một trong những sản phẩm cốt lõi của IBM từ khi xuất hiện cho đến nay Sự bùng nổ của công nghệ thông tin là động lực thúc đẩy sự phát triển của hàng loạt hãng sản xuất phần mềm quản trị CSDL như Oracle, PARADOX, OS/2 Database Manager, DBase, FoxBase, FoxPro (Visual FoxPro), Sysbase, Informix, Sự xuất hiện của mô hình clien – server trong tính toán vào đầu những năm 1990 trở thành chuẩn mực cho việc phát triển hệ thống thông tin với ngôn ngữ lập trình hướng đối tượng Điều này thúc đẩy sự ra đời của dòng hệ quản trị CSDL hướng đối tượng (Object Database Management System – ODBMS) Từ giữa những năm 1990, Internet ra đời và thúc đẩy thị trường ứng dụng Web kết nối CSDL tăng trưởng mạnh mẽ Nhiều hệ quản trị CSDL mã nguồn mở xuất hiện trong giai đoạn này, tiêu biểu là MySQL và ProgreSQL
Giai đoạn 2000 đến nay (giai đoạn CSDL phi quan hệ - nonrelational database)
Trong bối cảnh các ứng dụng dựa trên Web phải luôn trực tuyến, và phải hỗ trợ một số lượng lớn các hoạt động đồng thời, việc duy trì một hệ quản trị CSDL theo mô hình quan hệ là không phù hợp Đồng thời, người ta cho rằng quá tốn kém để vận hành một hệ quản trị CSDL đầy đủ tính năng như Oracle, SQLServer, DB2 hay MySQL chỉ để quản lý một kho dữ liệu Tương tự, việc sử dụng SQL là quá mức cần thiết cho các yêu cầu tra cứu dữ liệu đơn giản Kết quả là sự ra đời của mô hình dữ liệu NoSQL Các hệ quản trị CSDL sử dụng mô hình dữ liệu NoSQL tiêu biểu là MongoDB, Apache Cassandra, và Redis
Các chức năng của hệ quản trị cơ sở dữ liệu
Hệ quản trị CSDL là một gói phần mềm có chức năng xác định, thao tác, truy xuất, quản lý toàn bộ dữ liệu trong CSDL Các chức năng chính của hệ quản trị CSDL bao gồm:
Dữ liệu được định nghĩa là khả năng định dạng dữ liệu, xây dựng các cấu trúc để lưu trữ và tổ chức dữ liệu, cũng như xác định mối quan hệ giữa các thành phần dữ liệu.
- Truy xuất và thao tác dữ liệu : Cho phép thực hiện các thao tác truy xuất, bổ sung và cập nhật dữ liệu
- Điều khiển truy cập : Cấp phát và kiểm soát các thao tác của người sử dụng dữ liệu, đảm bảo an toàn cho dữ liệu
Hệ thống quản lý cơ sở dữ liệu cung cấp các công cụ để duy trì tính hợp lệ và độ chính xác của dữ liệu trước khi tiến hành bất kỳ thay đổi nào Điều này giúp ngăn ngừa lỗi hệ thống và đảm bảo tính nhất quán của thông tin.
Cấu trúc tổng thể của hệ quản trị cơ sở dữ liệu
Cấu trúc tổng thể của một hệ quản trị CSDL được phác họa trong Hình 1.1 với các thành phần sau đây:
- CSDL lưu trữ : CSDL được lưu trữ tại thiết bị nhớ thứ cấp (ổ đĩa cứng) hoặc cấp 3
(Đĩa CDs, thiết bị nhớ di động, )
- Siêu dữ liệu (meta data): Dữ liệu về dữ liệu, mô tả các thành phần dữ liệu của CSDL
- Bộ quản lý lưu trữ : Quản lý việc lưu trữ trực tiếp trên ổ đĩa
Bộ xử lý truy vấn đóng vai trò trung tâm trong việc điều khiển truy vấn, bao gồm cả câu hỏi và yêu cầu thay đổi dữ liệu hoặc siêu dữ liệu Trách nhiệm chính của bộ phận này là tìm ra phương pháp tối ưu để thực hiện các thao tác dựa trên truy vấn đầu vào.
- Bộ quản lý giao dịch : Đảm bảo tính nguyên tố, tính nhất quá, tính biệt lập và tính duy trì xuyên suốt trong quá trình thao tác đối với dữ liệu
- Thao tác của người dùng : Hệ quản trị CSDL đáp ứng các thao tác sau đây từ phía người sử dụng: o Truy vấn dữ liệu: hỏi đáp về dữ liệu lưu trữ, được tạo ra theo giao diện truy vấn hoặc qua giao diện chương trình ứng dụng o Cập nhật dữ liệu: thao tác thay đổi dữ liệu như thêm, sửa, xoá dữ liệu lưu trữ, được tạo ra theo hai cách như trên
Thay đổi lược đồ liên quan đến việc thay đổi cấu trúc logic của dữ liệu, được thực hiện bởi nhân viên thiết kế trong quá trình phát triển ứng dụng hoặc nhân viên quản trị trong quá trình khai thác ứng dụng.
Các xu hướng mới về hệ quản trị cơ sở dữ liệu
Các khái niệm trong quản trị CSDL hầu như không thuộc về loại thay đổi dễ dàng, do chi phí chuyển đổi giữa các phương pháp tiếp cận công nghệ sẽ áp đảo các nhà sản xuất, quản lý và thiết kế Tuy nhiên, có một số xu hướng trong quản trị CSDL và biết cách tận dụng chúng sẽ mang lại lợi ích cho tổ chức Sau đây là một số xu hướng hiện tại:
CSDL kết nối SQL/NoSQL Xu hướng mới nhất trong các sản phẩm CSDL là các sản phẩm không chỉ bao gồm một cấu trúc CSDL duy nhất Thay vào đó, CSDL kết nối SQL và NoSQL được kết hợp nhằm mang lại cho người dùng những khả năng tốt nhất được cung cấp bởi cả hai Các sản phẩm loại này cho phép người dùng truy cập CSDL NoSQL theo cách tương tự như CSDL quan hệ
CSDL trên đám mây/nền tảng như là dịch vụ Khi các nhà phát triển tiếp tục thúc đẩy các doanh nghiệp của họ lên đám mây, các tổ chức đang cân nhắc cẩn thận giữa sự cân bằng giữa công khai và riêng tư Các nhà phát triển cũng đang xác định cách kết hợp các dịch vụ đám mây với các ứng dụng và cơ sở hạ tầng hiện có Các nhà cung cấp dịch vụ đám mây đưa ra nhiều tùy chọn cho người quản trị CSDL Tiến tới đám mây không có
6 nghĩa là thay đổi các ưu tiên của tổ chức mà là tìm kiếm các sản phẩm và dịch vụ giúp nhóm các tổ chức đạt được mục tiêu
Tự động hóa quản trị CSDL là một xu hướng mới nổi nhằm đơn giản hóa các tác vụ bảo trì, khắc phục lỗi, triển khai, cập nhật và nâng cấp Tuy nhiên, tính hữu ích của tự động hóa quản trị CSDL có thể bị hạn chế do sự xuất hiện của các rủi ro không lường trước, đòi hỏi sự can thiệp của con người để giải quyết.
Tăng cường tập trung vào bảo mật vẫn là xu hướng quan trọng nhất Tình hình vi phạm dữ liệu bán lẻ cho thấy vai trò quan trọng của quản trị viên cơ sở dữ liệu trong việc hợp tác với các chuyên gia bảo mật CNTT để đảm bảo dữ liệu khỏi những rủi ro Bất kỳ tổ chức nào lưu trữ dữ liệu đều dễ bị tấn công Do đó, quản trị viên cơ sở dữ liệu cần phối hợp chặt chẽ với các nhóm bảo mật để giải quyết các điểm yếu bảo mật tiềm ẩn bên trong, chẳng hạn như các vấn đề liên quan đến quyền truy cập mạng, cấu hình phần cứng hoặc phần mềm chưa đúng, vì đây là những lỗ hổng có thể dẫn đến rò rỉ dữ liệu.
Dữ liệu lớn Dữ liệu lớn không nhất thiết có nghĩa là nhiều dữ liệu Những gì nó thực sự đề cập đến là khả năng xử lý bất kỳ loại dữ liệu nào: những gì thường được gọi là
Câu hỏi ôn tập
1- Trình bày khái niệm Hệ CSDL, góc nhìn, mô hình và ngôn ngữ dữ liệu
2- Trình bày các kiến trúc Hệ CSDL
3- Trình bày lịch sử phát triển của Hệ quản trị CSDL
4- Trình bày các chức năng chính của Hệ quản trị CSDL
5- Trình bày cấu trúc tổng thể của Hệ quản trị CSDL
6- Trình bày một số xu hướng mới về Hệ quản trị CSDL
Tổng quan hệ quản trị Microsoft SQL Server
Lịch sử phát triển Hệ quản trị Microsoft SQL Server
Sự bắt đầu Giữa năm 1988, Microsoft kết hợp với Ashton-Tate và Sybase tạo ra một biến thể của Sybase SQL Server cho IBM OS/2 Đây là phiên bản đầu tiên của Microsoft SQL Server và là bước gia nhập thị trường CSDL cấp doanh nghiệp của Microsoft, cạnh tranh với Oracle, IBM, Informix, Ingres và sau đó là Sybase SQL Server 4.2 được xuất xưởng vào năm 1992, đi kèm với OS/2 phiên bản 1.3, tiếp theo là phiên bản 4.21 dành cho Windows NT, được phát hành cùng với Windows NT 3.1 Sau đó, SQL Server 6.0 là phiên bản đầu tiên được thiết kế cho Windows NT và không bao gồm bất kỳ hướng dẫn nào từ Sybase Vào ngày 12 tháng 6 năm 1988, Microsoft kết hợp với Ashton- Tate và Sybase để tạo ra một biến thể của Sybase SQL Server cho IBM OS / 2 (sau đó được phát triển chung với Microsoft), được phát hành vào năm sau [1] Đây là phiên bản đầu tiên của Microsoft SQL Server và đóng vai trò là bước gia nhập thị trường CSDL cấp doanh nghiệp của Microsoft, cạnh tranh với Oracle, IBM, Informix, Ingres và sau đó là Sybase SQL Server 4.2 được xuất xưởng vào năm 1992, đi kèm với OS / 2 phiên bản 1.3, tiếp theo là phiên bản 4.21 dành cho Windows NT, được phát hành cùng với Windows NT 3.1 SQL Server 6.0 là phiên bản đầu tiên được thiết kế cho NT và không bao gồm bất kỳ hướng dẫn nào từ Sybase Giữa năm 1993, Sybase và Microsoft đã chia tay nhau và mỗi người theo đuổi các kế hoạch thiết kế và tiếp thị của riêng mình Microsoft đã thương lượng độc quyền đối với tất cả các phiên bản SQL Server được viết cho hệ điều hành của Microsoft Cho đến năm 1994, SQL Server của Microsoft đã mang ba thông báo bản quyền Sybase như một dấu hiệu về nguồn gốc của nó
SQL Server 7.0 là phiên bản viết lại toàn diện, sử dụng ngôn ngữ lập trình C++ dựa trên hệ máy Sybase vốn được phát triển bằng ngôn ngữ lập trình C Kích thước trang dữ liệu được mở rộng từ 2 KB lên 8 KB Cơ chế quản lý luồng người dùng (User Mode Scheduling - UMS) được giới thiệu để xử lý các luồng SQL Server hiệu quả hơn so với cơ chế xử lý của hệ điều hành Windows thời bấy giờ SQL Server 7.0 cũng đánh dấu sự ra đời của sản phẩm cơ sở dữ liệu đa chiều có tên là OLAP Services.
8 là Dịch vụ SQL OLAP SQL Server 7.0 đã hết được hỗ trợ chính kết thúc vào ngày 31 tháng 12 năm 2005
SQL Server 2000 mở rộng mã nguồn Sybase, hỗ trợ kiến trúc IA-64 Phiên bản này cải thiện đáng kể hiệu suất hệ thống với các công cụ IDE máy khách Ngoài ra, SQL Server 2000 còn giới thiệu các hệ thống bổ sung như dịch vụ tích hợp, báo cáo, phân tích, môi giới và thông báo.
Năm 2000 chứng kiến nhiều cải tiến trong ngôn ngữ T-SQL, gồm biến bảng, hàm do người dùng xác định, chế độ xem được lập chỉ mục, trình kích hoạt INSTEAD OF, ràng buộc tham chiếu theo tầng và hỗ trợ XML cơ bản Cùng với việc phát hành Gói Dịch vụ 3, Microsoft cũng tung ra phiên bản SQL Server 64-bit đầu tiên cho nền tảng Itanium IA-64 Tuy nhiên, các công cụ ứng dụng khách, chẳng hạn như Trình quản lý doanh nghiệp, vẫn phải chạy từ ứng dụng khách x86 32-bit.
64 là phiên bản 8.00.760, với ngày xây dựng là 6 tháng 2 năm 2003 SQL Server 2000 chính thức hết hỗ trợ từ ngày 8 tháng 4 năm 2008
SQL Server 2005 được phát hành vào tháng 11 năm 2005 với chức năng quản lý dữ liệu XML, ngoài dữ liệu quan hệ Với mục đích này, SQL Server đã sử dụng XML như một kiểu dữ liệu trong các cột CSDL hoặc dưới dạng các ký tự trong các truy vấn Dữ liệu XML đang được lưu trữ được xác minh dựa trên lược đồ XSD XML được chuyển đổi thành kiểu dữ liệu nhị phân nội bộ trước khi được lưu trữ trong CSDL Các phương pháp lập chỉ mục chuyên biệt đã được cung cấp cho dữ liệu XML Dữ liệu XML được truy vấn bằng XQuery; SQL Server 2005 đã thêm một số phần mở rộng vào ngôn ngữ T-SQL để cho phép nhúng các truy vấn XQuery vào T-SQL SQL Server 2005 cũng cho phép một máy chủ CSDL được hiển thị qua các dịch vụ web bằng cách sử dụng các gói Tabular Data Stream (TDS) được đóng gói trong các yêu cầu SOAP Nhờ vậy, khi dữ liệu được truy cập qua các dịch vụ web, kết quả được trả về dưới dạng XML Trong phiên bản này, các mã SQL được quản lý bởi một công cụ mới là Common Language Runtime (CLR) Đối với dữ liệu quan hệ, T-SQL đã được tăng cường các tính năng xử lý lỗi và hỗ trợ các truy vấn đệ quy với Common Table Expressions (CTE) SQL Server 2005 cũng đã được cải tiến với các thuật toán lập chỉ mục mới, cú pháp và hệ thống khôi phục lỗi tốt hơn Các trang dữ
9 liệu được tổng kiểm tra để có khả năng phục hồi lỗi tốt hơn và hỗ trợ đồng thời lạc quan đã được thêm vào để có hiệu suất tốt hơn Quyền và kiểm soát truy cập đã được thực hiện chi tiết hơn và bộ xử lý truy vấn xử lý việc thực thi đồng thời các truy vấn theo cách hiệu quả hơn Các phân vùng trên bảng và chỉ mục được hỗ trợ nguyên bản, vì vậy việc mở rộng CSDL thành một cụm dễ dàng hơn Nhiều tính năng khác được giới thiệu trong SQL Server
SQL Server 2005 introduced Multi-version Concurrency Control (MVCC), Multiple Active Results Set (MARS), and Dynamic Management Views (DMVs) It was the first version to support 64-bit platforms SQL Server 2005 officially reached its end of support on April 12, 2011.
SQL Server 2008 được phát hành vào tháng 8 năm 2008 nhằm mục đích làm cho việc quản lý dữ liệu tự điều chỉnh, tự tổ chức và tự bảo trì với sự phát triển của công nghệ SQL Server Always On SQL Server 2008 cũng bao gồm hỗ trợ cho dữ liệu có cấu trúc và bán cấu trúc, bao gồm các định dạng phương tiện kỹ thuật số cho hình ảnh, âm thanh, video và dữ liệu đa phương tiện khác Trong các phiên bản hiện tại, dữ liệu đa phương tiện như vậy có thể được lưu trữ dưới dạng BLOB (đối tượng lớn nhị phân), nhưng chúng là dòng bit chung Nhận thức nội tại về dữ liệu đa phương tiện sẽ cho phép thực hiện các chức năng chuyên biệt trên chúng SQL Server 2008 có thể được xem là một phần mềm lưu trữ dữ liệu cho nhiều loại dữ liệu khác nhau: XML, email, thời gian / lịch, tệp, tài liệu, không gian, cũng như thực hiện tìm kiếm, truy vấn, phân tích, chia sẻ và đồng bộ hóa trên tất cả các loại dữ liệu Kiểu dữ liệu FILESTREAM mới được giới thiệu trong SQL Server
2008 có thể được sử dụng để tham chiếu bất kỳ tập tin nào được lưu trữ trên hệ thống tập tin Dữ liệu có cấu trúc và siêu dữ liệu về tập tin được lưu trữ trong CSDL SQL Server, trong khi thành phần không có cấu trúc được lưu trữ trong hệ thống tập tin Các tập tin như vậy có thể được truy cập cả thông qua các API xử lý tệp Win32 cũng như qua SQL Server bằng T-SQL Sao lưu và khôi phục CSDL cũng sao lưu hoặc khôi phục các tập tin được tham chiếu SQL Server 2008 cũng hỗ trợ dữ liệu phân cấp một cách nguyên bản và bao gồm các cấu trúc T-SQL để xử lý trực tiếp chúng mà không cần sử dụng truy vấn đệ quy
SQL Server 2012 ra mắt vào tháng 6 năm 2021 với sự xuất hiện của Always On
SQL Server Failover Cluster Instances và Availability Groups Các tính năng này cung cấp một tập hợp các tùy chọn để cải thiện tính khả dụng của CSDL, đơn giản hóa việc di chuyển
CSDL giữa các phiên bản Khả năng lập trình được cải thiện với Dynamic Management Views and Functions và một số tính năng mới liên quan đến quản lý dữ liệu không gian, khám phá siêu dữ liệu Phiên bản này chú trọng tới việc nâng cao hiệu suất hoạt động với sự xuất hiện của ColumnStore Indexes, hay tăng cường khả năng bảo mật trong thiết lập, quyền mới, cải tiến quản lý vai trò và chỉ định giản đồ mặc định cho các nhóm, Đây cũng là phiên bản cuối cùng hỗ trợ OLEDB nguyên gốc
SQL Server 2014 được phát hành vào tháng 4 năm 2014, cung cấp một khả năng lưu trữ toàn bộ bảng dữ liệu trong bộ nhớ Trong các phiên bản trước, các bảng dữ có thể lưu trữ trên ổ đĩa vật lý, vì vậy phát sinh hàng loạt công việc liên quan khi truy cập dữ liệu trong bảng, bao gồm lưu trữ dữ liệu trong RAM, ghi các trang bị đẩy ra đĩa, tải các trang mới từ đĩa vật lý, khóa các trang trong RAM khi chúng đang được vận hành, Bằng cách coi một bảng được đảm bảo là hoàn toàn nằm trong bộ nhớ, có thể tránh được tình trạng nghẽn dữ liệu SQL Server 2014 cũng nâng cao giải pháp Always On (HADR) bằng cách tăng khả năng có thể đọc và duy trì hoạt động đọc khi ngắt kết nối chính-phụ Nó cung cấp các giải pháp sao lưu và khôi phục thảm họa kết hợp mới với Microsoft Azure, cho phép khách hàng sử dụng các kỹ năng hiện có với phiên bản SQL Server tại chỗ để tận dụng các trung tâm dữ liệu toàn cầu của Microsoft Ngoài ra, nó còn tận dụng các khả năng mới của Windows Server 2012 và Windows Server 2012 R2 để có khả năng mở rộng ứng dụng CSDL trong môi trường vật lý hoặc ảo
SQL Server 2016 được phát hành vào tháng 6 năm 2016 và chỉ hỗ trợ bộ xử lý 64 bit Đây là phiên bản cuối cùng có gói Server Packs
SQL Server 2017 xuất hiện vào tháng 10 năm 2017 có phiên bản chạy trên dòng hệ điều hành Linux
SQL Server 2019 xuất hiện vào tháng 11 năm 2019 với tính năng mới Big Data
Clusters for SQL Server Nó cũng cung cấp khả năng và cải tiến bổ sung cho nhiều dịch vụ khác của SQL Server
Cài đặt SQL Server
2.2.1 Lập kế hoạch cài đặt
Cài đặt SQL Server là quá trình phức tạp đòi hỏi nhiều yêu cầu về phần cứng, phần mềm và bảo mật Do đó, việc nắm rõ các yêu cầu cài đặt, kiểm tra cấu hình hệ thống và cân nhắc bảo mật là điều cần thiết để đảm bảo quá trình cài đặt thành công.
- Tìm hiểu chi tiết về các tính năng mới hoặc cải tiến trong phiên bản SQL Server muốn cài đặt
- Tìm hiểu các yêu cầu phần cứng, phần mềm tối thiểu để cài đặt và chạy phiên bản SQL Server; đối chiếu với cấu hình hiện tại của máy chủ để xác định bản cài đặt phù hợp
- Xem xét một số phương pháp bảo mật tốt nhất trước và sau khi cài đặt SQL Server
- Tìm hiểu cấu hình mặc định và tùy chọn của các dịch vụ cần thiết lập trong và sau khi cài đặt SQL Server
- Tìm hiểu cấu hình mặc định và tùy chọn của các giao thức mạng trong SQL Server
- Xem xét việc cài đặt nhiều phiên bản và sử dụng nhiều thể hiện SQL Server
- Xem xét việc sử dụng SQL Server được bản địa hóa (nếu có)
2.2.2 Lựa chọn phiên bản cài đặt
Microsoft phát hành nhiều phiên bản SQL Server khác nhau đáp ứng nhu cầu đa dạng của người dùng Mỗi phiên bản được thiết kế với các tính năng và khả năng riêng, phù hợp với các đặc điểm kỹ thuật và mục đích sử dụng khác nhau.
Số lượng core tối đa Không giới hạn 24 core 4 core Không giới hạn Kích thước vùng đệm tối đa Tối đa 128 GB 1410 MB Tối đa
Bộ nhớ cache phân đoạn cột tối đa Tối đa 32 GB 352 MB Tối đa
Bộ nhớ tối đa cho mỗi CSDL Tối đa 32 GB 352 MB Tối đa
Kích thước CSDL tối đa 524 PB 524 PB 10 GB 524 PB
Không giới hạn ảo hóa x
Các công cụ lập trình và phát triển x x x x
Báo cáo tuân thủ với tuân thủ SQL Server x x x x
Mã hóa dữ liệu trong suốt x x
Tích hợp dữ liệu nâng cao x x
Marts dữ liệu và kho dữ liệu x x x x
Xử lý truy vấn thích ứng x x
Dịch vụ dữ liệu chính, Dịch vụ chất lượng x x
Báo cáo và phân tích cơ bản x x x x
Tích hợp dữ liệu cơ bản x x x
Thông tin cơ bản của tổ chức x x x
Báo cáo trên thiết bị di động và KPI x x
Thông tin chuyên sâu tổ chức x x
Quyền truy cập Power BI Report Server x
Tích hợp Machine Learning cơ bản x x x x
Tích hợp Machine Learning nâng cao x x
Machine Learning cho Spark và Linux x
(Nguồn: Microsoft) 2.2.3 Xác định điều kiện phần cứng và phần mềm
Các yêu cầu sau đây về bộ nhớ và bộ xử lý áp dụng đối với tất cả các phiên bản của SQL Server 2019:
- Đĩa cứng (Hard disk): SQL Server yêu cầu tối thiểu 6GB đối với không gian lưu trữ trên đĩa cứng Ngoài ra, kích thước lưu trữ còn phụ thuộc vào các thành phần SQL Server được lựa chọn để cài đặt theo mục đích sử dụng Một máy chủ CSDL SQL Server có thể chiếm tới 8GB lưu trữ trong đĩa cứng
- Màn hình (Monitor): SQL Server yêu cầu màn hình có độ phân giải 800x600 hoặc cao hơn
- Internet : Các chức năng liên quan đến kết nối mạng yêu cầu truy cập Internet
Về RAM (Random access memory), cấu hình tối thiểu cho SQL Server bản Express là 1 GB, còn các phiên bản khác yêu cầu từ 4 GB trở lên Lựa chọn dung lượng RAM phù hợp còn phụ thuộc vào kích thước cơ sở dữ liệu và các hoạt động xử lý dữ liệu.
- Bộ xử lý CPU (Central Processing Unit): SQL Server yêu cầu x64 Processor 2.0
Các yêu cầu sau đây về bộ nhớ và bộ xử lý áp dụng đối với tất cả các phiên bản của SQL Server 2019:
- Hệ điều hành Windows 10 TH1 1507 hoặc cao hơn; Windows Server 2016 hoặc cao hơn
- NET framework tối thiểu tích hợp sẵn trong hệ điều hành tương thích
- Phần mềm mạng có sẵn trong các hệ điều hành tương thích
2.2.4 Tổ chức các ổ đĩa lưu trữ
Cài đặt SQL Server bao gồm một hoặc nhiều phiên bản độc lập Mỗi phiên bản, mặc định hoặc được đặt tên, có bộ chương trình và dữ liệu riêng, cũng như một bộ tệp chung được chia sẻ giữa tất cả các phiên bản SQL Server trên máy tính Đối với một phiên bản SQL Server bao gồm Máy chủ CSDL (Database Engine - DBE), Dịch vụ phân tích (Analysis Services) và Dịch vụ báo cáo (Reporting Services), mỗi thành phần có bộ dữ liệu và tệp thực thi đầy đủ riêng biệt, cũng như các tệp chung được chia sẻ bởi tất cả các thành phần Để cô lập các vị trí cài đặt cho từng thành phần, các Định danh phiên bản duy nhất được tạo cho từng thành phần trong một phiên bản SQL Server cụ thể.
Các tập tin chung được sử dụng bởi tất cả các phiên bản trên một máy tính được cài đặt trong thư mục : \ Program Files \ Microsoft SQL Server \ nnn \ Trong đó,
là ký tự ổ đĩa nơi các thành phần được cài đặt Mặc định thường là ổ C nnn xác định phiên bản Bảng sau xác định các phiên bản cho các đường dẫn {nn} là giá trị phiên bản được sử dụng trong ID phiên bản và đường dẫn đăng ký
Bảng 2.2 Phiên bản và giá trị phiên bản được sử dụng trong ID
Ví dụ 2.1 ID của thể hiện trong SQL Server
- MSSQL{nn}.MSSQLSERVER thể hiện mặc định của SQL Server
- MSAS{nn}.MSSQLSERVER thể hiện mặc định của of Dịch vụ phân tích
- MSSQL{nn}.MyInstance thể hiện người dùng đặt tên của SQL Server với tên gọi là “MyInstance”
Ví dụ 2.2 Cấu trúc thư mục của SQL Server
Cấu trúc thư mục cho phiên bản SQL SERVER bao gồm Máy chủ CSDL và Dịch vụ phân tích, với thể hiện được đặt tên là “MyInstance” Mặc định, các thư mục cài đặt là:
- C:\Program Files\Microsoft SQL Server\MSSQL{nn}.MyInstance\
- C:\Program Files\Microsoft SQL Server\MSAS{nn}.MyInstance\
Chú ý: Có thể chỉ định thư mục chứa các tập tin cài đặt thay vì sử dụng thư mục mặc định trong khi thiết lập cài đặt SQL Server
2.2.5 Các lựa chọn cài đặt
Sau khi khởi động trình cài đặt, có nhiều lựa chọn để tiến hành cài đặt máy chủ CSDL và/hoặc các dịch vụ, thành phần liên quan:
- Cài đặt mới bản SQL Server chạy độc lập hoặc thêm mới tính năng vào bản cài đặt hiện có
- Cài đặt Dịch vụ báo cáo
- Cài đặt Các công cụ quản trị
- Cài đặt Các công cụ dữ liệu
- Nâng cấp từ các phiên bản trước của SQL Server
Kiến trúc SQL Server
Microsoft SQL Server là một kiến trúc khách – chủ (client – server) Một tiến trình của SQL Server bắt đầu với việc ứng dụng khách gửi một yêu cầu, sau đó máy chủ SQL thực hiện các bước xử lý và phản hồi kết quả đạt được SQL Server được cấu thành bởi hai thành phần chính là Máy CSDL (Database Engine - DBEngine) và Hệ điều hành SQL Server (SQL Server Operating System – SQLOS)
Máy CSDL (DBEngine) là thành phần cốt lõi của kiến trúc SQL Server, chịu trách nhiệm lưu trữ, xử lý và bảo mật dữ liệu SQL Server hỗ trợ tối đa 50 thể hiện DBEngine trên một máy tính đơn Mỗi thể hiện DBEngine cung cấp quyền truy cập có kiểm soát và xử lý giao dịch nhanh chóng nhằm đáp ứng yêu cầu của các ứng dụng sử dụng dữ liệu DB Engine gồm một máy quan hệ (Relational Engine) để xử lý các truy vấn là một máy lưu trữ (Storage Engine) để quản lý các tập tin CSDL, trang, chỉ mục, … Ngay cả các đối tượng CSDL như thủ tục, khung nhìn và bẩy lỗi cũng được tạo và thực thi thông qua DB Engine
Máy quan hệ (Relational Engine) là bộ xử lý truy vấn chuyên xử lý truy vấn, quản lý bộ nhớ, luồng và tác vụ, bộ đệm và truy vấn phân tán Để thực hiện nhiệm vụ, máy quan hệ thường yêu cầu dữ liệu từ công cụ lưu trữ dựa trên truy vấn đầu vào và xử lý đầu ra phù hợp Ba thành phần chính cấu thành máy quan hệ bao gồm:
Bộ phân tích câu lệnh là thành phần đầu tiên của công cụ query để nhận dữ liệu truy vấn Bộ phân tích chủ yếu kiểm tra truy vấn để tìm lỗi cú pháp và ngữ nghĩa, sau đó tạo ra một cây truy vấn tương ứng với truy vấn ban đầu.
- Trình tối ưu hóa (Optimizer) tìm kế hoạch thực thi rẻ nhất, không phải tốt nhất, hiệu quả về chi phí Việc tối ưu hóa chủ yếu được thực hiện cho các lệnh thao
16 tác dữ liệu (Data manipulation language – DML) chứ không phải tất cả các truy vấn Mục tiêu cuối cùng là giảm thiểu thời gian thực hiện truy vấn
- Trình thực thi (Query executor) cung cấp một kế hoạch để tìm, nạp dữ liệu cần thiết để thực thi truy vấn Sau khi nhận được dữ liệu máy lưu trữ, kết quả sẽ được chuyển vào vào lớp giao thức (Protocol layer) Cuối cùng, dữ liệu được gửi đến người dùng cuối
Hình 2.1 Kiến trúc của MS SQL Server (Nguồn: Microsoft)
Máy lưu trữ (Storage Engine) chịu trách nhiệm chính về việc lưu trữ và truy xuất dữ liệu từ các hệ thống lưu trữ Nó có ba thành phần chính sau:
- Phương thức truy cập (Access method) xác định xem truy vấn là câu lệnh chọn
(SELECT) hay không Sau đó nó gọi bộ đệm và chuyển giao dịch cho Trình quản lý tương ứng
- Trình quản lý bộ đệm (Buffer manager) quản lý các chức năng cốt lõi của Plan
Cache, Data Parsing & Dirty Page
- Trình quản lý giao dịch (Transaction manager) quản lý giao dịch không chọn (Non-Select transaction) với sự trợ giúp của trình quản lý nhật ký và khóa (Log and Lock Manager)
Hệ điều hành SQL Server (SQLOS) là một lớp ứng dụng riêng biệt ở cấp thấp nhất của SQL Server Nó nằm ở lớp dưới so với máy lưu trữ và máy quan hệ Nó thực sự cung cấp các dịch vụ hệ điều hành như bộ nhớ và quản lý I/O với nhiều dịch vụ khác như là dịch vụ đồng bộ và xử lý ngoại lệ Một số chức năng quan trọng của SQLOS:
- Lập lịch và báo cáo hoàn thành nhập xuất
- Quản lý đồng bộ hóa luồng
- Phát hiện và quản lý khóa chết (deadlock)
- Kiểm soát lượng bộ nhớ mà một thành phần trong SQL Server đang sử dụng
- Thực hiện lưu trữ cho các thành phần bên ngoài như CLR và MDAC
SQL Server tự động thu nhận và giải phóng bộ nhớ theo yêu cầu Thông thường, quản trị viên không phải chỉ định lượng bộ nhớ nên được cấp phát cho SQL Server, mặc dù tùy chọn này vẫn tồn tại và được yêu cầu trong một số môi trường Một trong những mục tiêu thiết kế chính của tất cả các phần mềm CSDL là giảm thiểu I/O đĩa vì đọc và ghi đĩa là một trong những hoạt động sử dụng nhiều tài nguyên nhất SQL Server xây dựng một vùng đệm trong bộ nhớ để giữ các trang được đọc từ CSDL Phần lớn mã trong SQL Server được dành riêng để giảm thiểu số lần đọc và ghi vật lý giữa đĩa và vùng đệm SQL Server cố gắng đạt được sự cân bằng giữa hai mục tiêu:
- Giữ cho vùng đệm không trở nên quá lớn khiến toàn bộ hệ thống sắp hết bộ nhớ
- Giảm thiểu I / O vật lý cho các tập tin CSDL bằng cách tối đa hóa kích thước của vùng đệm
2.3.3 Kiến trúc tập tin dữ liệu
Kiến trúc tập tin dữ liệu (data file) của SQL Server gồm các thành phần sau đây:
- Nhóm tập tin (File Group): Các tập tin CSDL có thể nhóm lại với nhau thành các nhóm tập tin Có hai loại File Group trong SQL Server: o Primary chứa các tập tin dữ liệu chính và bất kỳ tập tin nào không được gán cụ thể cho File Group khác Tất cả các trang cho bảng hệ thống được cấp phát trong Primary o User-defined là các nhóm tập tin do người dùng định nghĩa, nó được chỉ định bằng cách sử dụng từ khóa file group trong lệnh tạo CSDL hoặc xóa CSDL
- Tập tin dữ liệu (Datafile): Trong SQL Server có 3 loại tập tin dữ liệu là Primary
(tập tin dữ liệu chính), Secondary (tập tin dữ liệu phụ) và Log (tập tin nhật ký) Primary là điểm bắt đầu của CSDL và chỉ dẫn đến các file khác trong CSDL
- Khối dữ liệu (Extent) là một đơn vị lưu trữ, trong đó không gian được phân bổ cho mỗi bảng, chỉ mục Mỗi Extent gồm 8 trang liền kề hoặc 64KB
- Trang dữ liệu (Page): đơn vị cơ bản trong lưu trữ dữ liệu của SQL Server Kích thước của một trang là 8KB
2.3.4 Kiến trúc tập tin nhật ký
Các nhật ký giao dịch (transaction log) trên SQL Server là chuỗi các bản ghi nhật ký (record log) Mỗi bản ghi nhật ký được xác định bởi Log Sequence Number (LSN), trong đó có ID của giao dịch chứa nó
Nhật ký ghi lại những sửa đổi dữ liệu hoặc các hoạt động được thực hiện Nó được sử dụng để khôi phục hình ảnh trước khi hoặc xác định hình ảnh sau khi dữ liệu bị chỉnh sửa Hình ảnh trước là bản sao của dữ liệu trước khi thao tác được thực hiện, hình ảnh sau là bản sao của dữ liệu sau khi thao tác đã được thực hiện
Hệ quản trị SQL Server có bốn CSDL hệ thống, bao gồm:
Các công cụ quản trị SQL Server
SQL Server Management Studio (SSMS) là công cụ phần mềm phát hành lần đầu cùng Microsoft SQL Server 2005, giúp người dùng định cấu hình, quản lý và điều hành mọi thành phần trong Microsoft SQL Server.
SSMS là một trong những công cụ quản lý SQL Server, được sử dụng để thiết kế truy vấn và quản lý CSDL và kho dữ liệu thông qua máy tính cá nhân hoặc đám mây Trên thực tế, SSMS là một môi trường tích hợp cung cấp các công cụ để định cấu hình, giám sát và quản trị các phiên bản và CSDL SQL Server
Một tính năng quan trọng của SSMS là Object Explorer, cho phép người dùng duyệt, chọn và thao tác trên trên bất kỳ đối tượng nào trong máy chủ Microsoft cũng kết hợp khả năng tương thích ngược cho các phiên bản SQL Server cũ hơn Nhờ vậy, phiên bản SSMS mới có thể kết nối với các SQL Server phiên bản cũ Từ năm 2017, Microsoft phát hành các phiên bản SSMS độc lập với các bản phát hành công cụ CSDL SQL Server
SQL Server Configuration Manager (SSCM) là một công cụ để quản lý các dịch vụ được liên kết với SQL Server, để định cấu hình các giao thức mạng được sử dụng bởi SQL Server và quản lý cấu hình kết nối mạng từ các máy khách SQL Server SSCM được cài đặt cùng với cài đặt SQL Server SSCM là một phần mềm Microsoft Management Console có sẵn từ menu Start hoặc có thể được thêm vào bất kỳ màn hình Microsoft Management Console nào khác
Trình quản lý SSCM và SSMS sử dụng Công cụ quản lý cửa sổ (Window Management Instrumentation – WMI) để xem và thay đổi một số cài đặt máy chủ WMI cung cấp một cách thống nhất để giao tiếp với các lệnh gọi API quản lý các hoạt động đăng
20 ký hiệu được yêu cầu bởi các công cụ SQL Server và cung cấp khả năng kiểm soát và thao tác nâng cao đối với các dịch vụ SQL đã chọn của thành phần đính vào SSCM.
Microsoft SQL Server Profiler là một giao diện đồ họa người dùng (Graphical User Interface – GUI) cho SQL Trace để giám sát thể hiện của máy CSDL (Database Engine) hoặc các dịch vụ phân tích (Analysis Services) Người dùng có thể chụp và lưu dữ liệu về từng sự kiện vào một tập tin hoặc bảng để phân tích sau này, chẳng hạn giám sát và xác định thủ tục lưu trữ nào đang thực thi quá chậm, làm ảnh hưởng đến hiệu suất của hệ thống SQL Server Profiler được sử dụng cho các hoạt động như:
- Duyệt các câu truy vấn để tìm ra nguyên nhân của vấn đề
- Tìm và chẩn đoán các truy vấn chạy chậm
- Nắm bắt chuỗi câu lệnh T-SQL dẫn đến sự cố Sau đó, các dấu vết đã lưu có thể được sử dụng để tái tạo sự cố trên máy chủ thử nghiệm nhằm chẩn đoán sự cố
- Giám sát hiệu suất của SQL Server để điều chỉnh khối lượng công việc
- So sánh bộ đếm hiệu suất để chẩn đoán sự cố
SQL Server tích hợp một công cụ hiệu suất khác được gọi là Database Engine Tuning Advisor (DTA) Công cụ này cho phép SQL Server phân tích một câu lệnh hoặc một loạt câu lệnh có sẵn bằng cách chạy một hồ sơ (profiler) hoặc dấu vết phía máy chủ (server side trace) Sau đó, DTA sẽ xem xét từng câu lệnh để xác định nơi có thể thực hiện các cải tiến và sau đó trình bày các tùy chọn để cải tiến
DTÀ cơ bản là một công cụ giúp xác định chỉ số bổ sung hoặc phân vùng có hữu ích không.
- Thêm chỉ mục (chế độ xem theo nhóm, không nhóm và được lập chỉ mục)
- Thêm thống kê, bao gồm thống kê nhiều cột không được tạo tự động ngay cả khi đã bật tùy chọn AUTO_CREATE_STATISTICS
Data Quality Client (DQC) cung cấp giao diện đồ họa trực quan và đơn giản để kết nối với Data Quality Server (DQS) và thực hiện các thao tác làm sạch dữ liệu Nó cũng cho phép theo dõi tập trung các hoạt động khác nhau được thực hiện trong quá trình làm sạch dữ liệu
DQC là công cụ độc lập cho phép kiểm soát chất lượng dữ liệu, bao gồm: tạo CSDL kiến thức (KB), chạy dự án chất lượng dữ liệu và thực hiện nhiệm vụ quản trị Trong quá trình cài đặt SQL Server, DQC đã được tích hợp sẵn Người dùng có thể cài đặt DQC trên cùng máy tính với DQS hoặc máy khác.
Người quản lý dữ liệu, chuyên gia dữ liệu hoặc chuyên gia CNTT chịu trách nhiệm quản lý tài sản dữ liệu và duy trì các tiêu chuẩn cao về chất lượng dữ liệu có thể sử dụng DQC ở bất kỳ vai trò nào trong ba vai trò: Điều hành DQS KB, người có thể chỉnh sửa và thực hiện dự án chất lượng dữ liệu; Biên tập DQS KB, người có thể thực hiện các chức năng của dự án, tạo và chỉnh sửa cơ sở tri thức; và Quản trị viên DQS, người có thể thực hiện các chức năng của dự án và cơ sở tri thức cũng như quản trị hệ thống
SQL Server Data Tools (SSDT) là một giải pháp Visual Studio nhằm phát triển CSDL quan hệ SQL Server Về cơ bản, nó là sự mở rộng của sản phẩm Business Intelligence Developer Studio (BIDS) từ Visual Studio 2008 Ngoài các công cụ CSDL mới, SSDT hỗ trợ các loại dự án BIDS thông thường cho Dịch vụ phân tích (SQL Server Analysis Services – SSAS), Dịch vụ báo cáo (SQL Server Reporting Services – SSRS) và Dịch vụ tích hợp (SQL Server Integration Services – SSIS) Với SSDT, Microsoft đã hợp nhất tất cả các trải nghiệm phát triển CSDL SQL Server vào một phiên bản Visual Studio duy nhất.
Quản lý máy chủ SQL Server
SQL Server Configuration Manager (SSCM) cho phép thiết lập các giao thức mạng máy chủ và máy khách cũng như các tùy chọn kết nối Thông thường việc thiết lập này chỉ cần thực hiện một lần, ngay sau khi hoàn thành cài đặt hệ thống Tuy nhiên, trong quá trình
Khi các doanh nghiệp thay đổi cơ sở hạ tầng công nghệ, việc cấu hình lại giao thức mạng và kết nối máy chủ là điều cần thiết để đảm bảo hoạt động của hệ thống quản lý và vận hành được suôn sẻ.
2.5.1 Điều khiển hoạt động SQL Server
Thông thường, dịch vụ SQL Server cùng với máy CSDL (DBE) hoạt động liên tục 24/7 hoặc tự động khởi động lại cùng với máy chủ CSDL Nói cách khác, các ứng dụng quản trị có thể kết nối với dịch vụ SQL Server và DBE bất kỳ lúc nào Tuy nhiên, một vài trường hợp lỗi xảy ra trong quá trình khởi động các ứng dụng này Dưới đây là một lỗi phổ biến liên quan đến việc SSMS không thể kết nối tới dịch vụ SQL Server
Hình 2.2 Kết nối tới dịch vụ SQL Server Nhiều nguyên nhân dẫn tới tình trạng nói trên (1) lỗi đường truyền phía máy chủ cài đặt SQL Server hoặc máy khách cài đặt SSMS; (2) bị chặn bởi các thiết bị bảo mật như tường lửa Trong trường hợp đường truyền hoạt động tốt và kết nối không bị cản trở bởi các thiết bị bảo mật, lỗi nói trên nhiều khả năng là do dịch vụ SQL Server đang không ở trong trạng thái hoạt động Khi đó, SSCM là công cụ hữu ích để kiểm tra và kích hoạt dịch vụ SQL Server theo trình tự sau đây:
Bước 1: Gọi thực hiện SSCM, mở SQL Server Services
Hình 2.3 Kết nối tới dịch vụ SQL Server
Bước 2: Chọn dịch vụ SQL Server (), nhấn chuột phải để hiển thị danh sách các thao tác có thể thực hiện
Hình 2.4 Kết nối tới dịch vụ SQL Server
Bước 3: Chọn thao tác muốn thực hiện (Start/Stop/Pause/Resume/Restart)
Hình 2.5 Kết nối tới dịch vụ SQL Server
2.5.2 Thiết lập kết nối từ xa
SSMS hoạt động như một trình khách, được cài đặt trên một máy tính khác với máy chủ CSDL Để SSMS có thể kết nối vào máy chủ CSDL và thực hiện các tác vụ quản trị vận hành, cần thiết thực hiện một số thay đổi trên máy chủ CSDL thông qua SSCM theo trình tự sau đây:
Bước 1: Khởi động dịch vụ SQL Server Browser
- Gọi thực hiện SSCM, mở SQL Server Services
Hình 2.6 Thiết lập kết nối từ xa
- Nhấn chuột phải vào dịch vụ SQL Server Browser trong danh sách các dịch vụ của SQL Server, và chọn Properties trong thanh thực đơn
Hình 2.7 Thiết lập kết nối từ xa
- Trong giao diện SQL Server Browser Properties, chọn thẻ Service, chọn Automatic trong hộp chọn Start Mode và nhấn nút Apply
Hình 2.8 Thiết lập kết nối từ xa
- Chuyển sang thẻ Log On trong giao diện SQL Server Browser Properties, đánh dấu nút Built-in account và chọn Local Service cho hộp chọn đi kèm
Hình 2.9 Thiết lập kết nối từ xa
- Nhấn nút Start để khởi động dịch vụ SQL Server Browser
Bước 2: Thiết lập giao thức mạng thích hợp
- Bật TPC/IP cho phép máy tính khác kết nối vào SQL Server thông qua IP
Hình 2.10 Thiết lập kết nối từ xa
- Bật Named Pipes cho phép máy tính khác kết nối vào SQL Server thông qua Server name
Hình 2.11 Thiết lập kết nối từ xa
Bước 3: Thiết lập cơ chế kết nối
- Nhấn chuột phải vào dịch vụ SQL Server () trong danh sách các dịch vụ của SQL Server, và chọn Properties trong thanh thực đơn
Hình 2.12 Thiết lập kết nối từ xa
- Trong giao diện SQL Server () Properties, đánh dấu nút Built-in account và chọn Network Service cho hộp chọn đi kèm
Hình 2.13 Thiết lập kết nối từ xa
- Nhấn nút OK trong giao diện SQL Server () Properties để hoàn tất việc cấu hình
Bước 4: Khởi động lại dịch vụ SQL Server
- Nhấn chuột phải vào dịch vụ SQL Server () trong danh sách các dịch vụ của SQL Server, và chọn Restart trong thanh thực đơn để khởi động lại dịch vụ SQL Server
Hình 2.14 Thiết lập kết nối từ xa
2.5.3 Kết nối máy chủ SQL Server
Bước 1: Khởi động phiên kết nối máy chủ SQL Server, sử dụng SSMS
Hình 2.15 Kết nối máy chủ SQL Server Bước 2: Lựa chọn kiểu máy chủ muốn kết nối (Server type), bao gồm:
- Máy chủ CSDL (Database Engine – DBE), mặc định
- Các dịch vụ phân tích (Analysis Services)
- Các dịch vụ báo cáo (Reporting Services)
- Các dịch vụ tích hợp (Integration Services)
- Và các dịch vụ khác (nếu có)
Bước 3: Trong phần "Server name", bạn có thể chọn kết nối đến máy chủ cục bộ (mặc định là máy tính đang cài đặt SQL Server và SMSS) Hoặc, nếu muốn kết nối đến một máy chủ khác, bạn có thể nhấp vào mũi tên để xem danh sách các máy chủ đã kết nối trước đó Nếu máy chủ bạn muốn kết nối chưa có trong danh sách, bạn có thể nhập tên hoặc địa chỉ IP của máy chủ vào ô "Server name".
Browsers for more để mở giao diện lựa chọn máy chủ (Browser for Servers)
Giao diện này có thẻ Local Servers chứa máy chủ cơ sở dữ liệu và các dịch vụ được cài đặt sẵn trên máy cục bộ Nếu muốn chọn máy chủ từ xa, người dùng có thể nhấn vào thẻ Network Servers.
Hình 2.17 Kết nối máy chủ SQL Server
Hệ thống sẽ tự động dò tìm trong các mạng khả dụng với máy tính cục bộ và trả về danh sách các máy tính có cài đặt SQL Server sẵn sàng cho việc kết nối Trong trường hợp có một danh sách như thế, nhấn vào máy tính muốn kết nối để hiển thị máy chủ CSDL và các dịch vụ khả dụng tại đó Sau đó, nhấn nút OK để lựa chọn Kết quả này sẽ được ghi nhận trong mục Server Name ở giao diện Connect to Server
Bước 4: Lựa chọn cơ chế xác thực:
- Nếu kết nối vào máy chủ cục bộ, có thể lựa chọn cả hai cơ chế xác thực là Window Authentication và SQL Server Authentication
- Nếu kết nối vào máy chủ từ xa, chỉ lựa chọn SQL Server Authentication Bước 5: Cung cấp tài khoản đăng nhập (đối với cơ chế xác thực SQL Server Authentication Bước 6: Nhấn nút Connect để thực hiện kết nối Sau khi kết nối thành công, SSMS có giao diện như sau:
Hình 2.18 Kết nối máy chủ SQL Server
Các danh mục trong SQL Server
Danh mục hệ thống bao gồm các bảng mô tả cấu trúc của các đối tượng như CSDL, bảng, khung nhìn và chỉ mục Các bảng này được gọi là bảng cơ sở hệ thống DB Engine thường xuyên truy cập vào danh mục hệ thống để tìm thông tin cần thiết cho hoạt động bình thường của hệ thống Việc thay đổi hay xóa các bảng cơ sở hệ thống nói trên có thể làm cho CSDL bị mất chức năng, bị xáo trộn hoặc không sử dụng được, thậm chí có thể làm cho toàn bộ hệ thống dừng hoạt động
DB Engine phân biệt các bảng cơ sở hệ thống của CSDL master với các bảng của một CSDL do người dùng định nghĩa (user-defined database) Các bảng hệ thống của CSDL master thuộc về danh mục hệ thống (system catalog), trong khi các bảng hệ thống của một CSDL người dùng định nghĩa tạo thành danh mục CSDL (database catalog) Nói cách khác, danh mục hệ thống hoạt động trên phạm vi toàn bộ hệ thống, trong khi danh mục CSDL có ý nghĩa trên mỗi CSDL người dùng định nghĩa Bảng dưới đây tóm tắt nội dung của một số danh mục hệ thống:
Bảng 2.3 Một số danh mục hệ thống
Sys.altfiles Thông tin về mỗi tập tin trong CSDL
Sys.configures Thông tin về mỗi lựa chọn máy chủ được thiết lập
Sys.databases Thông tin về mỗi CSDL
Sys.devices Thông tin về mỗi thiết bị sao lưu
Sys.logins Thông tin về mỗi tài khoản đăng nhập
Sys.comments Thông tin về mỗi khung nhìn, luật, mặc định, bẩy lỗi, ràng buộc
Sys.indexes Thông tin về mỗi chỉ mục
Sys.objects Thông tin về mỗi đối tượng trong CSDL
Sys.users Thông tin về mỗi người dùng
Trong tất cả các hệ CSDL quan hệ, các bảng cơ sở hệ thống có cấu trúc giống như các bảng cơ sở Do đó, các câu lệnh T-SQL được sử dụng để truy xuất thông tin trong bảng cơ sở có thể được sử dụng để truy xuất thông tin trong bảng cơ sở hệ thống với tài khoản sử dụng thuộc nhóm System Administrator
Ví dụ 2.3 Sử dụng T-SQL truy cập danh mục hệ thống
Ví dụ 2.4 Sử dụng T-SQL truy cập danh mục CSDL
Câu hỏi ôn tập
1- Trình bày lịch sử phát triển của Hệ quản trị SQL Server
2- Trình bày các nội dung cần thực hiện khi lập kế hoạch cài đặt SQL Server
3- Xác định điều kiện phần cứng, phần mềm và cách tổ chức các ổ đĩa lưu trữ để cài đặt SQL Server 2019
4- Trình bày kiến trúc SQL Server 2019
5- Trình bày tóm tắt chức năng của một số công cụ quản trị SQL Server 2019
6- Trình bày quản lý máy chủ SQL Server 2019
7- Trình bày các danh mục trong SQL Server 2019
Quản trị vận hành cơ sở dữ liệu
Tạo và cấu hình cơ sở dữ liệu
Cơ sở dữ liệu do người dùng định nghĩa (user-defined database) là CSDL do người dùng tạo và quản lý, chứa các đối tượng như bảng, khung nhìn, hàm, thủ tục lưu trữ, kích hoạt và chỉ mục Để tạo CSDL do người dùng định nghĩa, người dùng phải là thành viên của nhóm quản trị hệ thống (sysadmin) hoặc có vai trò dbcreator được thiết lập cho máy chủ và sẽ trở thành chủ sở hữu của CSDL vừa tạo.
Một số thông tin quan trọng liên quan tới CSDL bao gồm:
- Tên CSDL (Database name): được đặt tên quy tắc định danh, bao gồm ký tự, ký số, dấu gạch dưới ( _ ) và phải bắt đầu bởi ký tự
- Chủ sở hữu (Owner): Mặc định người tạo CSDL là chủ sở hữu của CSDL đó Tuy nhiên, người tạo CSDL có thể thiết lập tài khoản người dùng khác là chủ sở hữu của CSDL
- Các tập tin dữ liệu (Database files): Mặc định có 1 tập tin dữ liệu chính và 1 tập tin nhật ký Mỗi tập tin lưu trữ có các thông tin sau đây: o Tên lưu trữ (Logical name) o Tên tập tin trên ổ cứng (File Name) o Nhóm tập tin (Filegroup) o Kích thước khởi đầu (Initial size), mặc định 8 MB cho cả hai loại tập tin o Sự tăng kích thước tự động (Autogrowth): mỗi khi tập tin lưu trữ gần đầy, hệ thống tự động cấp thêm bộ nhớ, mặc định mỗi lần cấp thêm 64 MB o Kích thước tối đa (Max size) giới hạn khả năng lưu trữ của các tập tin; mặc định không giới hạn kích thước của các tập tin (Unlimited) o Vị trí lưu trữ trên ổ đĩa cứng của tập tin (Path), mặc định các tập tin lưu trữ tại thư mục cài đặt máy chủ CSDL (DB Engine)
- Ngôn ngữ của CSDL (Collation), mặc định là DEFAULT
- Cơ chế phục hồi (Recovery mode), mặc định là FULL (đầy đủ)
- Mức độ tương thích (Compatibility level), mặc định phiên bản SQL Server cài đặt mới nhất
- Cho phép truy cập không cần đăng nhập (Containment type), mặc định là NONE (mỗi truy cập đều phải đăng nhập)
3.1.1 Tạo cơ sở dữ liệu
Có hai cách để tạo và cấu hình CSDL, bao gồm sử dụng giao diện quản trị và câu lệnh T-SQL
2.7.1.1 Tạo cơ sở dữ liệu với SSMS
Sau khi mở chương trình SSMS, người dùng truy cập vào công cụ bằng tài khoản thuộc nhóm sysadmin hoặc dbcreator fixed server và thực hiện các bước sau đây trên giao diện quản trị:
Bước 1: Bắt đầu – Mở rộng server group, chọn tên máy chủ muốn tạo CSDL
Hình 3.1 Tạo cơ sở dữ liệu với SSMS Bước 2: Khởi tạo – Nhấn chuột phải tại nút Databases, chọn New Database
Hình 3.2 Tạo cơ sở dữ liệu với SSMS
Bước 3: Cấu hình – Khai báo các thông tin cần thiết
Hình 3.3 Tạo cơ sở dữ liệu với SSMS Bước 4: Kết thúc – Nhấn nút OK để hoàn tất việc tạo CSDL
Hình 3.4 Tạo cơ sở dữ liệu với SSMS 2.7.1.2 Tạo cơ sở dữ liệu với T-SQL
Sau khi mở chương trình SSMS, người dùng truy cập vào công cụ bằng tài khoản thuộc nhóm sysadmin hoặc dbcreator fixed server, mở trình soạn thảo truy vấn và xây dựng câu lệnh tạo CSDL với T-SQL theo trình tự sau đây:
Bước 1: Bắt đầu – Mở rộng server group, chọn tên máy chủ muốn tạo CSDL
Bước 2: Mở trình soạn thảo truy vấn
Bước 3: Xây dựng câu lệnh tạo CSDL
Bước 4: Chọn nội dung câu lệnh đã xây dựng, nhấn nút Execute trên giao diện hoặc F5 trên bàn phím để thực hiện
Một số ví dụ tạo CSDL với T-SQL:
Ví dụ 3.1:Tạo CSDL có tên là MyDB31
Ví dụ 3.2:Tạo CSDL có tên là MyDB32
3.1.2 Thay đổi cấu hình cơ sở dữ liệu
Có hai cách để thay đổi cấu hình CSDL, bao gồm sử dụng giao diện quản trị và câu lệnh T-SQL
3.1.2.1 Thay đổi cấu hình cơ sở dữ liệu với SSMS
Sau khi mở chương trình SSMS, người dùng truy cập vào công cụ bằng tài khoản thuộc nhóm sysadmin hoặc dbcreator fixed server để tiến hành quản trị hệ thống.
Bước 1: Bắt đầu – Mở rộng server group, chọn tên máy chủ có CSDL muốn sửa cấu hình
Hình 3.5 Thay đổi cấu hình cơ sở dữ liệu với SSMS Bước 2: Mở rộng server group, nhấn dấu + tại nút Databases
Hình 3.6 Thay đổi cấu hình cơ sở dữ liệu với SSMS Bước 3: Chọn CSDL muốn thay đổi cấu hình, nhấn chuột phải và chọn chức năng Properties để xem và thay đổi cấu hình
Hình 3.7 Thay đổi cấu hình cơ sở dữ liệu với SSMS Bước 4: Thực hiện thay đổi cấu hình của CSDL đã chọn
Hình 3.8 Thay đổi cấu hình cơ sở dữ liệu với SSMS Bước 5: Kết thúc – Nhấn nút OK để hoàn tất việc thay đổi cấu hình CSDL
3.1.2.2 Thay đổi cấu hình cơ sở dữ liệu với T-SQL
Để thay đổi cấu hình cơ sở dữ liệu bằng T-SQL, người dùng truy cập vào SSMS với tài khoản sysadmin hoặc dbcreator, xây dựng câu lệnh thay đổi cấu hình và thực hiện trong trình soạn thảo truy vấn.
Bước 1: Bắt đầu – Mở rộng server group (Object Explorer), chọn tên máy chủ có CSDL muốn thay đổi cấu hình
Bước 2: Mở trình soạn thảo truy vấn
Bước 3: Xây dựng câu lệnh thay đổi cấu hình CSDL
Bước 4: Chọn nội dung câu lệnh đã xây dựng, nhấn nút Execute trên giao diện hoặc F5 trên bàn phím để thực hiện
Một số ví dụ thay đổi cấu hình CSDL với T-SQL:
Ví dụ 3.3:Chỉnh sửa kích cỡ tập tin nhật ký của MyDB31 thành 10MB
Ví dụ 3.4:Bổ sung thêm một tập tin dữ liệu MyDB312_dat
Ví dụ 3.5:Chỉnh sửa tỷ lệ gia tăng của tập tin MyDB31_dat của MyDB31 thành 15%
Ví dụ 3.6:Chỉnh sửa kích cở của tập tin MyDB31_dat của MyDB31 thành 20MB
3.1.3 Xóa cơ sở dữ liệu
3.1.3.1 Xóa cơ sở dữ liệu với SSMS
Sau khi mở chương trình SSMS, người dùng truy cập vào công cụ bằng tài khoản thuộc nhóm sysadmin hoặc dbcreator fixed server và thực hiện các bước sau đây trên giao diện quản trị
Bước 1: Bắt đầu – Mở rộng server group, chọn tên máy chủ có CSDL muốn xóa
Hình 3.9 Xóa cơ sở dữ liệu với SSMS Bước 2: Mở rộng server group (Object Explorer), nhấn dấu + tại nút Databases để mở danh sách các CSDL hiện có
Hình 3.10 Xóa cơ sở dữ liệu với SSMS
Bước 3: Chọn CSDL muốn xóa, nhấn chuột phải và chọn chức năng Delete
Hình 3.11 Xóa cơ sở dữ liệu với SSMS Bước 4: Thực hiện xóa CSDL đã chọn với hai tùy chọn:
- Delete backup and restore history information for databases: Xóa các bản sao lưu và thông tin lịch sử phục hồi dữ liệu (mặc định)
- Close existing connections: Đóng tất cả các kết nối hiện có tới CSDL trước khi thực hiện xóa Nếu tính năng này không được chọn, việc xóa sẽ không thành công khi vẫn còn kết nối tới CSDL
Hình 3.12 Xóa cơ sở dữ liệu với SSMS
Bước 5: Kết thúc – Nhấn nút OK để hoàn tất việc thay đổi cấu hình CSDL
3.1.3.2 Xóa cơ sở dữ liệu với T-SQL
Sau khi mở chương trình SSMS, người dùng truy cập vào công cụ bằng tài khoản thuộc nhóm sysadmin hoặc dbcreator fixed server, mở trình soạn thảo truy vấn và xây dựng câu lệnh tạo CSDL với T-SQL theo trình tự sau đây:
Bước 1: Bắt đầu – Mở rộng server group, chọn tên máy chủ có CSDL muốn xóa
Bước 2: Mở trình soạn thảo truy vấn
Bước 3: Xây dựng câu lệnh xóa CSDL
Bước 4: Chọn nội dung câu lệnh đã xây dựng, nhấn nút Execute trên giao diện hoặc F5 trên bàn phím để thực hiện
Một số ví dụ xóa CSDL với T-SQL:
Ví dụ 3.7:Xóa CSDL MyDB31
Ví dụ 3.8:Xóa hai CSDL MyDB31, MyDB32 trong cùng một câu lệnh
Ví dụ 3.9:Xóa CSDL MyDB31 sau khi ngắt tất cả kết nối tới CSDL này
Giao dịch dữ liệu
Giao dịch (transaction) là một tập hợp có thứ tự các thao tác trên CSDL cấu thành một đơn vị công việc logic không thể chia cắt Dưới tác động của một giao dịch, CSDL chuyển từ trạng thái nhất quán này sang trạng thái nhất quán khác Các thao tác trong một giao dịch, được thể hiện thông qua các câu lệnh SQL, thường có mối liên hệ tương đối mật thiết với nhau
Hình 3.13 Giao dịch dữ liệu
Ví dụ 3.10:Ngân hàng thực hiện chuyển tiền từ tài khoản A sang tài khoản B, giao dịch này bao gồm hai thao tác:
- Trừ tiền trong tài khoản A
- Cộng tiền trong tài khoản B
Hai thao tác này hoặc cả hai thành công hoặc không có thao tác nào thành công Nếu một công việc vì lý do nào đó không thực hiện thành công thì trạng thái ban đầu (trước khi chuyển tiền) phải được khôi phục để bảo toàn dữ liệu
3.2.2 Tính chất của giao dịch
Các cơ sở dữ liệu sử dụng nhật ký giao dịch để ghi chép mọi thay đổi dữ liệu xảy ra trong quá trình giao dịch Nhờ đó, dữ liệu có thể được phục hồi nếu sự cố khiến giao dịch không thể hoàn thành hoặc một vài hành động trong giao dịch không thực hiện thành công Để đảm bảo tính toàn vẹn của dữ liệu, giao dịch phải tuân thủ các nguyên tắc nguyên tử, nhất quán, độc lập và bền vững.
Giao dịch được chia làm hai loại sau đây:
- Giao dịch ngầm định (Implicit transaction): Máy chủ CSDL (DBE) tự động bắt đầu một giao dịch mới khi giao dịch hiện hành kết thúc với câu lệnh
COMMIT (thành công) hoặc ROLLBACK (hủy bỏ)
- Giao dịch tường minh (Explicit transaction): Loại giao dịch được bắt đầu tường minh bởi câu lệnh BEGIN TRANSACTION và kết thúc với COMMIT
TRANSACTION (thành công) hoặc ROLLBACK TRANSACTION (hủy bỏ)
3.2.4 Các trạng thái của giao dịch
Giao dịch là một đơn vị chương trình mà việc thực hiện có thể hoặc không thay đổi nội dung của CSDL Giao dịch trong hệ quản trị CSDL được thực thi một cách độc lập và trải qua các trạng thái sau đây:
- Khi một giao dịch bắt đầu thực hiện, nó chuyển trạng thái đang hoạt động (Active) với các thao tác đọc (read) hoặc ghi (write)
- Khi các thao tác đọc hoặc ghi kết thúc, giao dịch chuyển trạng thái được hoàn tất một phần (Partially Committed)
Sau khi hoàn tất giao dịch, hệ thống sẽ kiểm tra xem các thay đổi đã được lưu trữ thành công hay chưa Nếu quá trình kiểm tra diễn ra thành công, giao dịch sẽ chuyển sang trạng thái "hoàn thành".
46 tất (Committed) o Nếu kiểm tra không thành công, giao dịch chuyển sang trạng thái không thành công (Failed) và tiến hành hoàn tác
- Nếu trong quá trình thực thi các thao tác, giao dịch bị hủy bỏ (Abort), nó chuyển trạng thái không thành công (Failed) và tiến hành hoàn tác
- Sau khi kết thúc thành công (Committed) hoặc không thành công (Failed), giao dịch chuyển trạng thái kết thúc (Terminated), khi đó giao dịch bị loại bỏ khỏi hệ thống và không cho phép thực hiện lại
Hình 3.14 Các trạng thái của giao dịch
3.2.5 Các thao tác đối với giao dịch
Giao dịch được định nghĩa dựa trên các câu lệnh xử lý giao dịch sau đây (không phân biệt hoa thường):
BEGIN TRANSACTION Bắt đầu một giao dịch
SAVE TRANSACTION Đánh dấu một vị trí trong giao dịch (điểm đánh dấu)
ROLLBACK TRANSACTION Quay trở lại đầu giao dịch hoặc một điểm đánh dấu trước đó trong giao dịch
COMMIT TRANSACTION Đánh dấu điểm kết thúc một giao dịch Khi câu lệnh này thực thi, giao dịch đã thực hiện thành công
Giao dịch được bắt đầu với câu lệnh BEGIN TRANSACTION Câu lệnh này đánh dấu điểm bắt đầu của một giao dịch, cú pháp của câu lệnh này như sau:
BEGIN TRANSACTION [tên giao dịch]
Giao dịch sẽ kết thúc trong các trường hợp sau đây:
Câu lệnh COMMIT TRANSACTION có vai trò kết thúc một giao dịch thành công trong cơ sở dữ liệu Sau khi câu lệnh này được thực hiện, một giao dịch mới sẽ được bắt đầu.
- Câu lệnh ROLLBACK TRANSACTION được thực thi để huỷ bỏ một giao dịch và đưa CSDL về trạng thái như trước khi giao dịch bắt đầu Một giao dịch mới sẽ bắt đầu sau khi câu lệnh ROLLBACK được thực thi
- Một giao dịch cũng sẽ kết thúc nếu trong quá trình thực hiện gặp lỗi (lỗi kết nối, lỗi thiết bị, lỗi phần mềm, ) Trong trường hợp này, hệ thống sẽ tự động phục hồi lại trạng thái CSDL như trước khi giao dịch bắt đầu (tương tự như khi câu lệnh ROLLBACK được thực thi để huỷ bỏ một giao dịch) Tuy nhiên, trong trường hợp này sẽ không có giao dịch mới được bắt đầu
Ví dụ 3.11: Kết thúc giao dịch với lệnh ROLLBACK, mọi thay đổi về mặt dữ liệu đều không có tác dụng
Ví dụ 3.12: Kết thúc giao dịch với lệnh COMMIT, mọi thay đổi về mặt dữ liệu đều có tác dụng (một bộ dữ liệu mới được thêm vào bảng tblUser trong CSDL MyDB31)
Trong quá trình thực thi các thao tác trong giao dịch, trạng thái của CSDL tại một thời điểm có thể được ghi lại trong nhật ký giao dịch với câu lệnh SAVE TRANSACTION
Cú pháp của câu lệnh này như sau:
SAVE TRANSACTION
Các trạng thái CSDL đã được ghi nhận trong nhật ký giao dịch có thể được phục hồi (quay trở lại thời điểm ghi trạng thái đó) với câu lệnh ROLLBACK TRANSACTION
Cú pháp của câu lệnh này như sau:
ROLLBACK TRANSACTION
Một khi câu lệnh này được thực hiện, những thay đổi về mặt dữ liệu từ điểm đánh dấu (SAVEPOINT) đến thời điểm ngay trước khi câu lệnh ROLLBACK được gọi bị hủy bỏ Nói cách khác, CSDL được phục hồi về trạng thái của nó tại thời điểm SAVEPOINT và giao dịch được tiếp tục với các thao tác còn lại
Ví dụ 3.13: Sử dụng SAVE TRANSACTION / ROLLBACK TRANSACTION
- Trước khi bắt đầu giao dịch trans01, trong bảng tblUser có 3 bộ dữ liệu
- Hai thao tác đầu tiên trong giao dịch trans01 là thêm mới và sửa dữ liệu trong bảng tblUser
- Ghi nhận trạng thái CSDL với tên gọi savepoint01, lúc này trong bảng tblUser có 4 bộ dữ liệu
- Hai thao tác tiếp theo trong giao dịch trans01 là thêm mới và sửa dữ liệu trong bảng tblUser
- Ghi nhận trạng thái CSDL với tên gọi savepoint02, lúc này trong bảng tblUser có 5 bộ dữ liệu
- Quay trở lại trạng thái savepoint01, lúc này trong bảng tblUser có 4 bộ dữ liệu
- Thêm mới 1 bộ dữ liệu vào bảng tblUser
- Hoàn tất giao dịch trans01
- Lúc này trong bảng tblUser có 5 bộ dữ liệu
Sao lưu, phục hồi dữ liệu
Sao lưu dữ liệu là một trong những tác vụ quan trọng nhất của nhà quản trị CSDL (Database administrator – DBA) Lưu trữ các tập tin sao lưu và có kế hoạch cẩn thận để phục hồi cho phép DBA khôi phục dữ liệu của hệ thống khi sự cố hư hỏng xảy ra Trách nhiệm của DBA là giữ hệ thống hoạt động ổn định càng lâu càng tốt, trong trường hợp hệ thống hư hỏng thì công việc phục hồi phải nhanh nhất, giúp giảm thời gian chết, sự bất tiện và chi phí Việc này đòi hỏi phải có kế hoạch sao lưu tốt và phương pháp sao lưu tin cậy
3.3.1 Phương pháp sao lưu dữ liệu
Sao lưu đầy đủ (Full database backup) là phương pháp sao chép vào tập tin lưu trữ toàn bộ CSDL, bao gồm tất cả nhóm tập tin, tập tin dữ liệu, dữ liệu người dùng, các đối tượng dữ liệu như là bảng hệ thống, chỉ mục, bảng người dùng định nghĩa, Phương pháp này cho phép sao lưu đầy đủ nhất, nhưng tốn kém nhất về thời gian thực hiện và phương tiện lưu trữ Sao lưu đầy đủ chỉ thực hiện được khi ngừng toàn bộ hoạt động của hệ thống, nghĩa là không có bất cứ giao dịch nào truy cập CSDL Với bản sao lưu đầy đủ, CSDL có thể được phục hồi về thời điểm thực hiện sao lưu gần nhất
Phương pháp sao lưu này phù hợp với CSDL có đặc điểm sau đây:
- CSDL ít quan trọng, những thay đổi của CSDL có thể tái tạo thủ công hơn là sử dụng các nhật ký giao dịch
- CSDL ít thay đổi, CSDL chỉ đọc
- CSDL có kích thước vừa và nhỏ
Ví dụ 3.14: Lịch trình sao lưu dữ liệu
24:00 (Thứ 3) Sao lưu đầy đủ (1) 24:00 (Thứ 4) Sao lưu đầy đủ (2) 24:00 (Thứ 5) Sao lưu khác biệt (3) 24:00 (Thứ 6) Sao lưu khác biệt (4)
- Sao lưu đầy đủ (1) được tạo lúc 24:00 thứ 3, bao gồm tất cả “mọi thứ” trong
CSDL tại thời điểm 24:00 thứ 3
- Sao lưu đầy đủ (2) được tạo lúc 24:00 thứ 4, bao gồm tất cả “mọi thứ” trong
CSDL tại thời điểm 24:00 thứ 4
Sao lưu khác biệt (Differential database backup) là phương pháp sao chép vào tập tin lưu trữ chỉ những dữ liệu bị thay đổi kể từ lần sao lưu đầy đủ gần nhất Chính vì vậy, phương pháp này nhanh hơn và ít tốn không gian lưu trữ hơn rất nhiều so với phương pháp sao lưu đầy đủ Tuy nhiên, nó khó thực hiện hơn và việc phục hồi dữ liệu sử dụng các bản sao lưu khác biệt đòi hỏi nhiều thời gian hơn Với sao lưu khác biệt, CSDL có thể được phục hồi về thời điểm thực hiện sao lưu gần nhất
Phương pháp sao lưu này phù hợp với CSDL có đặc điểm sau đây:
- CSDL ít quan trọng, những thay đổi của CSDL có thể tái tạo thủ công hơn là sử dụng các nhật ký giao dịch
- Tài nguyên để thực hiện sao lưu dữ liệu bị hạn chế như thiếu vùng lưu trữ hoặc thời gian thực hiện sao lưu
Ví dụ 3.15: Lịch trình sao lưu dữ liệu
24:00 (Thứ 3) Sao lưu đầy đủ (1) 06:00 (Thứ 4) Sao lưu khác biệt (2) 12:00 (Thứ 4) Sao lưu khác biệt (3) 18:00 (Thứ 4) Sao lưu khác biệt (4) 24:00 (Thứ 4) Sao lưu đầy đủ (5) 06:00 (Thứ 5) Sao lưu khác biệt (6) 12:00 (Thứ 5) Sao lưu khác biệt (7)
- Sao lưu khác biệt (2) được tạo lúc 06:00 thứ 4, bao gồm tất cả mọi thay đổi dữ
51 liệu từ 24:00 thứ 3 ( lần sao lưu đầy đủ (1) gần nhất ) đến 06:00 thứ 4
- Sao lưu khác biệt (3) được tạo lúc 12:00 thứ 4, bao gồm tất cả mọi thay đổi dữ liệu từ 24:00 thứ 3 ( lần sao lưu đầy đủ (1) gần nhất ) đến 12:00 thứ 4
- Sao lưu khác biệt (7) được tạo lúc 12:00 thứ 5, bao gồm tất cả mọi thay đổi dữ liệu từ 24:00 thứ 4 ( lần sao lưu đầy đủ (5) gần nhất ) đến 12:00 thứ 5
3.3.1.3 Sao lưu nhật ký giao dịch
Sao lưu nhật ký giao dịch là quá trình sao chép các bản ghi trong tệp nhật ký giao dịch vào tệp lưu trữ, bắt đầu từ bản sao lưu gần nhất Thao tác này chỉ copy hoạt động chứ không sao chép dữ liệu, nên diễn ra nhanh và tiết kiệm không gian hơn sao lưu khác biệt Tuy nhiên, bản sao lưu nhật ký cần kết hợp với bản sao lưu đầy đủ hoặc khác biệt để đảm bảo tính độc lập Nhờ vậy, CSDL có thể được khôi phục về bất kỳ thời điểm nào trong quá khứ và vẫn duy trì tính nhất quán.
Phương pháp sao lưu này phù hợp với CSDL có đặc điểm sau đây:
- Tài nguyên để thực hiện sao lưu dữ liệu bị hạn chế như thiếu vùng lưu trữ hoặc thời gian thực hiện sao lưu
- Không chấp nhận việc mất dữ liệu khi gặp sự cố và không thể khôi phục được
- Mong muốn trả về CSDL tại thời điểm xảy ra sự cố
- CSDL thay đổi thường xuyên
Ví dụ 3.16: Lịch trình sao lưu dữ liệu
24:00 (Thứ 3) Sao lưu đầy đủ (1) 01:00 (Thứ 4) Sao lưu nhật ký (2) 02:00 (Thứ 4) Sao lưu nhật ký (3) 03:00 (Thứ 4) Sao lưu nhật ký (4) 04:00 (Thứ 4) Sao lưu nhật ký (5) 05:00 (Thứ 4) Sao lưu nhật ký (6) 06:00 (Thứ 4) Sao lưu khác biệt (7) 07:00 (Thứ 4) Sao lưu nhật ký (8)
08:00 (Thứ 4) Sao lưu nhật ký (9) 09:00 (Thứ 4) Sao lưu nhật ký (10)
- Sao lưu nhật ký (2) được tạo lúc 01:00 thứ 4, bao gồm tất cả mọi nhật ký giao dịch từ 24:00 thứ 3 ( lần sao lưu gần nhất ) đến 01:00 thứ 4
- Sao lưu nhật ký (3) được tạo lúc 02:00 thứ 4, bao gồm tất cả mọi nhật ký giao dịch từ 01:00 thứ 4 ( lần sao lưu gần nhất ) đến 02:00 thứ 4
- Sao lưu khác biệt (7) được tạo lúc 06:00 thứ 4, bao gồm tất cả mọi thay đổi dữ liệu từ 24:00 thứ 3 ( lần sao lưu đầy đủ (1) gần nhất ) đến 06:00 thứ 4
- Sao lưu nhật ký (8) được tạo lúc 07:00 thứ 4, bao gồm tất cả mọi nhật ký giao dịch từ 06:00 thứ 4 ( lần sao lưu gần nhất ) đến 07:00 thứ 4
- Sao lưu nhật ký (9) được tạo lúc 08:00 thứ 4, bao gồm tất cả mọi nhật ký giao dịch từ 07:00 thứ 4 ( lần sao lưu gần nhất ) đến 08:00 thứ 4
Chiến lược sao lưu là cách lựa chọn phương pháp sao lưu, tần suất sao lưu dữ liệu của hệ thống Việc hoạch định chiến lược sao lưu tối ưu phụ thuộc vào quy mô của hệ thống, mức độ quan trọng của dữ liệu và tính chất nghiệp vụ của hệ thống
Kế hoạch sao lưu được lập theo mức thời gian ngày / tuần / tháng, cụ thể như sau:
- Sao lưu theo ngày với công cụ backup online, việc sao lưu dữ liệu diễn ra trong khi hệ thống vẫn hoạt động bình thường Phương pháp sao lưu khác biệt được áp dụng định kỳ vào cuối mỗi ngày CSDL trong tuần được sao lưu đầy đủ với
07 tập tin sao lưu được đánh số thứ tự từ 1 đến 7
Các bản sao lưu hàng tuần được thực hiện bằng công cụ trực tuyến khi hệ thống vẫn hoạt động bình thường, trong khi một phương pháp sao lưu khác biệt được áp dụng định kỳ vào cuối ngày thứ sáu hàng tuần Toàn bộ CSDL trong tháng sẽ được sao lưu đầy đủ gồm 04 tập tin được đánh số thứ tự từ 1 đến 4.
- Sao lưu theo tháng với giải pháp backup offline, việc sao lưu dữ liệu diễn ra trong khi hệ thống ngưng hoạt động, không còn kết nối tới CSDL Phương pháp sao lưu đầy đủ được áp dụng định kỳ vào cuối ngày thứ sáu cuối cùng của tháng CSDL trong năm được sao lưu đầy đủ với 12 tập tin sao lưu được đánh số thứ
3.3.3 Phương pháp phục hồi dữ liệu
Phục hồi dữ liệu (data recovery) là quá trình đưa CSDL về trạng thái nhất quán, trong đó các giao dịch đã được hoàn tất (commit) sẽ được ghi lên đĩa (redo) và các giao dịch chưa hoàn tất sẽ bị hủy bỏ (undo) Mục đích của phục hồi dữ liệu là duy trì tính nhất quán của CSDL, hạn chế tối đa khối lượng công việc cần phải thực hiện khi sự cố xảy ra
Phục hồi dữ liệu đòi hỏi một (các) bản sao lưu dữ liệu phù hợp đã được thực hiện trước đó Khôi phục dữ liệu là quá trình sử dụng (các) bản sao lưu có sẵn để sao chép dữ liệu trở lại cơ sở dữ liệu Tuy nhiên, khác với sao lưu, khôi phục chỉ xảy ra khi cơ sở dữ liệu tạm ngừng hoạt động, không có kết nối nào tới cơ sở dữ liệu Ngoài ra, khôi phục dữ liệu luôn tác động đến toàn bộ cơ sở dữ liệu chứ không phải một bảng hoặc một phần cụ thể dựa trên các bản sao lưu đã dùng.
Phục hồi dữ liệu từ bản sao lưu toàn phần, bản sao lưu khác biệt và nhật ký giao dịch cho phép khôi phục cơ sở dữ liệu về trạng thái gần nhất có thể vào một thời điểm bất kỳ trong quá khứ Trình tự phục hồi cụ thể bao gồm việc sử dụng bản sao lưu đầy đủ làm điểm khởi đầu, sau đó áp dụng các bản sao lưu khác biệt để cập nhật dần dữ liệu và cuối cùng áp dụng nhật ký giao dịch để đảm bảo tính toàn vẹn và chính xác của dữ liệu.
- Đầu tiên, bản sao lưu đầy đủ gần với thời điểm X nhất,
- Tiếp theo là bản sao lưu khác biệt gần với thời điểm X nhất,
- Cuối cùng là các bản sao lưu nhật ký giao dịch từ thời điểm thực hiện sao lưu khác biệt nói trên đến thời điểm X theo đúng trình tự thời gian
Ví dụ 3.17: Phát sinh giao dịch trong khi sao lưu dữ liệu
Giả sử tại thời điểm X, CSDL gồm các dữ liệu ABCD, EF, GHIJ, KL, MN; trong nhật ký giao dịch (log file) không có dữ liệu vì không có giao dịch nào xảy ra
Tự động hóa các tác vụ quản trị
Tự động hóa các tác vụ quản trị là việc tận dụng các quy trình và công cụ để làm cho công tác quản trị CSDL trở nên đơn giản và an toàn hơn Tự động hóa có thể được áp dụng để cung cấp, nâng cấp, vá lỗi, chuyển đổi dự phòng, khôi phục, mở rộng quy mô và một số thủ tục CSDL khác Tự động hóa các thao tác đơn điệu này là giải pháp tốt để đảm bảo chúng được thực hiện một cách chính xác và đúng tiến độ Nếu không, cho dù CSDL được thiết kế hoàn hảo đến đâu, hệ thống sẽ sớm ngừng hoạt động nếu không được bảo trì thích hợp Nhờ đó, đội ngũ quản trị viên CSDL có thể tập trung vào các nhiệm vụ quan trọng hơn, chẳng hạn như điều chỉnh hiệu suất, thiết kế truy vấn, mô hình hóa dữ liệu hoặc cung cấp lời khuyên về kiến trúc cho các nhà phát triển ứng dụng
3.4.2 Các khả năng tự động hóa
Các công cụ tự động hóa CSDL cung cấp nhiều khả năng tự động hóa được xây dựng theo mục đích áp dụng cho hệ quản trị CSDL và các nhiệm vụ vận hành cơ sở hạ tầng liên quan Dưới đây là các khả năng tự động hóa CSDL phổ biến nhất:
Các tác vụ xử lý dữ liệu bao gồm các tác vụ thu thập, sao chép, dọn dẹp và di chuyển dữ liệu một cách tự động để dữ liệu trở nên có ý nghĩa hơn, an toàn, đáng tin cậy và sẵn sàng sử dụng ngay khi cần thiết
Khôi phục và bảo vệ sau thảm họa
Việc mất các tài sản thông tin quan trọng có thể ảnh hưởng đến khả năng hoạt động của một tổ chức theo các hướng dẫn quy định và sự mong đợi của khách hàng Do đó, các tổ chức phải đưa ra các chiến lược giảm thiểu rủi ro như:
Phân phối trên các khu vực máy chủ khác nhau về địa lý
Tự động kích hoạt hệ thống phòng thủ chống lại sự thỏa hiệp và các cuộc tấn công mạng
Sao lưu và phục hồi
Hệ thống phải được lập trình để tự động sao lưu và khôi phục trong các trường hợp cụ thể nhằm giảm nguy cơ mất dữ liệu, đặc biệt trong trường hợp có sự xâm nhập mạng làm ảnh hưởng đến tính toàn vẹn của CSDL nhạy cảm và quan trọng
Triển khai các quy trình quản lý truy cập và xác thực mạnh mẽ Việc đăng ký các hệ thống CSDL cụ thể để tuân thủ các chính sách cụ thể của tổ chức để có đặc quyền truy cập có thể là một thách thức và dẫn đến một số vấn đề bảo mật trừ khi các chính sách bảo mật thích hợp được thực thi
Hầu hết các tổ chức phải tuân theo nhiều yêu cầu tuân thủ khác nhau Ví dụ: quy định yêu cầu ẩn danh dữ liệu người dùng trước khi tương tác với các đối tác bên ngoài mà không có sự đồng ý đầy đủ của người dùng Trong trường hợp này, tất cả các mục nhập CSDL phải được ẩn danh một cách tự động trước khi nhà cung cấp bên thứ ba được phép xử lý hoặc sử dụng dữ liệu Không tuân thủ có thể dẫn đến:
- Mất niềm tin vào một thị trường người dùng ngày càng nhận thức rõ về quyền
Kiểm toán và báo cáo
Sử dụng tự động hóa để giám sát và theo dõi cách CSDL và thông tin chứa bên trong thay đổi CSDL kiểm toán có thể giúp tổ chức hiểu cách thức hoạt động, hệ thống và tài sản dữ liệu tuân thủ các chính sách của tổ chức và quy định Bất kỳ sự khác biệt nào đều có thể được theo dõi và đưa ra các biện pháp khắc phục ngay lập tức trước khi nó ảnh hưởng đến hoạt động kinh doanh
3.4.3 Tự động hóa các tác vụ quản trị trong SQL Server
SQL Server cung cấp dịch vụ SQL Server Agent giúp thực hiện tự động các công việc lặp đi lặp lại nhiều lần trong một thời gian nhất định trong quá trình quản lý CSDL Điều này sẽ giúp cho nhà quản trị tránh những thiếu sót không đang có trong việc quản lý, vận hành CSDL Thực hiện tự động hóa các công việc còn đảm bảo rằng chúng được thực hiện nhất quán Các thành phần cần thiết để tự động hóa các tác vụ quản trị trong SQL Server bao gồm:
- Tác nhân điều hành (Operator): Bí danh cho cá nhân hoặc nhóm có thể nhận được thông báo khi công việc đã hoàn thành hoặc cảnh báo phát sinh trong quá trình thực hiện công việc đó Operator kích hoạt khả năng thông báo và giám sát của SQL
- Công việc (Job): Một hay một nhóm nhiệm vụ mà SQL Server Agent sẽ thực thi
Job được sử dụng để xác định các nhiệm vụ quản trị và giám sát, cả lúc thành công và thất bại Job có thể được chạy trên một máy chủ cục bộ hoặc trên nhiều máy chủ từ xa, cho phép các quản trị viên và giám sát viên triển khai các nhiệm vụ này một cách hiệu quả và dễ dàng trên nhiều môi trường máy chủ.
- Lịch trình (Schedule): xác định khi nào Job sẽ thực thi; Có thể một hay nhiều Job chạy trên cùng một Schedule và một hoặc nhiều Schedule có thể áp dụng cho cùng một Job
- Cảnh báo (Alert): một phản hồi tự động gắn liền với một sự kiện được kiểm soát bởi SQL Server Agent
3.4.3.1 Khởi động SQL Server Agent
Dịch vụ SQL Server Agent chỉ áp dụng trong các bản cài đặt Enterprise, Developer hoặc Standard Mặc định sau khi cài đặt thành công SQL Server, SQL Server Agent ở chế độ không khả dụng (Agent XPs disabled)
Hình 3.24 Tự động hóa các tác vụ quản trị Để kích hoạt dịch vụ, nhấn chuột phải vào SQL Server Agent và gọi chức năng Start trong thanh thực đơn đi kèm
Giao diện xác nhận thay đổi cấu hình của SSMS xuất hiện, nhấn nút YES để tiếp tục Sau đó, giao diện xác nhận khởi động SQL Server Agent xuất hiện, nhấn nút YES để tiếp tục
Giám sát hiệu suất
Giám sát hiệu suất là việc thu thập và phân tích liên tục các chỉ số sử dụng, hiệu suất và sự kiện cho hệ quản trị CSDL Đây là bước đầu tiên trong việc tối ưu hóa hiệu suất cho các ứng dụng phụ thuộc vào nền tảng dữ liệu hiện có Giám sát hiệu suất cao mang lại cái nhìn tổng thể về toàn bộ dữ liệu Nó cũng cung cấp các phân tích sâu cần thiết để phát hiện nguyên nhân của các vấn đề hiệu suất khó khăn nhất Một giải pháp giám sát toàn diện cũng sẽ bao gồm các tùy chọn mở rộng để cảnh báo chủ động và tự động khắc phục các sự cố hiệu suất quen thuộc
Giám sát hiệu suất là hoạt động đánh giá máy chủ dữ liệu đang hoạt động như thế nào Giám sát hiệu quả bao gồm việc chụp ảnh nhanh định kỳ về hiệu suất hiện tại để cô lập các quy trình đang gây ra sự cố và thu thập dữ liệu liên tục theo thời gian để theo dõi xu hướng hiệu suất Ba mục tiêu chính của giám sát hoạt động hệ quản trị CSDL bao gồm:
- Xác định những gì đang xảy ra bên trong hệ quản trị CSDL
- Xác định mức độ hệ quản trị CSDL sử dụng hiệu quả tài nguyên máy chủ
- Xây dựng hồ sơ hoạt động của hệ quản trị CSDL
Việc giám sát hệ quản trị CSDL mang lại các lợi ích thiết thực sau đây:
Giám sát chủ động hiệu suất giúp giảm đáng kể sự cố hiệu suất, từ đó giải phóng các quản trị viên khỏi nhiệm vụ khắc phục sự cố liên tục và cho phép họ tập trung vào tối ưu hóa nền tảng dữ liệu tổng thể Điều này không chỉ cải thiện hiệu quả chung của hệ thống mà còn hỗ trợ hiệu quả các hoạt động kinh doanh khác.
- Chi phí cơ sở hạ tầng thấp hơn: Tối đa hóa đầu tư cơ sở hạ tầng bằng cách đảm bảo các ứng dụng đạt được hiệu suất tốt nhất có thể trong ranh giới dịch vụ và phần cứng
- Quản lý rủi ro: Liên tục theo dõi hiệu suất để giúp giữ cho nền tảng dữ liệu hoạt động trơn tru, giảm nguy cơ thời gian ngừng hoạt động Thời gian ngừng hoạt động khiến tổ chức mất năng suất rất lớn và đặt nhóm nền tảng dữ liệu vào thế phản ứng có hại
3.5.2 Các nội dung giám sát
Giám sát hiệu suất giúp quản trị viên xác định các vấn đề về cơ sở dữ liệu trước khi chúng trở thành sự cố nghiêm trọng Nhờ đó, các ứng dụng sẽ luôn có tính khả dụng và hoạt động ổn định Quản trị viên cần nắm rõ các khía cạnh liên quan đến giám sát hiệu suất cơ sở dữ liệu, bao gồm cách tiếp cận giám sát, các chỉ số chính và các phương pháp thực hành tối ưu.
3.5.2.1 Các cách tiếp cận chung
Hai cách tiếp cận chính để giám sát CSDL: chủ động và phản ứng Cách tiếp cận chủ động nhằm xác định các vấn đề trước khi chúng trở thành vấn đề, trong khi cách tiếp cận phản ứng nhằm mục đích giảm thiểu tác động của những vấn đề đó khi chúng đã xảy ra
Giám sát phản ứng có thể được sử dụng để khắc phục sự cố hiệu suất, báo cáo sự cố lớn hoặc điều tra vi phạm bảo mật
Cách tiếp cận chủ động ít rủi ro hơn và mang lại trải nghiệm người dùng cuối tốt hơn Nhưng để chủ động, phải đảm bảo rằng nhà quản trị phải đang theo dõi các chỉ số phù hợp và cảnh báo cho những người có liên quan khi có điều gì đó không ổn hoặc bất thường
Các chỉ số hiệu suất chính nên xem xét theo dõi để giúp cung cấp thông tin chi tiết về tình trạng tổng thể của môi trường CSDL:
- Truy vấn (Queries): Để đảm bảo hiệu suất tổng thể ở mức cao, điều quan trọng là phải theo dõi hiệu suất của chính các truy vấn Giám sát sẽ cảnh báo về các vấn đề truy vấn bao gồm kết hợp không hiệu quả giữa các bảng, chỉ mục không đủ hoặc thừa và quá nhiều chữ
- Dung lượng (Capacity): Các vấn đề về CSDL có thể do phần cứng, chẳng hạn như tốc độ CPU chậm hoặc CPU không đủ, đĩa chậm, đĩa bị định cấu hình sai, đầy đĩa và thiếu bộ nhớ
- Xung đột người dùng (Conflicts among users): Nhiều người dùng cùng truy cập CSDL có thể gây ra các hoạt động và truy vấn xung đột Khi đó, hiệu suất của CSDL giảm do bị khóa trang / hàng, khóa giao dịch hoặc các hoạt động hàng loạt gây ra tranh chấp tài nguyên phần cứng
- Cấu hình (Configuration issues): Đĩa không có cấu hình phù hợp có thể gây ra các vấn đề về hiệu suất Việc giám sát sẽ phát hiện ra các vấn đề như bộ đệm đệm không đủ kích thước hoặc thiếu bộ đệm truy vấn
Một số phương pháp chính trong chiến lược giám sát gồm: Giám sát tính khả dụng và tiêu thụ tài nguyên; Đo lường và so sánh thông lượng; Giám sát các truy vấn tốn kém; Theo dõi các thay đổi CSDL; Theo dõi nhật ký; Kết hợp dữ liệu lịch sử.
Theo dõi tính khả dụng và mức tiêu thụ tài nguyên: Việc giám sát tài nguyên đòi hỏi phải thường xuyên kiểm tra tất cả các CSDL đang trực tuyến Đây là quy trình quan trọng nhất - và cũng là đơn giản nhất - trong số các quy trình thực tế, nên được tiến hành trong và ngoài giờ làm việc Khi theo dõi CSDL theo cách thủ công, việc giám sát tài nguyên tốn nhiều thời gian và có nguy cơ bị bỏ qua, do đó việc sử dụng công cụ giám sát trở nên bắt buộc Tài nguyên bao gồm bộ nhớ, đĩa cứng, CPU và các thành phần liên quan đến mạng
91 Đo lường thông lượng: Cập nhật các chỉ số thông lượng, như số lượng kết nối mỗi giây và độ trễ sao chép Tất cả các phép đo phải đối chiếu với các phép đo trong tương lai, bằng cách dùng làm đường cơ sở Điều này giúp nhanh chóng xác định bất kỳ sự sai lệch hoặc bất thường Đường cơ sở phải dựa trên nhiều lần đọc, được thực hiện ở các giai đoạn khác nhau Một số công cụ cho phép đặt các số liệu cơ bản làm ngưỡng cảnh báo
Bài tập có lời giải
1- Tạo CSDL MyTest1 với các thông số mặc định của SQL Server và kiểm tra cấu hình của CSDL sau khi tạo
2- Tạo CSDL MyTest2 với khai báo tường minh tập tin lưu trữ và tập tin nhật ký (tên, kích thước khởi tạo, kích thước tối đa và kích thước mở rộng)
3- Thay đổi tên CSDL COMPANY thành MyTest3
4- Thêm tập tin dữ liệu thứ cấp (phụ) vào CSDL MyTest1 với kích thước 5MB, kích thước tối đa 100MB, kích thước tăng trưởng 5MB
5- Xóa tập tin MyTest1_dat2 khỏi CSDL MyTest1
6- Xóa CSDL COMPANY sau khi kiểm tra sự tồn tại của nó
7- Sao lưu CSDL COMPANY và lưu vào thư mục D:\DATA\ với tên gọi là COMPANY_YYYYMMDD.bak, trong đó YYYYMMDD là thời gian sao lưu
Kết quả là, một bản sao lưu đầy đủ với tên COMPANY_20220411.bak được tạo ra và lưu trữ trong thư mục D:\DATA, trong đó ngày 20220411 đại diện cho ngày tạo bản sao lưu này.
8- Sao lưu dữ liệu và nhật ký của CSDL COMPANY với thiết lập mặc định là
9- Phục hồi CSDL COMPANY từ bản sao lưu đầy đủ và sau đó là sao lưu khác biệt, cả hai bản sao lưu này lần lượt là tập sao lưu (backup set) thứ 3 và thứ 10 trong thiết bị sao lưu (backup device)
10- Phục hồi CSDL SALE từ bản sao lưu đầy đủ và sau đó là sao lưu nhật ký, sau đó di chuyển các tập tin dữ liệu sang thư mục D:\MSSQL\Data có sẵn
Bài tập rèn luyện
1- Tạo CSDL với nhiều tập tin dữ liệu, nhiều tập tin nhật ký
2- Tự động sao lưu đầy đủ CSDL Company vào lúc 0:01 ngày đầu tiên hàng tháng 3- Tự động sao lưu khác biệt CSDL Company vào lúc 0:01 ngày thứ hai hàng tuần 4- Tự động sao lưu nhật ký giao dịch CSDL Company cứ mỗi 10 phút/1 lần
5- Khôi phục dữ liệu sử dụng sao lưu đầy đủ, sao lưu khác biệt, sao lưu nhật ký.
Câu hỏi ôn tập
1- Trình bày các thành phần của một CSDL trong SQL Server
2- Trình bày khái niệm, tính chất, phân loại và các trạng thái của giao dịch
3- Trình bày phương pháp sao lưu dữ liệu
4- Trình bày phương pháp phục hồi dữ liệu
5- Trình bày khái niệm và các khả năng tự động hóa tác vụ quản trị
6- Trình bày khái niệm và các nội dung giám sát hiệu suất
Quản trị thành phần cơ sở dữ liệu
Các thành phần lưu trữ
Bảng dữ liệu (Data table) hay còn gọi là bảng lưu trữ (Stored table) là đối tượng được sử dụng để tổ chức và lưu trữ dữ liệu Bảng được xác định bởi tên định danh duy nhất trong mỗi CSDL Cấu trúc của bảng bao gồm:
- Cột (Column) hay trường thuộc tính (Field) biểu diễn một tính chất, đặc điểm của thực thể Mỗi cột được xác định bởi tên cột, kiểu dữ liệu và một số tùy chọn khác
- Hàng (Row) hay bản ghi dữ liệu (Data record) biểu diễn cho một thực thể với các giá trị khác nhau tại các cột (trường thuộc tính)
Ngoài các thành phần nói trên, trong bảng còn tồn tại các ràng buộc toàn vẹn dữ liệu, đảm bảo ý nghĩa của dữ liệu chứa trong bảng cũng như mối liên hệ giữa các dữ liệu nằm trong (các) bảng khác nhau Các thao tác liên quan tới cấu trúc của bảng dữ liệu bao gồm: Tạo mới (CREATE), sửa chữa (ALTER) và xóa (DROP) Các thao tác này có thể thực hiện thông qua giao diện quản trị SSMS hoặc ngôn ngữ truy vấn T-SQL
4.1.1.1 Tạo mới cấu trúc bảng
Cấu trúc bảng được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.1: Tạo bảng Department và bảng Project (không khai báo khóa chính)
Ví dụ 4.2: Tạo bảng Department có khai báo ràng buộc NOT NULL
Ví dụ 4.3: Tạo bảng Employee có khai báo giá trị mặc định
Ví dụ 4.4: Tạo bảng Employee có khai báo ràng buộc miền giá trị
Ví dụ 4.5: Tạo bảng Employee có khai báo ràng buộc khóa chính, khóa duy nhất
Ví dụ 4.6: Tạo bảng Workson có khai báo khóa chính gồm hai thuộc tính
Ví dụ 4.7: Tạo bảng Project có khai báo khóa chính, khóa ngoại
Ví dụ 4.8: Tạo bảng Project có khai báo khóa duy nhất được đặt tên tường minh
4.1.1.2 Thay đổi cấu trúc bảng
Cấu trúc bảng được sửa chữa bởi câu lệnh sau đây:
Ví dụ 4.9: Thêm một thuộc tính mới vào bảng
Ví dụ 4.10: Sửa thuộc tính trong bảng
Ví dụ 4.11: Xóa thuộc tính trong bảng
Ví dụ 4.12: Thêm mới ràng buộc miền giá trị trong bảng
Ví dụ 4.13: Thêm mới ràng buộc khóa ngoại trong bảng
Ví dụ 4.14: Xóa ràng buộc trong bảng
Bảng dữ liệu được xóa bởi câu lệnh sau đây:
DROP TABLE table_name GO
- Lệnh này sẽ xóa toàn bộ dữ liệu trong bảng lẫn cấu trúc bảng, bao gồm các ràng buộc toàn vẹn được khai báo trong câu lệnh tạo bảng hoặc được thêm vào bảng bằng câu lệnh ALTER
- Lệnh này chỉ thành công khi bảng bị xóa không được tham chiếu tới bởi bất kỳ ràng buộc tham chiếu nào trong CSDL
Ví dụ 4.15: Xóa bảng Project
Trong SQL, khung nhìn (view) được xem là một bảng ảo dựa trên tập kết quả của một câu lệnh truy vấn dữ liệu Khung nhìn chứa các hàng và cột, giống như một bảng lưu trữ Các cột trong khung nhìn là các cột từ một hoặc nhiều bảng lưu trữ trong CSDL
Câu lệnh truy vấn tạo chế độ xem có thể bao gồm nhiều hàm tích hợp sẵn hoặc do người dùng xác định, cùng với nhiều bảng cơ sở dữ liệu hoặc chế độ xem khác để trình bày dữ liệu như thể chúng xuất phát từ một bảng duy nhất.
Tương tự, sau khi được định nghĩa, khung nhìn có thể xuất hiện tại các vị trí mà bảng lưu trữ có thể xuất hiện
Khung nhìn được định nghĩa bởi câu lệnh sau đây:
- Câu lệnh SELECT được gọi là câu truy vấn định nghĩa khung nhìn
- Các bảng lưu trữ xuất hiện trong mệnh đề FROM của câu truy vấn định nghĩa khung nhìn được gọi là bảng cơ sở
Ví dụ 4.16: Tạo khung nhìn chứa thông tin nhân viên trong đơn vị số 1
Ví dụ 4.17: Kết quả thực hiện truy vấn vào khung nhìn EmployeeDept01
Ví dụ 4.18: Câu truy vấn sử dụng khung nhìn EmployeeDept01
4.1.2.2 Thay đổi định nghĩa khung nhìn Định nghĩa khung nhìn được thay đổi bởi câu lệnh sau đây:
Chú ý: Các quyền đã cấp cho khung nhìn không bị thay đổi khi định nghĩa khung nhìn bị thay đổi
Ví dụ 4.19: Câu truy vấn thay đổi định nghĩa khung nhìn EmployeeDept01
Ví dụ 4.20: Kết quả truy vấn khung nhìn EmployeeDept01
Khung nhìn bị xóa bởi câu lệnh sau đây:
- Các quyền đã cấp cho khung nhìn bị xóa khi khung nhìn bị xóa
- Xóa định nghĩa khung nhìn, không ảnh hưởng đến bảng cơ sở hay dữ liệu trong bảng cơ sở; ngược lại, xóa bảng cơ sở làm cho khung nhìn trở nên không thể sử dụng được
Ví dụ 4.21: Xóa khung nhìn EmployeeDept01
Ví dụ 4.22: Kiểm tra sự tồn tại trước khi xóa khung nhìn EmployeeDept01
4.1.2.4 Khung nhìn có thể cập nhật
Trong một số trường hợp, chế độ xem có thể cập nhật, cho phép thêm, chỉnh sửa hoặc xóa dữ liệu trong chế độ xem cơ sở Khả năng cập nhật này phụ thuộc vào lệnh tạo chế độ xem và bảng cơ sở được sử dụng.
- Các cột xuất hiện trong mệnh đề SELECT phải là các cột trong bảng cơ sở; các
112 biểu thức tính toán, các hàm kết hợp không được chấp nhận
- Không xuất hiện từ khóa DISTINCT trong mệnh đề SELECT
- Các thuộc tính trong mệnh đề SELECT đủ để khi một bộ được thêm vào khung nhìn, một bộ tương ứng sẽ được thêm vào bảng cơ sở
- Sử dụng một bảng cơ sở với một thể hiện duy nhất trong mệnh đề FROM
- Không sử dụng câu truy vấn lồng liên quan tới bảng cơ sở trong mệnh đề WHERE
Ví dụ 4.23: Thêm mới một bộ vào bảng cơ sở
Bước 1: Tạo khung nhìn với câu lệnh như sau:
Bước 2: Xem khung nhìn này:
Bước 3: Xem bảng cơ sở:
Bước 4: Thêm một bộ vào bảng cơ sở:
Bước 5: Xem bảng cơ sở:
Kết luận: Thêm mới vào bảng cơ sở ảnh hưởng đến kết quả truy vấn khung nhìn
Ví dụ 4.24: Thêm mới một bộ vào khung nhìn
Thực hiện lại ví dụ 4.8, từ bước 4 trở đi
Bước 4: Thêm một bộ vào khung nhìn
Bước 6: Xem bảng cơ sở với DNum=1:
Bước 7: Xem toàn bộ bảng cơ sở:
Việc bổ sung thêm thành phần mới vào mô hình đã thành công Tuy nhiên, các tham số mới được tạo trong bảng cơ sở dữ liệu lại thiếu thông tin, do đó không thể hiện được bức tranh toàn cảnh như mong đợi.
Chỉ mục (Index) là một cấu trúc dữ liệu dùng để tăng tốc độ truy cập dữ liệu trong bảng dựa trên giá trị của một (số) thuộc tính cho trước Chỉ mục được thể hiện bởi cây nhị phân tìm kiếm với các cặp giá trị (key, positions), trong đó positions là những vị trí trong bảng dữ liệu có giá trị tương ứng với khóa key Nói một cách đơn giản, chỉ mục là một con trỏ chỉ tới từng vị trí xuất hiện trong bảng/cột được đánh chỉ mục Với con trỏ này, thay vì bộ truy vấn phải duyệt từng hàng dữ liệu trong bảng để tìm kiếm giá trị cần tìm, nó sẽ di chuyển ngay lập tức tới vị trí chứa giá trị đó
Sử dụng chỉ mục giúp tăng tốc các truy vấn SELECT chứa các mệnh đề WHERE hoặc ORDER BY Đồng thời, sự hiện diện của chỉ mục sẽ làm chậm đi quá trình xử lý dữ liệu nhập với các lệnh INSERT, UPDATE hay DELETE Lý do là dữ liệu trong bảng cơ sở thay đổi làm khởi động lại câu lệnh tạo chỉ mục trên bảng cơ sở đó Ngoài ra, việc tạo mới hay xóa bỏ chỉ mục không ảnh hưởng tới dữ liệu trong bảng cơ sở
Thông thường, chỉ mục sẽ gắn với thuộc tính khóa trong bảng dữ liệu vì truy vấn dựa trên khóa thường xuyên được thực hiện Chỉ mục trên khóa sẽ xác định vị trí lưu trữ giá trị cần tìm, giúp tăng tốc xử lý truy vấn Trong một số trường hợp, chỉ mục có thể được tạo trên thuộc tính gần giống khóa, giúp tìm nhanh nhiều vị trí tương ứng với mỗi giá trị thuộc tính Ngoài ra, chỉ mục cũng có thể áp dụng với thuộc tính phân loại, cung cấp vị trí tương ứng với giá trị đại diện của mỗi nhóm.
Chỉ mục được định nghĩa bởi câu lệnh sau đây:
CREATE INDEX index_name ON table_name ();
Ví dụ 4.25: Tạo chỉ mục cột đơn (Single-Column Index)
Ví dụ 4.26: Tạo chỉ mục kết hợp (Composite Index)
Chỉ mục được xóa bởi câu lệnh sau đây:
Ví dụ 4.27: Xóa chỉ mục
Các thành phần xử lý
Thủ tục lưu trữ (Stored procedure) là một đối tượng trong CSDL, gồm một nhóm các câu lệnh SQL được đặt tên là lưu trữ cùng nhau trong CSDL Dựa trên các câu lệnh trong thủ tục và các tham số truyền vào, nó có thể thực hiện một hoặc nhiều thao tác trên CSDL và trả về giá trị, nếu có Thủ tục lưu trữ bao gồm hai loại thủ tục hệ thống (system procedure) và thủ tục người dùng định nghĩa (user-defined procedure)
Sử dụng thủ tục lưu trữ đem lại các lợi ích sau đây:
Người dùng có thể thực hiện các thủ tục đã lưu trữ thông qua các ứng dụng bằng cách gọi tên và cung cấp các tham số phù hợp Nhờ đó, khả năng tái sử dụng của các thủ tục được nâng cao.
- Dễ dàng sửa đổi: Thủ tục có thể được sửa đổi bất cứ lúc nào với câu lệnh ALTER PROCEDURE với phân quyền phù hợp
- Bảo mật: Các thủ tục lưu trữ cho phép nâng cao tính bảo mật của ứng dụng hoặc CSDL bằng cách hạn chế người dùng truy cập trực tiếp vào bảng lưu trữ
- Lưu lượng đường truyền thấp: Máy chủ chỉ chuyển tên thủ tục thay vì toàn bộ các câu lệnh, làm giảm lưu lượng mạng
- Tăng hiệu suất: Trong lần sử dụng đầu tiên, một kế hoạch cho thủ tục sẽ được tạo và lưu trữ trong vùng đệm để thực hiện nhanh chóng cho lần tiếp theo Bốn thành phần của một thủ tục lưu trữ là tên gọi, các tham số, các câu lệnh thực thi và giá trị trả về (nếu có)
- Tên gọi: định danh, duy nhất trong mỗi CSDL
- Tham số: đại lượng dùng để lưu giữ giá trị trao đổi giữa thủ tục và môi trường thực thi o Phân loại
Tham số đầu vào lưu giữ giá trị truyền vào từ môi trường thực thi
Tham số bắt buộc: bắt buộc phải truyền giá trị cho tham số này
117 mỗi khi thủ tục được gọi thực thi
Tham số tùy chọn (đã được gắn giá trị mặc định): nếu không có giá trị được truyền trong lời gọi thủ tục, giá trị mặc định được sử dụng
Tham số đầu ra lưu giữ giá trị trả về môi trường thực thi o Các câu lệnh thực thi: mọi câu lệnh SQL, bao gồm câu lệnh khai báo biến o Truyền giá trị cho tham số đầu vào
Truyền theo vị trí: thứ tự các giá trị truyền vào ứng với thứ tự các tham số được liệt kê trong câu lệnh định nghĩa thủ tục
Truyền theo tên: các cặp = được liệt kê trong lời gọi thủ tục
Thủ tục được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.28: Tạo thủ tục không có tham số
Ví dụ 4.29: Tạo thủ tục có tham số đầu vào, không có tham số đầu ra
Ví dụ 4.30: Tạo thủ tục có tham số đầu vào, có tham số đầu ra
Ví dụ 4.31: Tạo thủ tục có tham số đầu vào, có giá trị trả về
Ví dụ 4.32: Gọi thực thi thủ tục (không có tham số)
Ví dụ 4.33: Gọi thực thi thủ tục (có tham số đầu vào), truyền giá trị theo vị trí
Ví dụ 4.34: Gọi thực thi thủ tục (có tham số đầu vào), truyền giá trị theo tên
Ví dụ 4.35: Gọi thực thi thủ tục (có tham số đầu vào, đầu ra)
Kịch bản 1: Truyền giá trị theo vị trí
Kịch bản 2: Truyền giá trị theo tên
Ví dụ 4.36: Gọi thực thi thủ tục (có tham số đầu vào, giá trị trả về)
Thủ tục được sửa chữa bởi câu lệnh sau đây:
Ví dụ 4.37: Sửa chữa thủ tục
Ví dụ 4.38: Sử dụng thủ tục sau khi sửa chữa
Thủ tục bị xóa bởi câu lệnh sau đây:
Ví dụ 4.39: Xóa thủ tục
Ví dụ 4.40: Kiểm tra sự tồn tại trước khi xóa thủ tục
Hàm (Function) là một đối tượng trong CSDL, gồm một nhóm các câu lệnh SQL được đặt tên là lưu trữ cùng nhau trong CSDL Dựa trên các câu lệnh trong thủ tục và các tham số truyền vào, nó có thể thực hiện các tính toán phức tạp và trả về kết quả là một giá trị nào đó Hàm có hai loại là hàm hệ thống (system function) và hàm người dùng định nghĩa (user-defined function) Hàm luôn có giá trị trả về, căn cứ vào kiểu giá trị trả về, hàm người dùng định nghĩa chia làm hai loại:
- Hàm giá trị vô hướng (scalar-valued): trả về giá trị vô hướng của các kiểu dữ liệu SQL
- Hàm giá trị bảng (table-valued): trả về bảng, là kết quả của một hoặc nhiều lệnh SQL
Bốn thành phần của một hàm người dùng định nghĩa là tên gọi, các tham số, các câu lệnh thực thi và giá trị trả về
- Tên gọi: định danh, duy nhất trong mỗi CSDL
- Tham số: đại lượng dùng để lưu giữ giá trị truyền vào hàm từ môi trường
- Các câu lệnh thực thi: mọi câu lệnh SQL, bao gồm câu lệnh khai báo biến
- Giá trị trả về: xác định bởi lệnh RETURN trong phần thân của hàm
Hàm giá trị vô hướng (scalar-valued function) được định nghĩa bởi câu lệnh sau:
Ví dụ 4.41: Tạo hàm vô hướng
Ví dụ 4.42: Gọi hàm vô hướng
Hàm giá trị bảng nội tuyến (inline table-valued function) được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.43: Tạo hàm bảng nội tuyến
Ví dụ 4.44: Gọi hàm bảng nội tuyến
Hàm giá trị bảng đa câu lệnh (multi-statement table-valued function) được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.45: Tạo hàm bảng đa câu lệnh
Ví dụ 4.46: Gọi hàm bảng đa câu lệnh
Hàm được sửa chữa bởi câu lệnh sau đây:
Ví dụ 4.47: Sửa chữa hàm
Ví dụ 4.48: Gọi lại hàm sau khi sửa chữa
Hàm bị xóa bởi câu lệnh sau đây:
Ví dụ 4.50: Kiểm tra sự tồn tại trước khi xóa hàm
Kích hoạt (Trigger) là thủ tục lưu trữ đặc biệt luôn ở trạng thái sẵn sàng, được kích hoạt khi có sự kiện diễn ra trong hệ quản trị CSDL Có ba dạng kích hoạt tương ứng với ba loại sự kiện là kích hoạt đăng nhập (Login trigger), kích hoạt thay đổi cấu trúc (DDL trigger) và kích hoạt thay đổi dữ liệu (DML trigger).
Trình kích hoạt Login chạy để phản hồi sự kiện đăng nhập được đưa ra khi phiên của người dùng đang được thiết lập
Trình kích hoạt DDL chạy để đáp ứng các sự kiện định nghĩa dữ liệu DDL Các sự kiện này chủ yếu tương ứng với các câu lệnh CREATE , ALTER và DROP Ngoài ra, một số thủ tục hệ thống thực hiện các hoạt động giống như DDL cũng có khả năng đánh thức trình kích hoạt DML
Trình kích hoạt DML chạy khi người dùng cố gắng sửa đổi dữ liệu thông qua sự kiện thao tác dữ liệu DML Các câu lệnh liên quan tới sự kiện DML bao gồm INSERT ,
UPDATE hoặc DELETE trên bảng lưu trữ hoặc khung nhìn Các trình kích hoạt này phát động khi bất kỳ sự kiện hợp lệ nào thực hiện, cho dù các hàng trong bảng có bị ảnh hưởng hay không
4.2.3.1 Tạo mới trình kích hoạt
Trình kích hoạt Login được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.51: Tạo trình kích hoạt đăng nhập từ chối nỗ lực đăng nhập vào SQL Server với tư cách là thành viên của tài khoản login_test nếu đã có ba phiên người dùng đang chạy dưới tài khoản này
Trình kích hoạt DDL được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.52: Tạo trình kích hoạt DDL từ chối nỗ lực xóa một bảng bất kỳ trong CSDL
Lúc này, lỗi sẽ xuất hiện khi thao tác xóa bảng bất kỳ trong CSDL COMPANY được thực hiện
Ví dụ 4.53: Tạo trình kích hoạt DDL hiển thị thông báo khi có câu lệnh CREATE
Lúc này, thông báo sẽ xuất hiện khi thao tác tạo CSDL được thực hiện
Trình kích hoạt DML được định nghĩa bởi câu lệnh sau đây:
Ví dụ 4.54: Tạo trình kích hoạt DML hiển thị thông báo khi có thao tác thêm mới hoặc sửa đổi dữ liệu trên bảng EMPLOYEE trong CSDL COMPANY
Ví dụ 4.55: Thiết lập kích hoạt DML để từ chối bất kỳ nỗ lực nào nhằm thêm một dự án mới khi vi phạm quy tắc "một người quản lý tối đa năm dự án".
- Đối với trình kích hoạt DML, hai biến tạm được sử dụng để lưu trữ thao tác vừa mới xảy ra, bao gồm: o Biến inserted chứa dữ liệu vừa xuất hiện, phát sinh bởi thao tác INSERT và UPDATE
130 o Biến deleted chứa dữ liệu vừa biến mất, phát sinh bởi thao tác DELETE và UPDATE
- Hai biến nói trên có cùng lược đồ (thành phần) như bảng cơ sở được khai báo trong câu lệnh tạo trình kích hoạt
Ví dụ 4.56: Tạo trình kích hoạt DML từ chối nỗ lực thay đổi lương của nhân viên trong phòng số 1
4.2.3.2 Sửa chữa trình kích hoạt
Trình kích hoạt được sửa chữa bởi câu lệnh sau đây:
CREATE [ OR ALTER ] TRIGGER trigger_name
Ví dụ 4.57: Sửa thông báo của trình kích hoạt DML
Trình kích hoạt được xóa bởi câu lệnh sau đây:
Ví dụ 4.58: Xóa trình kích hoạt
Ví dụ 4.59: Xóa trình kích hoạt có kiểm tra sự tồn tại
Bài tập có lời giải
1- Tạo bảng CUSTOMERS trong CSDL SALE với các thuộc tính sau đây:
2- Thay đổi cấu trúc bảng CUSTOMERS bằng cách thêm
- Thuộc tính Phone varchar(20) null
- Ràng buộc khóa duy nhất gồm hai thuộc tính (ContactName, Phone)
3- Xóa ràng buộc trong bảng
4- Tạo khung nhìn liệt kê số lượng hóa đơn đã bán của mỗi nhân viên
5- Tạo thủ tục lưu trữ thêm mới đơn hàng với các giá trị đầu vào CustomerID, EmployeeID, ShipperID; mã hóa đơn tăng 1, ngày giờ hiện tại
6- Tạo thủ tục lưu trữ xóa dữ liệu của một nhân viên với tham số đầu vào là mã số nhân viên, thiết lập giá trị NULL cho các hóa đơn của nhân viên này
7- Tạo hàm tính doanh thu bán hàng với tham số là mã số nhân viên
8- Tạo hàm liệt kê danh sách khách hàng theo quốc gia và doanh số mua hàng của mỗi người
9- Tạo trình kích hoạt đảm bảo sản phẩm chỉ được thêm mới khi có mã số nhà cung cấp hợp lệ (có sẵn trong dữ liệu)
10- Tạo trình kích hoạt đảm bảo trong khoảng thời gian từ ngày 22/04/2022 đến ngày 03/05/2022 mỗi khách hàng được mua tối đa 5 hóa đơn một ngày
Bài tập rèn luyện
1- Tạo khung nhìn hiển thị thông tin về hóa đơn, bao gồm Mã số hóa đơn, ngày lập hóa đơn, họ tên người mua, họ tên nhân viên bán hàng và tên đơn vị vận chuyển 2- Tạo khung nhìn hiển thị thông tin về nhà cung cấp, bao gồm mã số, tên, số điện thoại, tổng doanh số bán hàng và số lượt người mua sản phẩm
3- Tạo thủ tục lưu trữ để thêm mới một nhân viên với thông tin đầu vào bao gồm họ, tên, ngày sinh, tên file ảnh, ghi chú Thủ tục tự tạo mã số liên tiếp cho nhân viên mới
4- Tạo thủ tục lưu trữ để thêm mới một công ty vận chuyển với các thông tin về tên và số điện thoại Thủ tục tự tạo và trả về mã số liên tiếp cho công ty vận chuyển mới 5- Tạo thủ tục lưu trữ để sửa thông tin về nhà cung cấp
6- Tạo hàm tính doanh số bán hàng trong ngày, với ngày là tham số đầu vào của hàm 7- Tạo hàm trả về danh sách khách hàng của nhà cung cấp với mã số nhà cung cấp là tham số đầu vào của hàm Thông tin yêu cầu bao gồm: họ tên khách hàng, số lượt mua sản phẩm và doanh số mua hàng (chỉ tính các sản phẩm của nhà cung cấp) 8- Tạo trình kích hoạt đảm bảo họ, tên của khách hàng không được để trống
9- Tạo trình kích hoạt đảm bảo nhân viên bán hàng phải đủ 18 tuổi trở lên (tính ở thời điểm hiện tại)
10- Tạo trình kích hoạt đảm bảo khách hàng và công ty vận chuyển phải ở cùng quốc gia.
Câu hỏi ôn tập
1- Trình bày sự khác nhau giữa bảng dữ liệu và khung nhìn
2- Trình bày ưu điểm, nhược điểm của chỉ mục
3- So sánh thủ tục lưu trữ và hàm
4- So sánh thủ tục lưu trữ và trình kích hoạt
5- Trình bày các thành phần và cơ chế hoạt động của trình kích hoạt
6- Trình bày ưu điểm, nhược điểm của trình kích hoạt
Quản trị người dùng cơ sở dữ liệu
Quyền đăng nhập hệ thống
5.1.1 Mô hình bảo mật cơ sở dữ liệu
Bảo mật CSDL là hoạt động bảo đảm sự an toàn, an ninh đối với CSDL, nói cách là bảo đảm chỉ những cá nhân, tổ chức có nhiệm vụ, quyền sử dụng được phép truy cập, ngăn cản những người không được phép xâm nhập, đánh cắp hoặc thay đổi dữ liệu
Bảo mật CSDL trong hệ quản trị CSDL cho phép nhà quản trị thiết lập quyền hoặc nhóm quyền (vai trò) cho người dùng hoặc nhóm người dùng truy cập và khai thác CSDL Những thực thể này sau khi được cấp quyền, có thể đăng nhập vào hệ thống và thực hiện các quyền và vai trò được cấp
Hình 5.1 Mô hình bảo mật CSDL Thông qua tính năng bảo mật, hệ quản trị CSDL cho phép xác định người dùng nào đang truy cập và sử dụng dữ liệu Mỗi CSDL có một tập hợp người sử dụng riêng, mỗi người có quyền riêng để truy cập và sử dụng dữ liệu Các quyền này cho phép người sử dụng được truy vấn, thay đổi hoặc xóa dữ liệu Để hiện thực hóa mô hình bảo mật CSDL, hệ quản trị CSDL SQL Server cung cấp hai loại tài khoản để quản lý đăng nhập hệ thống và quản lý sử dụng CSDL
- Tài khoản đăng nhập (Login) là tài khoản sử dụng để đăng nhập máy chủ CSDL, hay còn gọi là người dùng hệ thống (System user) Các login chỉ có quyền truy cập vào máy chủ CSDL chứ chưa bao gồm quyền truy cập và khai thác CSDL cụ thể trong máy chủ Tuy nhiên, một vài login thuộc nhóm có vai trò quản trị hệ thống hay quản trị máy chủ, bao gồm các quyền cao nhất đối với mọi CSDL hiện có
- Tài khoản người dùng (User), còn gọi là người dùng CSDL (Database user) gắn liền với một CSDL cụ thể Mỗi CSDL có một tập user, và mỗi user thuộc một login nào đó; ngược lại, mỗi login có thể có nhiều user với các quyền khác nhau trong các CSDL khác nhau
5.1.2 Các chế độ xác thực
Với đặc thù được phát triển để hoạt động tối ưu trên khung bảo mật NT của hệ điều hành Windows, hệ quản trị CSDL SQL Server áp dụng ba cơ chế bảo mật, bao gồm xác thực cấp hệ điều hành (Windows authentication), xác thực cấp SQL Server (SQL Server authentication) và cơ chế hỗn hợp Việc thiết lập cơ chế xác thực đối với máy chủ CSDL phải do tài khoản quản trị cấp hệ điều hành thực hiện ngay từ đầu theo quy trình sau đây: Bước 1: Khởi động SSMS, sử dụng cơ chế xác thực cấp hệ điều hành như là cấu hình mặc định khi cài đặt SQL Server
Hình 5.2 Chế độ xác thực của SQL Server
Bước 2: Chọn máy chủ CSDL trong khung Explorer, nhấn chuột phải và chọn chức năng Properties để mở giao diện Server Properties
Hình 5.3 Chế độ xác thực của SQL Server Bước 3: Chọn thẻ Security, và nhấn vào nút chọn SQL Server and Windows Authentication mode để cho phép áp dụng cơ chế xác thực hỗn hợp Nhấn nút OK để hoàn tất Xuất hiện thông báo sự thay đổi này chỉ có hiệu lực sau khi khởi động lại máy chủ CSDL
Hình 5.4 Chế độ xác thực của SQL Server Bước 4: Nhấn chuột phải vào máy chủ vừa mới thay đổi cơ chế xác thực, chọn thực hiện chức năng khởi động lại (Restart) và thực hiện theo hướng dẫn để khởi động lại máy chủ CSDL
Hình 5.5 Chế độ xác thực của SQL Server
Cơ chế xác thực được xác định ngay khi tài khoản đăng nhập được khởi tạo Tương tự, khi đăng nhập vào máy chủ CSDL, người dùng cũng phải lựa chọn đúng cơ chế xác thực của mình
- Nếu chọn Windows Authentication, hệ thống sử dụng chính tài khoản đăng nhập hệ điều hành để đăng nhập vào máy chủ CSDL Mặc định, chỉ tài khoản thuộc nhóm Windows Administrators mới có quyền quản trị đối với SQL Server
- Nếu chọn SQL Server Authentication, hệ thống sử dụng tài khoản đăng nhập (Login) do SQL Server quản lý để đăng nhập Người dùng sẽ nhập Tên người dùng/Mật khẩu (User name/Password) ứng với tài khoản đăng nhập Việc đăng nhập chỉ thành công khi Login này có quyền truy cập vào hệ thống
Hình 5.6 Chế độ xác thực của SQL Server
Quyền truy xuất dữ liệu
Quyền trong máy chủ CSDL (Database Engine – DBE) được quản lý ở cấp máy chủ thông qua tài khoản đăng nhập (Login) và vai trò cấp máy chủ (server roles), và ở cấp CSDL thông qua người dùng CSDL (Database User) và vai trò CSDL (database roles)
5.2.1 Vai trò cấp máy chủ
SQL Server cung cấp các vai trò cấp máy chủ để quản lý các quyền trên máy chủ Những vai trò này là tập hợp của nhiều nguyên tắc bảo mật Các vai trò cấp máy chủ có hiệu lực trên toàn máy chủ trong phạm vi quyền của chúng
SQL Server duy trì vai trò máy chủ cố định (fixed server role) như là một tập hợp các vai trò được cấu hình trước để cung cấp nhóm quyền cấp máy chủ Ngoài ra, nhà quản trị CSDL có thể tạo các vai trò máy chủ của riêng mình (user-defined server role) và gán quyền cấp máy chủ cho chúng Tuy nhiên, vai trò cấp máy chủ không áp dụng ở cấp CSDL Bảng 5.1 Các vai trò cấp máy chủ cố định và khả năng của chúng
Các thành viên trong vai trò này có thể sysadmin thực hiện bất kỳ hoạt động nào trong máy chủ serveradmin thay đổi các tùy chọn cấu hình trên toàn máy chủ và tắt máy chủ securityadmin quản lý thông tin đăng nhập và thuộc tính của họ (cấp, từ chối, khôi phục quyền cấp máy chủ, quyền cấp CSDL) processadmin kết thúc các quy trình đang chạy trong một phiên bản của SQL
setupadmin: Thêm và xóa máy chủ được liên kết bằng các lệnh T-SQL bulkadmin: Chạy lệnh BULK INSERT diskadmin: Quản lý các tệp đĩa dbcreator: Tạo, sửa đổi, xóa và khôi phục mọi cơ sở dữ liệu.
Ngoài các vai trò nói trên, SQL Server còn duy trì vai trò công khai (public) Mọi tài khoản đăng nhập (Login) bắt buộc có vai trò này Mặc định, khi một đối tượng chưa được cấp hay thu hồi các quyền, người dùng sẽ kế thừa các quyền được cấp cho đối tượng đó Nói cách khác, gán vai trò public trên đối tượng khả dụng cho tất cả người dùng
5.2.2 Vai trò cấp cơ sở dữ liệu Để dễ dàng quản lý các quyền trong CSDL, SQL Server cung cấp một số vai trò là tập hợp của nhiều nguyên tắc bảo mật Các vai trò cấp CSDL có phạm vi quyền hạn trên toàn CSDL
Có hai loại vai trò cấp CSDL: vai trò CSDL cố định (fixed database roles) được xác định trước trong CSDL và vai trò CSDL do người dùng xác định (user-defined database roles)
Vai trò CSDL cố định được xác định ở cấp CSDL và tồn tại trong mỗi CSDL Các thành viên của vai trò CSDL db_owner có thể quản lý tư cách thành viên của vai trò CSDL cố định Ngoài ra còn có một số vai trò CSDL có mục đích đặc biệt trong CSDL msdb Quyền của các vai trò CSDL do người dùng xác định có thể được tùy chỉnh bằng cách sử dụng các câu lệnh GRANT, DENY và REVOKE
Bảng 5.2 Các vai trò cấp CSDL cố định và khả năng của chúng
Các thành viên trong vai trò này có thể db_owner thực hiện tất cả các hoạt động cấu hình và bảo trì trên CSDL và cũng có thể xóa CSDL db_securityadmin sửa đổi tư cách thành viên của vai trò chỉ cho các vai trò tùy chỉnh và quản lý quyền db_accessadmin thêm hoặc xóa quyền truy cập vào CSDL cho tài khoản đăng nhập Windows và tài khoản đăng nhập SQL Server db_backupoperator sao lưu CSDL db_ddladmin chỉ thực hiện các câu lệnh DDL db_datawriter thêm, sửa, xóa dữ liệu trong các bảng người dùng db_datareader đọc tất cả dữ liệu từ tất cả các bảng và khung nhìn db_denydatawriter không thêm, sửa, xóa dữ liệu trong các bảng người dùng db_denydatareader không đọc tất cả dữ liệu từ tất cả các bảng và khung nhìn
5.2.3 Quyền đối với đối tượng dữ liệu
Ngoài các vai trò ở cấp máy chủ và vai trò ở cấp CSDL, SQL Server còn duy trì các quyền truy cập hay thao tác trên các đối tượng được lưu trữ trong CSDL Nói cách khác,
143 ngay cả khi có quyền đăng nhập vào hệ thống, có quyền truy cập CSDL, người dùng vẫn có thể bị từ chối các yêu cầu về dữ liệu nếu không được cấp quyền phù hợp với các yêu cầu đó Quyền có thể được cấp cho người dùng hoặc vai trò để cho phép người dùng hoặc vai trò đó thực hiện các hoạt động như lựa chọn, chèn, sửa đổi hoặc xóa các hàng dữ liệu
Mỗi đối tượng CSDL có một chủ sở hữu Theo mặc định, chủ sở hữu là người tạo đối tượng, nhưng quyền sở hữu có thể được chuyển giao sau này sau khi đối tượng đã được tạo Ngoài chủ sở hữu, các thành viên của vai trò sysadmin có toàn quyền đối với tất cả các đối tượng trong tất cả CSDL người dùng và hệ thống Để thực hiện bất kỳ hoạt động nào trong CSDL, người dùng phải có các quyền thích hợp Các quyền này được chia thành ba loại, chúng tôi gọi là các loại quyền:
- Quyền làm việc với dữ liệu và thực thi các thủ tục (quyền đối tượng) bao gồm các quyền tác động lên các đối tượng CSDL
- Quyền tạo CSDL hoặc một thành phần trong CSDL (quyền câu lệnh) bao gồm các quyền để tạo CSDL hoặc một đối tượng trong CSDL Các quyền này được áp dụng cho chính câu lệnh, chứ không phải cho một đối tượng cụ thể được xác định trong CSDL
- Quyền sử dụng các quyền được cấp cho các vai trò được xác định trước (quyền chuyển tiếp)
Bảng 5.3 Các quyền đối với đối tượng dữ liệu và khả năng của chúng
Quyền đối tượng (object permissions)
SELECT Cho phép chọn hoặc đọc dữ liệu từ bảng hoặc khung nhìn; có thể được áp dụng cho các cột riêng lẻ
INSERT Cho phép chèn dữ liệu mới vào bảng hoặc khung nhìn DELETE Cho phép xóa dữ liệu khỏi bảng hoặc khung nhìn
UPDATE Cho phép cập nhật dữ liệu trong bảng hoặc khung nhìn; có thể áp dụng cho các cột riêng lẻ
EXECUTE Cho phép thực thi một thủ tục được lưu trữ
DRI Cho phép thêm các ràng buộc khóa ngoại trên bảng
Quyền câu lệnh (statement permissions)
BACKUP DATABASE Cho phép sao lưu toàn bộ CSDL
BACKUP LOG Cho phép sao lưu nhật ký giao dịch
CREATE DATABASE Cho phép tạo CSDL và các tập tin dữ liệu liên quan
CREATE FUNCTION Cho phép tạo hàm người dùng định nghĩa
CREATE PROCEDURE Cho phép tạo thủ tục lưu trữ
CREATE TABLE Cho phép tạo bảng người dùng định nghĩa
CREATE VIEW Cho phép tạo khung nhìn
Tạo và quản lý việc đăng nhập
5.3.1.1 Quản lý Login với SSMS
Trường hợp 1: Tạo Login với cơ chế xác thực hệ điều hành
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin Bước 2: Nhấn dấu + để mở máy chủ muốn tạo tài khoản Login, nhấn tiếp dấu + tại nút Security, nhấn chuột phải vào nút Login và nhấn thực hiện New > Login
Hình 5.7 Quản lý login với SSMS Bước 3: Trong cửa sổ New Login, cung cấp các thông tin cần thiết:
- Nhấn nút Search tại mục Login name để chọn tài khoản của hệ điều hành Trong giao diện Select User or Group nhấn nút Advanced Trong giao diện mới xuất hiện, nhấn nút Find Now để liệt kê tất cả User/Group hiện có
Hình 5.8 Quản lý login với SSMS
- Nhấn chọn một tài khoản có sẵn (chẳng hạn dbLogin) và nhấn OK để xác nhận Giao diện Select User and Group ghi nhận thông tin này, nhấn nút OK để cập nhật tài khoản này lên giao diện New Login
Hình 5.9 Quản lý login với SSMS Bước 4: Nhấn nút OK để hoàn tất việc thêm mới Kết quả, tài khoản dbLogin được thêm vào SQL Server theo cơ chế xác thực cấp hệ điều hành
Hình 5.10 Quản lý login với SSMS
Trường hợp 2: Tạo Login với cơ chế xác thực SQL Server
Để tạo tài khoản đăng nhập trong SQL Server, hãy làm theo các bước sau:* **Bước 1:** Mở SQL Server Management Studio (SSMS) bằng tài khoản thuộc nhóm sysadmin.* **Bước 2:** Mở máy chủ mục tiêu, mở nút Security, rồi nhấp chuột phải vào thư mục Login Sau đó, chọn New > Login để tạo tài khoản đăng nhập mới.
Hình 5.11 Quản lý login với SSMS Bước 3: Trong cửa sổ New Login, cung cấp các thông tin cần thiết:
- Nhập tên tài khoản đăng nhập (chẳng hạn dbSQLServer), định danh duy nhất
- Xác nhận việc tạo tài khoản cấp SQL Server (chọn SQL Server Authentication)
- Cung cấp mật khẩu gắn với tài khoản đăng nhập (nhập hai lần)
- Thiết lập các tùy chọn liên quan đến việc tạo mật khẩu o Áp dụng các chính sách về mật khẩu (Enforce password policy) o Áp dụng thời gian hết hiệu lực của mật khẩu (Enforce password expiration) o Người dùng phải đổi mật khẩu ở lần đăng nhập tiếp theo (User must change password at next login) o Chọn CSDL mặc định (default database) o Chọn ngôn ngữ mặc định (default language)
Hình 5.12 Quản lý login với SSMS Bước 4: Nhấn nút OK để hoàn tất việc thêm mới Kết quả, tài khoản dbSQLServer được thêm vào SQL Server theo cơ chế xác thực cấp SQL Server
Hình 5.13 Quản lý login với SSMS
Trường hợp 3: Sửa chữa tài khoản Login
- Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
- Bước 2: Nhấn dấu + để mở máy chủ muốn sửa tài khoản Login, nhấn tiếp dấu + tại nút Security, nhấn dấu + vào nút Logins, nhấn chuột phải vào tài khoản muốn sửa chữa và chọn Properties để mở giao diện Login Properties phục vụ cho việc sửa chữa
- Bước 3: Chỉnh sửa các thông tin cần thiết và nhấn nút OK để hoàn tất
Trường hợp 4: Xóa tài khoản Login
- Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
- Bước 2: Nhấn dấu + để mở máy chủ muốn xóa tài khoản Login, nhấn tiếp dấu + tại nút Security, nhấn dấu + vào nút Logins, nhấn chuột phải vào tài khoản muốn sửa chữa và chọn Delete để mở giao diện Delete Object phục vụ cho việc xóa
- Bước 3: Nhấn nút OK để hoàn tất
5.3.1.2 Quản lý Login với T-SQL
Trường hợp 1: Tạo Login với cơ chế xác thực hệ điều hành
Ví dụ 5.1 Tạo tài khoản đăng nhập cấp hệ điều hành với tên gọi là NamTH\dbLogin, CSDL mặc định MyDB31
Trường hợp 2: Tạo Login với cơ chế xác thực SQL Server
Ví dụ 5.2 Tạo tài khoản đăng nhập cấp SQL Server với tên gọi là dbSQLServer, mật khẩu
Trường hợp 3: Sửa chữa tài khoản Login
Ví dụ 5.3 Sửa tài khoản đăng nhập cấp SQL Server với tên gọi là dbSQLServer, mật khẩu 123!@#, CSDL mặc định MyDB32
Trường hợp 4: Xóa tài khoản Login
Ví dụ 5.4 Xóa tài khoản đăng nhập login_test
5.3.2.1 Quản lý User với SSMS
Trường hợp 1: Tạo tài khoản người dùng User
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn tạo tài khoản User, nhấn tiếp dấu + tại nút ứng với CSDL muốn tạo User (chẳng hạn MyDB31), nhấn tiếp dấu + tại nút Security, nhấn chuột phải vào nút Security và nhấn thực hiện New > User
Hình 5.14 Quản lý user với SSMS Bước 3: Trong cửa sổ Database User - New, cung cấp các thông tin cần thiết:
- Chọn loại người dùng là SQL user with login
- Nhập tên người dùng (User name)
- Nhập hoặc chọn tài khoản Login liên kết với người dùng, nhấn nút để liệt kê danh sách các tài khoản Login hiện có trong hệ thống
Hình 5.15 Quản lý user với SSMS
Hình 5.16 Quản lý user với SSMS Bước 4: Nhấn nút OK để hoàn tất Kết quả một tài khoản người dùng mới được tạo
Hình 5.17 Quản lý user với SSMS
Trường hợp 2: Sửa chữa tài khoản người dùng User
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin Bước 2: Nhấn dấu + để mở máy chủ muốn sửa tài khoản User, nhấn dấu + tại nút ứng với CSDL muốn tạo User (chẳng hạn MyDB31), nhấn dấu + tại nút Security, nhấn tiếp dấu + tại nút Users để liệt kê danh sách và nhấn chuột phải vào tên người dùng muốn sửa chữa và chọn chức năng Properties
Bước 3: Chỉnh sửa các thông tin cần thiết và nhấn nút OK để hoàn tất
Trường hợp 3: Xóa tài khoản người dùng User
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin Bước 2: Nhấn dấu + để mở máy chủ muốn xóa tài khoản User, nhấn dấu + tại nút ứng với CSDL muốn tạo User (chẳng hạn MyDB31), nhấn dấu + tại nút Security, nhấn tiếp dấu + tại nút Users để liệt kê danh sách và nhấn chuột phải vào tên người dùng muốn xóa và chọn chức năng Delete để mở giao diện Delete Object phục vụ cho việc xóa
Bước 3: Nhấn nút OK để hoàn tất
5.3.2.2 Quản lý User với T-SQL
Trường hợp 1: Tạo tài khoản người dùng User
Ví dụ 5.5 Tạo người dùng dbLogin01 liên kết với tài khoản đăng nhập NamTH\dbLogin
Trường hợp 2: Sửa chữa tài khoản người dùng User
Ví dụ 5.6 Sửa chữa người dùng dbLogin01 thành dbLogin02
Trường hợp 3: Xóa tài khoản người dùng User
DROP USER [ IF EXISTS ] user_name
Ví dụ 5.7 Xóa người dùng dbLogin02
Vai trò và quyền
5.4.1.1 Quản lý vai trò với SSMS
Trường hợp 1: Tạo vai trò cấp máy chủ
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Tại bước 2, bấm dấu "+" để mở máy chủ muốn tạo vai trò máy chủ Bấm tiếp dấu "+" tại nút Security Sau đó, nhấp chuột phải vào nút Server Role và chọn New Server Role để tạo vai trò máy chủ mới.
Hình 5.18 Quản lý vai trò với SSMS Bước 3: Trong cửa sổ New Server Role, cung cấp các thông tin cần thiết:
- Thông tin chung (thẻ General) o Tên vai trò cấp máy chủ (Server role name), định danh, duy nhất trong hệ thống o Chủ sở hữu (Owner), nhấn nút và chọn từ trong danh sách các tài khoản đăng nhập hiện có o Trong hộp bảo mật (Securables), chọn một hoặc nhiều bảo mật cấp máy chủ Khi một bảo mật được chọn, vai trò máy chủ này có thể được cấp hoặc từ chối các quyền trên có thể bảo mật đó o Trong hộp quyền (Permissions), chọn hộp kiểm để cấp quyền hoặc từ chối
156 quyền đối với vai trò máy chủ này đối với các bảo mật đã chọn
Hình 5.19 Quản lý vai trò với SSMS
- Thành viên của vai trò (thẻ Members), nhấn nút Add để thêm các tài khoản đăng nhập vào nhóm có vai trò máy chủ mới
Hình 5.20 Quản lý vai trò với SSMS
Trong thẻ Memberships, đánh dấu vào ô để chuyển vai trò máy chủ hiện tại được chỉ định theo người dùng sang một vai trò máy chủ cố định đã chọn.
Hình 5.21 Quản lý vai trò với SSMS Bước 4: Nhấn nút OK để hoàn tất việc thêm mới Kết quả, vai trò cấp máy chủ mới được thêm vào SQL Server
Hình 5.22 Quản lý vai trò với SSMS
Trường hợp 2: Sửa chữa vai trò cấp máy chủ do người dùng định nghĩa
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
To modify a server role's permissions, click the + sign to open the server you want to modify, click the + sign in the Security tab, click the + sign in the Server Roles tab, right-click the name of the Server Role you want to modify, and select Properties.
Bước 3: Chỉnh sửa các thông tin cần thiết trong giao diện Server Role Properties và nhấn nút OK để hoàn tất
Trường hợp 3: Xóa vai trò cấp máy chủ do người dùng định nghĩa
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn xóa vai trò cấp máy chủ, nhấn dấu + tại nút Security, nhấn dấu + tại nút Server Roles, và nhấn chuột phải vào tên Server
Role muốn sửa chữa và chọn chức năng Delete
Bước 3: Nhấn nút OK trong giao diện Delete Objects để hoàn tất
Trường hợp 4: Gán/Thu hồi vai trò cấp máy chủ cho tài khoản Login
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn xóa vai trò cấp máy chủ, nhấn dấu + tại nút Security, nhấn dấu + tại nút Logins, nhấn chuột phải vào tên Login muốn gán/thu hồi vai trò cấp máy chủ và chọn Properties
Để quản lý vai trò bằng SSMS, hãy mở giao diện Login Properties, chuyển sang thẻ Server Roles Chọn để gán hoặc bỏ chọn để thu hồi vai trò cấp máy chủ phù hợp Cuối cùng, nhấn OK để xác nhận thay đổi.
Hình 5.24 Quản lý vai trò với SSMS
Trường hợp 5: Tạo vai trò cấp CSDL
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn tạo vai trò cấp máy chủ, nhấn dấu + tại nút Databases, nhấn dấu + tại tên CSDL muốn tạo vai trò, nhấn chuột phải vào nút
Security và nhấn thực hiện New > New Database Role
Hình 5.25 Quản lý vai trò với SSMS Bước 3: Trong cửa sổ Database Role - New, cung cấp các thông tin cần thiết:
- Thông tin chung (thẻ General) o Tên vai trò (Role name), định danh, duy nhất trong CSDL o Chủ sở hữu (Owner), nhấn nút và chọn từ trong danh sách các tài khoản người dùng hiện có trong CSDL o Nhấn nút kiểm để chọn trong danh sách các vai trò cấp CSDL cố định và gán cho vai trò mới tạo (Schemas owned by this role) o Nhấn nút Add để chọn tài khoản người dùng có vai trò mới tạo (Role members)
Hình 5.26 Quản lý vai trò với SSMS Bước 4: Nhấn nút OK để hoàn tất việc thêm mới Kết quả, vai trò cấp CSDL mới được thêm vào CSDL
Trường hợp 6: Sửa chữa vai trò cấp CSDL người dùng định nghĩa
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn tạo vai trò cấp máy chủ, nhấn dấu + tại nút Databases, nhấn dấu + tại tên CSDL muốn tạo vai trò, nhấn dấu + tại nút Security, nhấn dấu + tại nút Roles, nhấn dấu + tại nút Database Roles, nhấn chuột phải vào tên vai trò muốn sửa chữa và nhấn Properties
Bước 3: Chỉnh sửa các thông tin cần thiết trong giao diện Database Role Properties và nhấn nút OK để hoàn tất
Trường hợp 7: Xóa vai trò cấp CSDL người dùng định nghĩa
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Bước 2: Nhấn dấu + để mở máy chủ muốn tạo vai trò cấp máy chủ, nhấn dấu + tại nút Databases, nhấn dấu + tại tên CSDL muốn tạo vai trò, nhấn dấu + tại nút Security, nhấn dấu + tại nút Roles, nhấn dấu + tại nút Database Roles, nhấn chuột phải vào tên vai trò muốn sửa chữa và nhấn Delete
Bước 3: Nhấn nút OK trong giao diện Delete Objects để hoàn tất
Trường hợp 8: Gán/Thu hồi vai trò cấp CSDL cho tài khoản User
Bước 1: Gọi thực thi một phiên làm việc của SSMS với tài khoản thuộc nhóm sysadmin
Để tạo vai trò cấp máy chủ, mở máy chủ cần gán vai trò (dấu +), mở CSDL cần gán vai trò (dấu +), mở Security > Users (dấu +), click chuột phải vào tên người dùng cần gán/thu hồi vai trò.
Hình 5.27 Quản lý vai trò với SSMS Bước 3: Trong giao diện Database User, chọn thẻ Membership và chọn để gán, bỏ chọn để thu hồi các vai trò phù hợp Sau đó, nhấn OK để hoàn tất
Hình 5.28 Quản lý vai trò với SSMS 5.4.1.2 Quản lý vai trò với T-SQL
SQL Server cung cấp các thủ tục hệ thống và câu lệnh T-SQL để thực hiện chức năng gán, thu hồi và xóa các vai trò ở cả hai cấp máy chủ và cấp CSDL
Bảng 5.4 Các thủ tục và câu lệnh đối với vai trò cấp máy chủ
Thủ tục/Câu lệnh Mô tả
CREATE SERVER ROLE Tạo mới vai trò cấp máy chủ do người dùng định nghĩa
ALTER SERVER ROLE Thay đổi thành viên, tên của vai trò cấp máy chủ do người dùng định nghĩa
Bài tập có lời giải
1- Trình bày chi tiết quá trình tạo tài khoản đăng nhập, kết hợp tài khoản người dùng theo cơ chế xác thực hệ điều hành với vai trò là sysadmin
2- Trình bày chi tiết quá trình tạo tài khoản đăng nhập, kết hợp tài khoản người dùng theo cơ chế xác thực SQL Server với vai trò là securityadmin
3- Tạo tài khoản đăng nhập Scott, mật khẩu ‘123456’ với tài khoản người dùng cùng tên với vai trò db_datareader trong CSDL SALE
4- Thực hiện việc gán các quyền cần thiết để người dùng Scott (ở bài 3) có thể thêm, sửa, xóa dữ liệu trong bảng Customers, và có thể ủy quyền cho người dùng khác
5- Thực hiện việc gán các quyền cần thiết để người dùng Scott (ở bài 3) có thể thực hiện câu truy vấn hiển thị thông tin về nhà cung cấp, bao gồm mã số, tên, số điện thoại, tổng doanh số bán hàng và số lượt người mua sản phẩm
Bài tập rèn luyện
1- Tạo tài khoản đăng nhập Danish, mật khẩu ‘123456’ với tài khoản người dùng cùng tên với vai trò db_owner trong CSDL SALES
2- Cấp lại mật khẩu cho tài khoản đăng nhập Danish và yêu cầu người dùng phải đổi mật khẩu trong lần đăng nhập đầu tiên
3- Thực hiện việc gán các quyền cần thiết để người dùng Danish có thể thực hiện câu truy vấn hiển thị thông tin về hóa đơn, bao gồm Mã số hóa đơn, ngày lập hóa đơn, họ tên người mua, họ tên nhân viên bán hàng và tên đơn vị vận chuyển
4- Thực hiện việc gán các quyền cần thiết để người dùng Danish có thể thực thi thủ tục thêm mới một công ty vận chuyển với các thông tin về tên và số điện thoại Thủ tục tự tạo và trả về mã số liên tiếp cho công ty vận chuyển mới
5- Thực hiện việc gán các quyền cần thiết để người dùng Danish có thể thực thi hàm trả về danh sách khách hàng của nhà cung cấp với mã số nhà cung cấp là tham số đầu vào của hàm Thông tin yêu cầu bao gồm: họ tên khách hàng, số lượt mua sản phẩm và doanh số mua hàng (chỉ tính các sản phẩm của nhà cung cấp).
Câu hỏi ôn tập
1- Trình bày mô hình bảo mật CSDL và các chế độ xác định
2- Phân biệt vai trò cấp máy chủ và cấp CSDL
3- Trình bày quyền đối với đối tượng dữ liệu
4- Phân biệt tài khoản đăng nhập và tài khoản người dùng trong SQL Server
5- Phân biệt vai trò và quyền trong SQL Server