Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách tự động hóa các tác vụ bảo trì cơ sở dữ liệu SQL bằng SQLCMD

Bài viết này nói về việc tự động hóa các tác vụ bảo trì cơ sở dữ liệu SQL thông qua tiện ích SQLCMD cho phép bạn chạy các lệnh T-SQL trực tiếp từ dấu nhắc lệnh mà không cần sử dụng SSMS (SQL Server Management Studio).

Thông thường, việc tự động hóa các tác vụ cơ sở dữ liệu yêu cầu SSMS (SQL Server Management Studio) để lập lịch công việc chạy các tác vụ này, nhưng trong bài viết này, một phương pháp thay thế được sử dụng để tự động hóa các tác vụ cơ sở dữ liệu mà không cần phải sử dụng SSMS cần thiết.

Tiện ích SQLCMD có thể là một trình tiết kiệm thời gian thực cho các nhà phát triển cơ sở dữ liệu và DBA vì họ có thể chạy ngay lập tức các tập lệnh SQL cần thiết từ dòng lệnh và tự động hóa các tác vụ bảo trì cơ sở dữ liệu với tiện ích SQLCMD là một điểm cộng.

Khái niệm cơ bản về tự động hóa các tác vụ cơ sở dữ liệu SQL

Chúng ta hãy xem qua một số khái niệm cơ bản để tự động hóa các tác vụ bảo trì cơ sở dữ liệu SQL bằng tiện ích SQLCMD.

Nhiệm vụ Bảo trì Cơ sở dữ liệu là gì?

Nhiệm vụ bảo trì cơ sở dữ liệu, như tên đã chỉ ra, là một nhiệm vụ hỗ trợ quản lý hoặc duy trì cơ sở dữ liệu để đảm bảo cơ sở dữ liệu hoạt động trơn tru.

Ví dụ:tạo bản sao lưu cơ sở dữ liệu hàng ngày là nhiệm vụ bảo trì cơ sở dữ liệu đảm bảo rằng cơ sở dữ liệu được sao lưu, để trong trường hợp xảy ra bất kỳ sự cố nào, dẫn đến làm hỏng cơ sở dữ liệu hoặc làm cho nó không ổn định, nó có thể được khôi phục thành công mà không bị mất bất kỳ dữ liệu nào.

Ai thực hiện các nhiệm vụ bảo trì cơ sở dữ liệu?

Thông thường, các chuyên gia chịu trách nhiệm bảo trì hệ thống cơ sở dữ liệu, chẳng hạn như quản trị viên cơ sở dữ liệu, thực hiện các nhiệm vụ bảo trì cơ sở dữ liệu, tuy nhiên, điều này có thể thay đổi trong một số trường hợp nhất định.

Nhiệm vụ Bảo trì Cơ sở dữ liệu được thực hiện như thế nào?

Nhiệm vụ bảo trì cơ sở dữ liệu thường được quản trị viên cơ sở dữ liệu thực hiện theo cách thủ công theo thời gian hoặc nó cũng có thể được lập lịch để chạy tự động.

Tự động hóa một nhiệm vụ bảo trì cơ sở dữ liệu có nghĩa là gì?

Tự động hóa tác vụ bảo trì cơ sở dữ liệu có nghĩa là lên lịch để tác vụ bảo trì cơ sở dữ liệu chạy tự động mà không cần bất kỳ sự can thiệp thủ công nào.

Những lợi ích của Tự động hóa Nhiệm vụ Bảo trì Cơ sở dữ liệu là gì?

Việc tự động hóa các nhiệm vụ bảo trì cơ sở dữ liệu giúp tiết kiệm thời gian và công sức, giúp chuẩn hóa quy trình và giúp dễ dàng thực thi nó một cách thường xuyên hơn và các cảnh báo kịp thời được định cấu hình cho lỗi công việc tự động cũng có thể tăng tốc quá trình xác định nguyên nhân của sự cố nếu nhiệm vụ không thành công.

Làm cách nào để bạn có thể Tự động hóa Nhiệm vụ Bảo trì Cơ sở dữ liệu?

Một trong những ứng dụng nâng cao của tiện ích SQLCMD là tự động hóa các tác vụ bảo trì cơ sở dữ liệu. Chúng tôi sẽ tự động hóa các tác vụ bảo trì cơ sở dữ liệu mà không cần sử dụng SSMS (SQL Server Management Studio) trong bài viết này.

Trình lập lịch tác vụ của Windows

Chúng tôi sẽ tận dụng Trình lập lịch tác vụ của Windows để tự động hóa các tác vụ bảo trì cơ sở dữ liệu không yêu cầu SSMS (SQL Server Management Studio).

Điều kiện tiên quyết

Bài viết này giả định rằng bạn có kiến ​​thức cơ bản về các tác vụ bảo trì cơ sở dữ liệu được thực hiện bằng cách chạy các câu lệnh T-SQL cùng với hiểu biết cơ bản về tiện ích SQLCMD.

Vui lòng tham khảo bài viết Cơ bản về Chạy câu lệnh T-SQL từ Dòng lệnh sử dụng SQLCMD để có một số hiểu biết cơ bản về SQLCMD, trước khi tiếp tục sử dụng nâng cao.

