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