1. MSSQL 排程策略概述
MSSQL 排程是指在特定时间自动执行一系列的 SQL Server 任务,包括备份、恢复、数据迁移、数据整合等等。MSSQL 排程帮助管理员主动地监控 SQL Server 实例、数据库和作业,并且在需要的时候自动执行一系列的操作。这样能够减少管理员的工作量,提高数据库的可用性和效率。
MSSQL 排程可以使用 SQL Server 代理(SQL Server Agent)来实现。SQL Server 代理是一个作业调度程序,用于管理和自动执行 SQL Server 实例中的作业、计划程序和警报。MSSQL 排程可以通过 SQL Server 代理的作业特性来创建、修改、删除和执行。
2. MSSQL 排程的类型
MSSQL 排程有三种类型:单次排程、循环排程和计划排程。
2.1 单次排程
单次排程是指只执行一次的排程。对于只需要一次性执行的备份、恢复、数据迁移等任务,可以使用单次排程。
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupDemoDB',
@enabled = 1,
@description = N'This job backup DemoDB database';
GO
USE msdb;
GO
EXEC sp_add_jobstep
@job_name = N'BackupDemoDB',
@step_name = N'BackupDemoDB',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE DemoDB TO DISK = ''C:\Backup\DemoDB.bak''',
@on_success_action = 1,
@on_fail_action = 2;
GO
USE msdb;
GO
EXEC sp_add_schedule
@schedule_name = N'Once',
@freq_type = 1,
@freq_interval = 0,
@freq_subday_type = 0,
@freq_subday_interval = 0,
@freq_relative_interval = 0,
@freq_recurrence_factor = 0,
@active_start_time = 233000,
@active_end_time = 235900;
GO
USE msdb;
GO
EXEC sp_attach_schedule
@job_name = N'BackupDemoDB',
@schedule_name = N'Once';
GO
2.2 循环排程
循环排程是指多次执行的排程,循环排程可以每秒、每分钟、每小时、每天等定期执行。
USE msdb;
GO
EXEC sp_add_job
@job_name = N'AutoBackupDemoDB',
@enabled = 1,
@description = N'This job automatically backup DemoDB database';
GO
USE msdb;
GO
EXEC sp_add_jobstep
@job_name = N'AutoBackupDemoDB',
@step_name = N'AutoBackupDemoDB',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE DemoDB TO DISK = ''C:\Backup\DemoDB.bak''',
@on_success_action = 1,
@on_fail_action = 2;
GO
USE msdb;
GO
EXEC sp_add_schedule
@schedule_name = N'Hourly',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 000000,
@active_end_time = 235959;
GO
USE msdb;
GO
EXEC sp_attach_schedule
@job_name = N'AutoBackupDemoDB',
@schedule_name = N'Hourly';
GO
2.3 计划排程
计划排程是指在特定日期和时间执行的排程。计划排程一般用于临时需要进行的操作,比如特定日期的备份或者数据迁移等。可以使用SQL Server 代理来创建计划排程。
USE msdb;
GO
EXEC sp_add_job
@job_name = N'SyncDataBetweenServers',
@enabled = 1,
@description = N'This job synchronize data between two servers';
GO
USE msdb;
GO
EXEC sp_add_jobstep
@job_name = N'SyncDataBetweenServers',
@step_name = N'SyncDataBetweenServers',
@subsystem = N'TSQL',
@command = N'
INSERT INTO [Server2].[Database2].[Schema].[Table]
SELECT * FROM [Server1].[Database1].[Schema].[Table]
',
@on_success_action = 1,
@on_fail_action = 2;
GO
USE msdb;
GO
EXEC sp_add_schedule
@schedule_name = N'OnceOn20220101At1200',
@freq_type = 1,
@freq_interval = 0,
@freq_subday_type = 0,
@freq_subday_interval = 0,
@freq_relative_interval = 0,
@freq_recurrence_factor = 0,
@active_start_time = 120000,
@active_end_time = 120000;
GO
USE msdb;
GO
EXEC sp_attach_schedule
@job_name = N'SyncDataBetweenServers',
@schedule_name = N'OnceOn20220101At1200';
GO
3. MSSQL 排程的最佳实践
MSSQL 排程的最佳实践包括:规划适当的时间、规定排程类型、 设置报警、实现失败和成功的处理。
3.1 规划适当的时间
在设置排程的时间之前,需要对业务需求进行认真的评估。需要考虑到数据库的使用情况、业务峰值时间以及其他因素。规划合适的时间可以减少对数据库的影响,提高数据库的性能。
3.2 规定排程类型
规定排程类型是保障排程可用性和维护性的一个重要步骤。需要根据任务特点选择适当的排程类型。对于只需要一次性执行的任务,可以使用单次排程。对于频繁执行的任务,可以使用循环排程。对于需要在特定时间执行的任务,可以使用计划排程。
3.3 设置报警
设置报警可以在排程执行失败或者发生其他异常情况的时候第一时间得到通知,从而保障数据库的可用性和运行状态。需要设置必要的错误报警、作业结束报警等等。
3.4 实现失败和成功的处理
实现失败和成功的处理可以保障排程的稳定性和可维护性。需要实现任务失败的自动重试、任务失败后的通知和记录、任务成功后的通知等等。
4. 总结
MSSQL 排程通过 SQL Server 代理的作业特性来创建、修改、删除和执行,可以帮助管理员降低工作量,并且提高数据库的处理效率和可用性。MSSQL 排程包括单次排程、循环排程和计划排程。管理员需要根据业务需求和任务特点,选择适当的排程类型。同时,管理员需要遵循 MSSQL 排程的最佳实践,实现稳定性和可维护性。