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

一、 SQL Server 代理中包含不少的類別,有做業、警報、操做員、代理等,做業屬於其中的一個類別sql

 

一、 用自動化數據備份來介紹做業的具體運用規則數據庫

用命令符啓用sqlserveragent服務器

②添加做業的類別,明確進行做業的任務sqlserver

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'; ---做業所屬的類別

 

爲做業添加具體的任務描述,就是做業計劃(jobschedulespa

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;

                                                                          

                                                                                    頻率類型表3d

                                                          

                                                                                         頻率間隔表代理

爲做業制定服務器,做業將會在sqlserveragent啓用後生效code

 

    EXEC msdb.dbo.sp_add_jobserver    
             @job_name = 'jb_藥房管理系統_FullBackup_Weekly'               
,@server_name =@@SERVERNAME; --默認爲local服務器 ,也能夠指定現有目標的服務器名稱

 

⑥測試做業執行(將電腦的時間往下調整至週日)server

    RESTORE HEADERONLY
         FROM jb_藥房管理系統_FullBackup_Weekly

三、 郵件通知,數據庫是否備份

數據的自動備份系統應該存在提示,所以就能夠利用郵件來實現這一個功能,下面就介紹利用郵件通識相關人員系統是否完整備份,備份是否成功。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.';            

四、 系統儘管已經通知是否備份,可是有時候系統備份也會失敗,所以最好能將備分具體的狀況一同發送到郵箱。系統自動備份成功與否就要有明確的判斷,用四個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;            
相關文章
相關標籤/搜索