Ngoài ra, hãy tham khảo bài viết Chạy tác vụ bảo trì cơ sở dữ liệu SQL bằng SQLCMD để tìm hiểu cách thực hiện tác vụ bảo trì cơ sở dữ liệu SQL.

Bài viết này cũng giả định rằng một cơ sở dữ liệu mẫu của Đại học đã được tạo.

Vui lòng xem bài viết khác Kiến thức cơ bản về Chạy câu lệnh T-SQL từ Dòng lệnh bằng SQLCMD để tạo cơ sở dữ liệu mẫu hoặc sử dụng mã T-SQL sau để thiết lập cơ sở dữ liệu mẫu có tên Đại học:

-- (1) Create University sample database
CREATE DATABASE University;
GO

USE University

-- (2) Create Course table
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Course') 
DROP TABLE dbo.Course 

CREATE TABLE [dbo].[Course] (
    [CourseId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]     VARCHAR (30)  NOT NULL,
    [Detail]   VARCHAR (200) NULL,
    CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ([CourseId] ASC)
);

-- (3) Create Student table
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Student') 
DROP TABLE dbo.Student 

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)
);

-- (4) Populate Course table
SET IDENTITY_INSERT [dbo].[Course] ON
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (1, N'DevOps for Databases', N'This is about DevOps for Databases')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (2, N'Power BI Fundamentals', N'This is about Power BI Fundamentals')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (3, N'T-SQL Programming', N'About T-SQL Programming')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (4, N'Tabular Data Modeling', N'This is about Tabular Data Modeling')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (5, N'Analysis Services Fundamentals', N'This is about Analysis Services Fundamentals')
SET IDENTITY_INSERT [dbo].[Course] OFF

