1、 SQL Server 代理中包含很多的类别,有作业、警报、操作员、代理等,作业属于其中的一个类别
1、 用自动化数据备份来介绍作业的具体运用规则
①用命令符启用sqlserveragent
②添加作业的类别,明确进行作业的任务
EXEC msdb.dbo.sp_add_category @class = ‘JOB‘--添加对象的类别,如:作业、报警 ,@name = ‘ct_药房管理系统_Maintain‘; ---设置类别的名字
③添加作业(包括名字、任务,所属的类别)
EXEC msdb.dbo.sp_add_job @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ --为作业命名 ,@description = ‘Full Backup job for 药房管理系统every week(end).‘ ---作业的任务描述,每周自动备份更新 ,@category_name = ‘ct_药房管理系统_Maintain‘; ---作业所属的类别
④为作业添加具体的任务描述,就是作业计划(jobschedule)
DECLARE @StartDate INT = CONVERT(CHAR(8),GETDATE(),112) ,@EndDate INT = CONVERT(CHAR(8),DATEADD(year,1,GETDATE()),112) ,@StartTime INT = 220000; EXEC msdb.dbo.sp_add_jobschedule @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ --作业名字 ,@name = ‘jc_药房管理系统_FullBackup_Sunday2200‘ ---作业计划的名字,为数据库自动每周星期日22:00备份 ,@freq_type = 8 --对应每周的频率类型,具体见表格 ,@freq_interval = 1 --对应星期天的频率类型,具体见表格 ,@freq_recurrence_factor = 1--作业计划间隔一周 ,@active_start_date = @StartDate ,@active_end_date = @EndDate ,@active_start_time = @StartTime ,@active_end_time = @StartTime;
频率类型表
频率间隔表
⑤为作业制定服务器,作业将会在sqlserveragent启用后生效
EXEC msdb.dbo.sp_add_jobserver @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ ,@server_name [email protected]@SERVERNAME; --默认为local服务器 ,也可以指定现有目标的服务器名称
⑥测试作业执行(将电脑的时间往下调整至周日)
RESTORE HEADERONLY FROM jb_药房管理系统_FullBackup_Weekly
3、 邮件通知,数据库是否备份
数据的自动备份系统应该存在提示,因此就可以利用邮件来实现这一个功能,下面就介绍利用邮件通识相关人员系统是否完整备份,备份是否成功。SQL就自带有邮件通知的功能
①启用邮件
EXEC sp_configure ‘SHOW ADVANCED OPTIONS‘,1; RECONFIGURE; EXEC sp_configure ‘DATABASE MAIL XPs‘; EXEC sp_configure ‘DATABASE MAIL XPs‘,1; RECONFIGURE;
②添加配置文件
EXEC msdb.dbo.sysmail_add_profile_sp @profile_name = ‘mp_药房管理系统_Dba‘ ,@description = ‘Database mail profile for 药房管理系统database administrator.‘;
③添加邮件的账号
EXEC msdb.dbo.sysmail_add_account_sp @account_name = ‘ma_药房管理系统_Dba‘ ,@description = ‘Database mail account for 药房管理系统database administrator.‘ ,@email_address = ‘[email protected]药房管理系统.com‘ ,@display_name = ‘药房管理系统DBA‘ ,@mailserver_name = ‘127.0.0.1‘ ---SMTP发送地址 ,@mailserver_type=‘SMTP‘ ,@port = 25 ,@use_default_credentials = 1; ---默认使用Windows验证方式
④将邮件的账号和配置文件相互关联
EXEC msdb.dbo.sysmail_add_profileaccount_sp @profile_name = ‘mp_药房管理系统_Dba‘ ,@account_name = ‘ma_药房管理系统_Dba‘ ,@sequence_number = 1; EXEC msdb.dbo.sysmail_configure_sp ‘AccountRetryAttempts‘, ‘3‘ ; EXEC msdb.dbo.sysmail_configure_sp ‘AccountRetryDelay‘, ‘5‘ ;
⑤发送邮件
EXEC msdb.dbo.sp_send_dbmail @profile_name = ‘mp_药房管理系统_Dba‘ ,@recipients = ‘[email protected]药房管理系统.com‘ ,@subject = ‘TestMail_2‘ ,@body = ‘Another test mail for 药房管理系统database administrator.‘;
4、 系统尽管已经通知是否备份,但是有时候系统备份也会失败,因此最好能将备分具体的情况一同发送到邮箱。系统自动备份成功与否就要有明确的判断,用四个on来判断成功还是失败的分支,看到底执行哪一个步骤。
①添加计划步骤
EXEC msdb.dbo.sp_add_jobstep @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ ,@step_name = ‘js_药房管理系统_FullBackup‘ ,@step_id = 1 ,@database_name = ‘master‘ ,@subsystem = ‘TSQL‘ ,@command = ‘EXEC 药房管理系统.dbo.usp_BackupFull‘ ,@retry_attempts = 3 ,@retry_interval = 0 ,@on_success_action = 4 ,@on_success_step_id = 2 ,@on_fail_action = 4 ,@on_fail_step_id = 3; EXEC msdb.dbo.sp_add_jobstep @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ ,@step_name = ‘js_药房管理系统_MailAfterFullBkOk‘ ,@step_id = 2 ,@database_name = ‘master‘ ,@subsystem = ‘TSQL‘ ,@command = ‘EXEC 药房管理系统..usp_execMailAfterBkOk;‘ ,@retry_attempts = 3 ,@retry_interval = 0;
②发送邮件,将结果以附件的形式发送至邮箱
EXEC msdb.dbo.sp_add_jobstep @job_name = ‘jb_药房管理系统_FullBackup_Weekly‘ ,@step_name = ‘js_药房管理系统_MailAfterFullBkFail‘ ,@step_id = 3 ,@database_name = ‘master‘ ,@subsystem = ‘TSQL‘ ,@command = ‘EXEC 药房管理系统..usp_MailAfterBkFail;‘ ,@retry_attempts = 3 ,@retry_interval = 0; EXEC msdb.dbo.sp_send_dbmail @profile_name = ‘mp_药房管理系统_Dba‘ ,@recipients = ‘[email protected]药房管理系统.com‘ ,@subject = ‘TestMail_2‘ ,@body = ‘This mail contains the query result as attach.‘ ---以附件的形式发送 ,@query= ‘SELECT TOP 100 * FROM master.dbo.spt_values‘ ,@attach_query_result_as_file = 1;
原文地址:https://www.cnblogs.com/Angular-JS/p/8127714.html
时间: 2024-11-06 19:08:26