1. 程式人生 > >讀書筆記(十四)——作業的知識點與註意事項

讀書筆記(十四)——作業的知識點與註意事項

png dba 是否 命名 技術分享 發送郵件 fig 命令 name

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;            

讀書筆記(十四)——作業的知識點與註意事項