SQL SERVER數(shù)據(jù)庫的作業(yè)的腳本及存儲過程
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'cg_DoBackupJob' AND type = 'P') DROP PROCEDURE cg_DoBackupJob GO CREATE PROCEDURE [cg_DoBackupJob] @DataBaseName varchar(100), @FileHead varchar(50), @isFullBackup bit, -- 0 差量備份 1 完整備份 @FolderPath varchar(50) = 'f:\db_backup\', @BackName varchar(100) = 'unknown', -- 描述字串 @isAppendMedia bit = 1 -- 0 覆蓋媒體 1 追加到媒體 AS declare @filePath varchar(150) declare @sql varchar(1000) select @filePath=@FolderPath + @FileHead + '_' + case @isFullBackup when 1 then 'FullBackup' when 0 then 'DifferBackup' end + '_' + convert ( nvarchar(11) ,getdate() , 112 ) + case @isFullBackup when 1 then '' when 0 then replace(convert(nvarchar(15),getdate(),114),':','') end --print(@filePath) select @sql ='BACKUP DATABASE [' + @DataBaseName + '] TO DISK = ''' + @filePath + ''' WITH ' + case @isAppendMedia when 0 then 'INIT' when 1 then 'NOINIT' end + ' , NOUNLOAD , ' + case @isFullBackup when 0 then 'DIFFERENTIAL , ' when 1 then '' end + ' NAME = N''' + @BackName + '備份'', NOSKIP , STATS = 10, NOFORMAT' execute(@sql) --print(@sql) GO -- ============================================= -- example to execute the store procedure -- ============================================= EXECUTE cg_DoBackupJob 'cg_access911','access911',1 GO
用系統(tǒng)存儲過程去創(chuàng)建作業(yè),代碼如下:
BEGIN TRANSACTION DECLARE @JobID BINARY(16) DECLARE @ReturnCode INT SELECT @ReturnCode = 0 IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]' -- 刪除同名的警報(如果有的話)。 SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N'access911_每2周備份一次') IF (@JobID IS NOT NULL) BEGIN -- 檢查此作業(yè)是否為多重服務器作業(yè) IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0))) BEGIN -- 已經存在,因而終止腳本 RAISERROR (N'無法導入作業(yè)“access911_每2周備份一次”,因為已經有相同名稱的多重服務器作業(yè)。', 16, 1) GOTO QuitWithRollback END ELSE -- 刪除[本地]作業(yè) EXECUTE msdb.dbo.sp_delete_job @job_name = N'access911_每2周備份一次' SELECT @JobID = NULL END BEGIN -- 添加作業(yè) EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'access911_每2周備份一次', @owner_login_name = N'Access911\access911', @description = N'沒有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback -- 添加作業(yè)步驟 EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'2周備份', @command = N'EXECUTE cg_DoBackupJob ''a9SupperDatabase'',''a9SupperDatabase'',1 ', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback -- 添加作業(yè)調度 EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'diaodu', @enabled = 1, @freq_type = 8, @active_start_date = 20061009, @active_start_time = 0, @freq_interval = 64, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 2, @active_end_date = 99991231, @active_end_time = 235959 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback -- 添加目標服務器 EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave:
Transact-SQL 參考
sp_add_jobschedule 創(chuàng)建作業(yè)調度。 語法 sp_add_jobschedule [ @job_id = ] job_id, | [ @job_name = ] 'job_name', [ @name = ] 'name' [ , [ @enabled = ] enabled ] [ , [ @freq_type = ] freq_type ] [ , [ @freq_interval = ] freq_interval ] [ , [ @freq_subday_type = ] freq_subday_type ] [ , [ @freq_subday_interval = ] freq_subday_interval ] [ , [ @freq_relative_interval = ] freq_relative_interval ] [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ] [ , [ @active_start_date = ] active_start_date ] [ , [ @active_end_date = ] active_end_date ] [ , [ @active_start_time = ] active_start_time ] [ , [ @active_end_time = ] active_end_time ] 參數(shù) [ @jobid = ] job_id 將向其中添加調度的作業(yè)的作業(yè)標識號。job_id 的數(shù)據(jù)類型為 uniqueidentifier,默認設置為 NULL。 [ @job_name = ] 'job_name' 作業(yè)的名稱,調度即添加到該作業(yè)中。job_name 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。 說明 必須指定 job_id 或 job_name,但不能兩個都指定。 [ @name = ] 'name' 調度的名稱。name 的數(shù)據(jù)類型為 sysname,沒有默認設置。 [ @enabled = ] enabled 指明調度的當前狀態(tài)。enabled 的數(shù)據(jù)類型為 tinyint,默認設置為 1(啟用)。如果為 0,則不啟用調度。禁用該調度時,不運行作業(yè)。 [ @freq_type = ] freq_type 用于指明何時將執(zhí)行作業(yè)的值。freq_type 的數(shù)據(jù)類型為 int,默認設置為 0,可以是下列值之一。 值 描述 1 一次 4 每天 8 每周 16 每月 32 每月,與 freq interval 相關 64 當 SQLServerAgent 服務啟動時運行 128 計算機空閑時運行 [ @freq_interval = ] freq_interval 作業(yè)執(zhí)行的天數(shù)。freq_interval 的數(shù)據(jù)類型為 int,默認設置為 0,依賴于 freq_type 的值。 freq_type 的值 對 freq_interval 的影響 1(一次) 未使用 freq_interval。 4(每天) 每個 freq_interval 日。 8(每周) freq_interval 為下面的一個或多個值(與 OR 邏輯運算符結合使用): 1 = 星期日 2 = 星期一 4 = 星期二 8 = 星期三 16 = 星期四 32 = 星期五 64 = 星期六 16(每月) 每月的 freq_interval 日。 32(每月相對) freq_interval 為下列值之一: 1 = 星期日 2 = 星期一 3 = 星期二 4 = 星期三 5 = 星期四 6 = 星期五 7 = 星期六 8 = 日 9 = 工作日 10 = 周末 64(當 SQLServerAgent 服務啟動時) 未使用 freq_interval。 128 未使用 freq_interval。 [ @freq_subday_type = ] freq_subday_type 指定 freq_subday_interval 的單位。freq_subday_type 為 int 類型,其默認值為 0,且可以取下列值之一。 值 描述(單位) 0x1 在指定的時間 0x4 分鐘 0x8 小時 [ @freq_subday_interval = ] freq_subday_interval 作業(yè)每次執(zhí)行之間要出現(xiàn)的 freq_subday_type 周期數(shù)。freq_subday_interval 的數(shù)據(jù)類型為 int,默認設置為 0。 [ @freq_relative_interval = ] freq_relative_interval 如果 freq_interval 是 32(每月相對),則為每月中已調度作業(yè)的 freq_interval 的發(fā)生情況。freq_relative_interval 的數(shù)據(jù)類型為 int,默認設置為 0,可以是下列值之一。 值 描述(單位) 1 第一頁 2 秒 4 第三個 8 第四個 16 最后一頁 [ @freq_recurrence_factor = ] freq_recurrence_factor 作業(yè)的已調度執(zhí)行之間的周數(shù)或月數(shù)。只有當 freq_type 是 8、16 或 32 時,才使用 freq_recurrence_factor。freq_recurrence_factor 的數(shù)據(jù)類型為 int,默認設置為 0。 [ @active_start_date = ] active_start_date 作業(yè)可開始執(zhí)行的日期。active_start_date 的數(shù)據(jù)類型為 int,默認設置為 NULL,該值表示當天的日期。日期的格式為 YYYYMMDD。如果 active_start_date 不為 NULL,則日期必須大于或等于 19900101。 [ @active_end_date = ] active_end_date 作業(yè)可停止執(zhí)行的日期。active_end_date 的數(shù)據(jù)類型為 int,默認設置為 99991231,該值表示 9999 年 12 月 31 日。格式為 YYYYMMDD。 [ @active_start_time = ] active_start_time 在 active_start_date 和 active_end_date 之間的任何一天開始執(zhí)行作業(yè)的時間。active_start_time 的數(shù)據(jù)類型為 int,默認設置為 000000,該值表示 24 小時制的上午 12:00:00,并且必須使用格式 HHMMSS 進行輸入。 [ @active_end_time = ] active_end_time 在 active_start_date 和 active_end_date 之間的任何一天停止執(zhí)行作業(yè)的時間。active_end_time 的數(shù)據(jù)類型為 int,默認設置為 235959,該值表示 24 小時制的下午 11:59:59,并且必須使用格式 HHMMSS 進行輸入。 返回代碼值 0(成功)或 1(失?。? 結果集 無 注釋 SQL Server 企業(yè)管理器提供易于使用的圖形方法來管理作業(yè),建議使用該方法創(chuàng)建和管理作業(yè)基本結構。 權限 執(zhí)行權限默認授予 public 角色。 示例 此示例假設已經創(chuàng)建用來備份數(shù)據(jù)庫的 NightlyBackup 作業(yè)。它將作業(yè)添加到名為 ScheduledBackup 的調度中,并且在每天上午 1:00 執(zhí)行。 USE msdb EXEC sp_add_jobschedule @job_name = 'NightlyBackup', @name = 'ScheduledBackup', @freq_type = 4, -- daily @freq_interval = 1, @active_start_time = 10000 請參見 修改和查看作業(yè) sp_delete_jobschedule sp_help_jobschedule sp_update_jobschedule 系統(tǒng)存儲過程
本站文章旨在為該問題提供解決思路及關鍵性代碼,并不能完成應該由網友自己完成的所有工作,請網友在仔細看文章并理解思路的基礎上舉一反三、靈活運用。
- sql server代理中作業(yè)執(zhí)行SSIS包失敗的解決辦法
- SQL Server 2012 創(chuàng)建定時作業(yè)(圖文并茂,教你輕松快速創(chuàng)建)
- SQL Server 作業(yè)的備份(備份作業(yè)非備份數(shù)據(jù)庫)
- SQL Server 作業(yè)同步 (結合備份作業(yè))
- SQLServer2005創(chuàng)建定時作業(yè)任務
- SQL Server 2005作業(yè)設置定時任務
- sql server定時作業(yè)調用Kettle job出錯的快速解決方法
- SQL Server Alwayson創(chuàng)建代理作業(yè)的注意事項詳解
- SQL Server作業(yè)報錯特殊案例分析
相關文章
SQL Server 聚焦存儲過程性能優(yōu)化、數(shù)據(jù)壓縮和頁壓縮提高IO性能方法(一)
這篇文章主要介紹了SQL Server 聚焦存儲過程性能優(yōu)化、數(shù)據(jù)壓縮和頁壓縮提高IO性能方法(一),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02在SQL Server 2005中創(chuàng)建CLR存儲過程的詳細介紹
本篇文章是對在SQL Server 2005中創(chuàng)建CLR存儲過程進行了詳細的分析介紹,需要的朋友參考下2013-06-06SQL Server中聚合歷史備份信息對比數(shù)據(jù)庫增長的方法
這篇文章主要介紹了SQL Server中聚合歷史備份信息對比數(shù)據(jù)庫增長的方法,需要的朋友可以參考下2014-09-09SQL Server創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表的相關約束實現(xiàn)方法
這篇文章主要介紹了SQL Server創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表的相關約束實現(xiàn)方法,以實例形式較為詳細的分析講述了數(shù)據(jù)庫約束的概念、功能、注意事項與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11在SQL Server數(shù)據(jù)庫中為標識(IDENTITY)列插入顯式值
SQL Server中的標識列和ACCESS中的“自動編號”相似,都是插入記錄的時候自動生成,一般不允許也不需要我們去手動修改它2007-02-02SQL語句實現(xiàn)查詢并自動創(chuàng)建Missing Index
這篇文章主要介紹了SQL語句實現(xiàn)查詢并自動創(chuàng)建Missing Index,本文直接給出SQL實現(xiàn)腳本,需要的朋友可以參考下2015-07-07