-- (5) Populate Student table
SET IDENTITY_INSERT [dbo].[Student] ON
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (1, N'Asif', N'Database Management System', 80, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (2, N'Peter', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (3, N'Sam', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (4, N'Adil', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (5, N'Naveed', N'Database Management System', 90, N'2016-01-01 00:00:00')
SET IDENTITY_INSERT [dbo].[Student] OFF
GO

Tự động hóa Nhiệm vụ Sao lưu Cơ sở dữ liệu Trường Đại học

Hãy xem xét tình huống mà sao lưu cơ sở dữ liệu cần được tự động hóa.

Yêu cầu:Tự động hóa Sao lưu Cơ sở dữ liệu Trường Đại học

Một DBA đã được yêu cầu tự động hóa các bản sao lưu cơ sở dữ liệu hiển thị ngày và giờ sao lưu để tiết kiệm thời gian và tránh nhầm lẫn trong bản sao lưu mới nhất và tăng tốc quá trình tổng thể.

Để đáp ứng các yêu cầu kinh doanh này, tập lệnh SQLCMD tạo sao lưu cơ sở dữ liệu cần được chạy trong Bộ lập lịch tác vụ của Windows.

Tạo thư mục để sao lưu cơ sở dữ liệu và tập lệnh

Đầu tiên, tạo một thư mục có tên Demo trên ổ C và sau đó tạo các thư mục con sau trong Demo thư mục:

  1. Bản sao lưu
  2. Tập lệnh

Xin lưu ý rằng chúng tôi chỉ sử dụng ổ C cho mục đích demo, vui lòng sử dụng ổ đĩa sao lưu trong trường hợp thời gian thực.

Tạo tập lệnh sao lưu cơ sở dữ liệu SQL

Tạo tập lệnh sao lưu cơ sở dữ liệu SQL và lưu nó dưới dạng 01-Backup-University-sql-script.sql trong C:\ Demo \ Scripts trong đó cũng chứa thông tin về ngày và giờ sao lưu như sau:

-- Creating University database backup with date and time 
DECLARE @Backup NVARCHAR(400)
SET @Backup=CONCAT('C:\Demo\Backups\University-',(FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-ss-tt')),'.bak')
BACKUP DATABASE [University] TO  DISK = @Backup
WITH NOFORMAT, NOINIT,  NAME = N'University-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Lưu tập lệnh SQL trong thư mục tập lệnh

Lưu tập lệnh sao lưu SQL trong C:\ Demo \ Scripts thư mục.

Tạo tập lệnh sao lưu SQLCMD

Tập lệnh sao lưu cơ sở dữ liệu đề cập đến tập lệnh SQL sử dụng SQLCMD được tạo như sau:

Sqlcmd –S . –i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

Ở đâu “.” (dấu chấm) là phiên bản SQL không được đặt tên mặc định ở đây có thể được thay thế bằng một phiên bản SQL có tên chẳng hạn như. \ .

Chạy thử tập lệnh sao lưu SQLCMD

Chạy tập lệnh SQLCMD ở trên từ dòng lệnh để kiểm tra tập lệnh sao lưu:

Tập lệnh đã chạy thành công, vì vậy chúng tôi sẵn sàng tiếp tục.

Đi tới Bản sao lưu và xóa bản sao lưu được tạo do kết quả của quá trình chạy thử nghiệm.

Tạo một tệp loạt để tham chiếu Tập lệnh SQLCMD

Tạo một tệp hàng loạt có tên 02-Run-Sqlcmd-Backup-script.bat bằng Notepad và lưu nó dưới dạng .bat:

@Echo off
sqlcmd -E -S . -i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

Xin lưu ý rằng có một chút thay đổi trong tập lệnh SQLCMD :-E được thêm vào , thực tế là tùy chọn xác thực mặc định và không cần được chỉ định theo tài liệu của Microsoft.

Điều này được minh họa như sau:

Lên lịch tác vụ sao lưu cơ sở dữ liệu trong bộ lập lịch tác vụ của Windows

Mở Bộ lập lịch tác vụ của Windows bằng cách nhập Bộ lập lịch tác vụ trong tìm kiếm của Windows, sau đó nhấp vào Bộ lập lịch tác vụ :

Khi Trình lập lịch tác vụ của Windows được mở, hãy nhấp vào Tạo tác vụ cơ bản… từ các tùy chọn ở bên phải và nhập Nhiệm vụ dự phòng cơ sở dữ liệu trường đại học trong Tên hộp nhập liệu và nhấp vào Tiếp theo :

Tiếp theo, thiết lập tần suất của tác vụ bằng cách để cài đặt mặc định, là hàng ngày:

Đặt thời gian hàng ngày mà tác vụ này sẽ được kích hoạt (bạn nên đặt thời gian từ hai đến ba phút cộng với thời gian hiện tại của bạn để kiểm tra ngay xem nó có đang hoạt động hay không):

Chúng tôi cũng cần chọn Bắt đầu chương trình khi được hỏi chúng tôi muốn tác vụ này thực hiện như thế nào:

Tiếp theo, trỏ tới tệp loạt gọi SQLCMD để tạo bản sao lưu cơ sở dữ liệu Đại học và nhấp vào Tiếp theo :

Nhấp vào Kết thúc để hoàn tất quá trình.

Có thể bạn đã dành nhiều thời gian hơn cho những gì đã được thiết lập trong lịch trình công việc để hoàn thành thiết lập công việc, có nghĩa là bạn phải đợi ngày hôm sau để xem liệu nhiệm vụ có đang chạy hay không.

Có một cách giải quyếtб bạn cần phải lên lịch lại nhiệm vụ trước 2-3 phút so với thời gian hiện tại của mình để xem nó chạy sau 2-3 phút thay vì đợi cả ngày:

Bây giờ, hãy đợi tác vụ chạy tự động và sau thời gian được chỉ định, vui lòng kiểm tra thư mục sao lưu mà chúng tôi đã tạo trong Bản trình diễn thư mục trên ổ C:

Xin chúc mừng, tác vụ bảo trì cơ sở dữ liệu đã được tự động hóa thành công bằng cách sử dụng Bộ lập lịch tác vụ Windows, công cụ này gọi một tệp hàng loạt chạy tập lệnh SQLCMD để tạo tệp sao lưu.

Vui lòng xóa tác vụ tự động được tạo cho mục đích demo sau khi bạn đã hoàn thành phần hướng dẫn và không muốn chạy thêm.

Việc cần làm

Bây giờ bạn đã sẵn sàng để tự động hóa các tác vụ bảo trì cơ sở dữ liệu, chẳng hạn như sao lưu cơ sở dữ liệu bằng tiện ích SQLCMD và Windows Task Scheduler sau khi xem qua bài viết này, bạn có thể cải thiện kỹ năng của mình hơn nữa bằng cách thử những cách sau:

  1. Vui lòng cố gắng thiết lập và tự động sao lưu cơ sở dữ liệu mẫu SQLBookShop được đề cập trong bài viết Đơn giản hóa quy trình lưu trữ chính của kiểm tra đơn vị cũng gọi là thủ tục tiện ích.
  2. Hãy cố gắng tạo nhiều cơ sở dữ liệu và tự động sao lưu chúng bằng tiện ích SQLCMD với Bộ lập lịch tác vụ của Windows.
  3. Vui lòng cố gắng tự động hóa quy trình sao lưu và khôi phục cơ sở dữ liệu bằng cách tạo hai tệp hàng loạt, một tệp để sao lưu và tệp kia để khôi phục cơ sở dữ liệu đề cập đến các tập lệnh SQLCMD và lên lịch công việc trong Bộ lập lịch tác vụ Windows để chạy hàng ngày.

Công cụ hữu ích:

dbForge Studio dành cho SQL Server - IDE mạnh mẽ để quản lý, quản trị, phát triển, báo cáo và phân tích dữ liệu SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ký hiệu ERD trong mô hình hóa dữ liệu

  2. Phần 3 - Khách hàng, Cuộc gọi và Cuộc họp

  3. Những gì các bộ lọc ảo làm và không làm, cho bạn biết về độ trễ I / O

  4. Biểu thức bảng thông thường:Khi nào và làm thế nào để sử dụng chúng

  5. Các nguyên tắc cơ bản về biểu thức bảng, Phần 9 - Chế độ xem, so sánh với các bảng dẫn xuất và CTE