读书笔记(十四)——作业的知识点与注意事项

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 =@@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 = 'dba@药房管理系统.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 = 'dba@药房管理系统.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 = 'dba@药房管理系统.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值