Đây là một bài viết giới thiệu về tự động hóa trong máy chủ SQL chủ yếu tập trung vào các khái niệm cơ bản. Chúng tôi sẽ thảo luận về một số phương pháp thực hành tiêu chuẩn và một số ví dụ để giúp người mới bắt đầu bắt đầu với tự động hóa máy chủ SQL.
Bài viết này cũng nêu bật tầm quan trọng của việc tự động hóa các tác vụ máy chủ SQL để tiết kiệm thời gian và công sức cần thiết để thực hiện các tác vụ này theo cách thủ công.
Ngoài ra, chúng ta sẽ xem xét các trường hợp không nên tự động hóa các tác vụ máy chủ SQL mặc dù thực tế là tự động hóa tiết kiệm thời gian và công sức.
Giới thiệu về Tự động hóa SQL Server
Đầu tiên chúng ta hãy làm quen với thuật ngữ 'tự động hóa' và tự động hóa tác vụ máy chủ SQL chính xác là gì.
Tự động hóa là gì?
Tự động hóa là một thuật ngữ rộng bao gồm nhiều thứ, nhưng nó thường có nghĩa là các công cụ và thiết bị lập trình cho phép thực hiện một nhóm tác vụ một cách tự động mà không cần hoặc không có sự can thiệp của con người.
SQL Server Automation là gì?
Tự động hóa SQL Server cũng có thể có một số ý nghĩa, nhưng nó thường được quan tâm nhất là tự động hóa các tác vụ quản trị SQL Server để tiết kiệm thời gian và công sức.
Quản trị viên cơ sở dữ liệu hoặc nhóm cơ sở hạ tầng chịu trách nhiệm quản lý SQL Server và (các) cơ sở dữ liệu được lưu trữ thường dành nhiều thời gian để thực hiện các tác vụ bảo trì cơ sở dữ liệu có thể được tự động hóa thông qua các phương pháp khác nhau và được lên lịch chạy theo các khoảng thời gian xác định.
Trong bài viết này, chúng tôi chủ yếu tập trung vào tự động hóa các tác vụ quản trị SQL Server.
Khi nào bạn nên tự động hóa các tác vụ SQL
Tự động hóa một tác vụ quản trị SQL Server đòi hỏi phải lập kế hoạch cẩn thận trước khi nó được triển khai. Mọi tác vụ quản trị SQL như sao lưu, bảo trì cơ sở dữ liệu hoặc giám sát cơ sở dữ liệu nên được tự động một cách lý tưởng nếu nó phục vụ mục đích mà không gây ra bất kỳ vấn đề nào khác.
Khi nào bạn không nên tự động hóa các tác vụ SQL
Mặc dù tự động hóa rất hữu ích trong hầu hết các trường hợp, nhưng vẫn có một số tác vụ tốt hơn nên được thực hiện theo cách thủ công.
Ví dụ:nếu một tác vụ quản trị cơ sở dữ liệu mất 5 phút để hoàn thành và việc tự động hóa tác vụ đó yêu cầu 15 giờ viết và thử nghiệm các tập lệnh tự động hóa, thì sẽ hiệu quả hơn nếu thực hiện tác vụ này theo cách thủ công.bacsql
Có một số tác vụ không được tự động hóa. Ví dụ:thường là một phần công việc của DBA là kiểm tra các thay đổi của cơ sở dữ liệu trước khi triển khai nó lên máy chủ trực tiếp. Điều này được thực hiện để đảm bảo rằng các thay đổi tương thích với cơ sở dữ liệu đích. Tự động hóa nhiệm vụ này có nhiều rủi ro hơn là lợi ích, vì vậy tốt hơn hết là cứ để nguyên như vậy.
Nói chung, nếu bất kỳ tác vụ cơ sở dữ liệu nào yêu cầu can thiệp thủ công (tức là nó phải được một người / nhóm nhìn thấy hoặc quản lý để chuyển sang bước / giai đoạn tiếp theo) theo các quy tắc và quy định của công ty bạn, thì việc tự động hóa hoàn toàn tác vụ đó là không khả thi trừ khi được sự chấp thuận của lãnh đạo cấp cao nhất của công ty bạn.
Ví dụ về tự động hóa SQL
Bây giờ chúng ta hãy xem xét một vài ví dụ về tự động hóa SQL.
Kịch bản sao lưu cơ sở dữ liệu (phối cảnh DBA)
Quản trị viên cơ sở dữ liệu (DBA) chăm sóc cơ sở dữ liệu công ty và các nhiệm vụ hàng ngày của họ bao gồm việc phục vụ các yêu cầu liên quan đến cơ sở dữ liệu và quản lý máy chủ cơ sở dữ liệu.
Một DBA dành phần lớn thời gian của họ để quản lý và triển khai các thay đổi nhỏ đối với cơ sở dữ liệu và chăm sóc máy chủ cơ sở dữ liệu.
Một DBA phải thực hiện các nhiệm vụ nhất quán sau:
- Tạo bản sao lưu cơ sở dữ liệu hàng ngày vào cuối mỗi ngày làm việc
- Tạo bản sao lưu hàng tuần vào cuối mỗi tuần
- Tạo bản sao lưu hàng tháng vào cuối mỗi tháng.
Việc sao lưu hàng ngày mất nửa giờ và đây là điều cuối cùng mà DBA làm khi rời đi trong ngày. Mặc dù họ có thể thực hiện đa nhiệm khi quá trình sao lưu hàng ngày được bắt đầu, nhưng họ vẫn phải theo dõi quá trình diễn ra như thế nào để đảm bảo rằng quá trình sao lưu đã hoàn tất. Điều này là do bản sao lưu phải được lưu trữ trên đĩa sao lưu khi nó sẵn sàng.
Ngay cả khi chúng ta bỏ qua thời gian dành cho việc sao lưu hàng tuần và hàng tháng, thời gian cần thiết để hoàn thành việc sao lưu hàng ngày sẽ tăng lên khi bạn thực hiện quá trình này nhiều hơn vì cơ sở dữ liệu sẽ ngày càng có nhiều dữ liệu hơn. Ngay cả khi bắt đầu phải mất nửa giờ để thực hiện sao lưu hàng ngày, lượng thời gian này có thể tăng lên khoảng một giờ trong vài tuần hoặc vài tháng tùy thuộc vào tốc độ tăng trưởng dữ liệu trong hệ thống cơ sở dữ liệu.
Đây là một nhiệm vụ không thay đổi và phải lặp đi lặp lại liên tục, do đó, DBA có thể cảm thấy buồn chán hoặc mất tập trung và mắc sai lầm hoặc bỏ lỡ một hoặc hai ngày.
Nếu một DBA tự động tác vụ SQL này, thì chúng sẽ không chỉ tiết kiệm thời gian và công sức. Khả năng mắc lỗi sẽ được giảm thiểu.
Quá trình sao lưu hàng ngày có thể được lên lịch để bắt đầu vào ban đêm khi có ít tương tác với cơ sở dữ liệu. Ngày hôm sau, DBA có thể kiểm tra bản sao lưu và sử dụng giờ cuối cùng của ngày làm việc (trước đó đã được sử dụng cho quá trình sao lưu) cho các nhiệm vụ quan trọng và khẩn cấp hơn.
Kịch bản triển khai và phát triển cơ sở dữ liệu
Chúng ta hãy xem xét một ví dụ rất phổ biến về phát triển và triển khai cơ sở dữ liệu (tôi đang cố tình loại trừ thử nghiệm để nằm trong phạm vi của bài viết này). Nhà phát triển cơ sở dữ liệu sử dụng công cụ phát triển cơ sở dữ liệu như Công cụ Dữ liệu Máy chủ SQL (SSDT) để thêm các bảng mới vào cơ sở dữ liệu. Khi điều này được thực hiện, họ lưu các thay đổi trong dự án cơ sở dữ liệu SQL. Sau đó, những thay đổi này được gửi đến DBA hoặc nhóm cơ sở hạ tầng, những người phải xem xét những thay đổi này và triển khai chúng tới máy chủ trực tiếp.
Những điểm quan trọng như sau:
- Các nhà phát triển cơ sở dữ liệu không nên xuất bản trực tiếp các thay đổi cơ sở dữ liệu của họ lên máy chủ trực tiếp theo các thông lệ tiêu chuẩn
- Quản trị viên cơ sở dữ liệu hoặc nhóm cơ sở hạ tầng quản lý máy chủ trực tiếp không thể xuất bản bất kỳ thay đổi nào đối với cơ sở dữ liệu trực tiếp trước khi xem xét những thay đổi này để đảm bảo rằng chúng không thách thức tính nhất quán của cơ sở dữ liệu.
Như bạn có thể hiểu từ những gì chúng ta đã thảo luận, việc tự động hóa hoàn toàn các tác vụ triển khai và phát triển cơ sở dữ liệu là không thực tế và tiềm ẩn nhiều rủi ro bảo mật.
Vì vậy, quyết định tốt nhất sẽ là tự động hóa các bước phụ thuộc vào DBA hoặc nhóm cơ sở hạ tầng.
Nhiệm vụ duy trì chỉ mục cơ sở dữ liệu
Chỉ mục cơ sở dữ liệu đóng một vai trò quan trọng trong việc truy xuất tập hợp (hàng) kết quả nhanh hơn từ (các) cơ sở dữ liệu. Tuy nhiên, các chỉ mục này cần được bảo trì theo thời gian. Việc bảo trì chỉ mục cơ sở dữ liệu có thể được thực hiện thủ công trong giờ thấp điểm hoặc tự động. Đây có thể là một công việc rất tốn thời gian, vì vậy tốt hơn hết là bạn nên tự động hóa tác vụ này, đặc biệt là khi có quá nhiều thứ khác liên quan đến máy chủ cơ sở dữ liệu cần quản lý.
Tuy nhiên, một số chuyên gia tranh luận với quan điểm này và khuyến nghị hạn chế duy trì chỉ mục ở một mức độ nhất định để theo dõi quá trình hoặc thậm chí thực hiện việc này hoàn toàn thủ công.
Khi nói đến bảo trì chỉ mục, những điều sau có thể cải thiện hiệu suất chỉ mục cơ sở dữ liệu:
- Tạo lại chỉ mục
- Sắp xếp lại chỉ mục
- Chống phân mảnh chỉ mục
- Cập nhật số liệu thống kê
Cách tự động hóa các tác vụ SQL
Bây giờ chúng ta hãy xem xét các yêu cầu cơ bản để tự động hóa một Nhiệm vụ SQL, sau đó là một ví dụ rất đơn giản.
Thiết lập cơ sở dữ liệu mẫu
Hướng dẫn này yêu cầu cơ sở dữ liệu mẫu bảng đơn sau có tên là UniversityV6 được thiết lập như sau:
-- (1) Create the UniversityV6 sample database CREATE DATABASE UniversityV6; GO USE UniversityV6 CREATE TABLE [dbo].[Student] ( [StudentId] INT IDENTITY (1, 1) NOT NULL, [Name] VARCHAR (30) NULL, [Course] VARCHAR (30) NULL, [Marks] INT NULL, [ExamDate] DATETIME2 (7) NULL, CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC) ); GO
Chạy tập lệnh để tạo cơ sở dữ liệu mẫu:
Khởi động SQL Server Agent
Việc tự động hóa một Nhiệm vụ SQL thường phụ thuộc vào tác nhân SQL Server trừ khi bạn quyết định chọn một lộ trình thay thế.
Điều đầu tiên bạn cần là đảm bảo rằng SQL Server Agent đang chạy. Nếu nó không chạy, bạn phải khởi động nó theo cách thủ công và tiếp tục chạy.
Kết nối với phiên bản SQL Server và tìm nút SQL Server Agent trong Object Explorer. Nếu có biểu tượng "dừng" màu đỏ hiển thị tại nút này, thì nút này vẫn chưa bắt đầu:
Bấm chuột phải vào Tác nhân SQL Server và nhấp vào Bắt đầu:
Tiếp theo, bạn phải xác nhận rằng bạn muốn bắt đầu dịch vụ tác nhân SQL Server trên máy chủ của mình. Nhấp vào Có để làm điều này:
Sau khi khởi động, SQL Server Agent sẽ có một biểu tượng nhỏ màu xanh lá cây hiển thị bên cạnh. Bạn cũng có thể mở rộng nút ngay bây giờ:
Tạo công việc mới
Nhấp chuột phải vào Công việc và nhấp vào Công việc Mới… :
Nhập “ Tác vụ tự động Backup UniversityV6 ”Và nhấp vào Các bước trên thanh điều hướng bên trái:
Thêm một bước công việc mới
Tiếp theo, nhấp vào Mới , nhập “Backup UniversityV6” làm tên bước, thêm tập lệnh SQL sau và nhấp vào OK :
-- Backup the UniversityV6 sample database using the date time stamp DECLARE @BackupName VARCHAR(100) SET @BackupName=CONCAT('C:\Backup\UniversityV6-',FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-tt'),'.bak') BACKUP DATABASE UniversityV6 TO [email protected] WITH COMPRESSION, INIT; GO
Nhấp vào OK để hoàn tất thiết lập công việc.
Xem công việc đã tạo
Cuộn xuống SQL Server Agent và tìm Công việc mới được tạo:
Chạy thử Công việc (Tác vụ Tự động)
Nhấp chuột phải vào Tác vụ tự động Backup UniversityV6 và Nhấp vào Bắt đầu Công việc ở Bước…:
Công việc sẽ bắt đầu và kết thúc:
Kiểm tra vị trí sao lưu
Bây giờ, hãy chuyển đến vị trí mà tại đó tác vụ tự động này đã tạo một bản sao lưu mới:
Xin chúc mừng! Bạn đã tự động hóa thành công tác vụ tạo bản sao lưu cơ sở dữ liệu. Giờ đây, bạn có thể lưu trữ bất kỳ ổ đĩa sao lưu nào bằng cách thay đổi tên ký tự ổ đĩa.
Hãy nhớ rằng bạn phải luôn lưu một bản sao lưu vào một ổ đĩa sao lưu khác với ổ C :. Bạn có thể lập lịch để công việc này chạy thường xuyên bằng cách nhấp chuột phải vào công việc, nhấp vào P roperties , và sau đó nhấp vào Lịch biểu :
Việc cần làm
Bây giờ bạn có thể tự động hóa các tác vụ sao lưu cơ sở dữ liệu cơ bản, vui lòng thử các cách sau để cải thiện kỹ năng của bạn:
- Lên lịch thực hiện nhiệm vụ này hàng ngày vào buổi chiều trong một tuần như một bài kiểm tra
- Tạo một bảng mới có tên là Số liệu thống kê trong cơ sở dữ liệu mẫu với các cột sau:
- StatID (INT)
- Ngày thống kê (DATETIME2)
- TotalRows (INT)
Bây giờ hãy tự kiểm tra bằng cách tạo một tác vụ tự động (công việc mới) ghi lại số hàng cho Sinh viên cùng với ngày / giờ trong Thống kê bàn. Cố gắng điền bảng Sinh viên thường xuyên.
Lên lịch thực hiện nhiệm vụ mỗi giờ và kiểm tra xem Số liệu thống kê bảng phản ánh các lần chèn dữ liệu của bạn bằng cách hiển thị cho bạn số hàng của bảng mỗi giờ.