SQL SERVER數據庫的功課的劇本及存儲進程。本站提示廣大學習愛好者:(SQL SERVER數據庫的功課的劇本及存儲進程)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL SERVER數據庫的功課的劇本及存儲進程正文
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
用體系存儲進程去創立功課,代碼以下:
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 -- 檢討此功課能否為多重辦事器功課 IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0))) BEGIN -- 曾經存在,因此終止劇本 RAISERROR (N'沒法導入功課“access911_每2周備份一次”,由於曾經有雷同稱號的多重辦事器功課。', 16, 1) GOTO QuitWithRollback END ELSE -- 刪除[當地]功課 EXECUTE msdb.dbo.sp_delete_job @job_name = N'access911_每2周備份一次' SELECT @JobID = NULL END BEGIN -- 添加功課 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 -- 添加功課步調 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 -- 添加功課調劑 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 創立功課調劑。 語法 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 ] 參數 [ @jobid = ] job_id 將向個中添加調劑的功課的功課標識號。job_id 的數據類型為 uniqueidentifier,默許設置為 NULL。 [ @job_name = ] 'job_name' 功課的稱號,調劑即添加到該功課中。job_name 的數據類型為 sysname,默許設置為 NULL。 解釋 必需指定 job_id 或 job_name,但不克不及兩個都指定。 [ @name = ] 'name' 調劑的稱號。name 的數據類型為 sysname,沒有默許設置。 [ @enabled = ] enabled 指明調劑確當前狀況。enabled 的數據類型為 tinyint,默許設置為 1(啟用)。假如為 0,則不啟用調劑。禁用該調劑時,不運轉功課。 [ @freq_type = ] freq_type 用於指明什麼時候將履行功課的值。freq_type 的數據類型為 int,默許設置為 0,可所以以下值之一。 值 描寫 1 一次 4 天天 8 每周 16 每個月 32 每個月,與 freq interval 相干 64 當 SQLServerAgent 辦事啟動時運轉 128 盤算機余暇時運轉 [ @freq_interval = ] freq_interval 功課履行的天數。freq_interval 的數據類型為 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 功課每次履行之間要湧現的 freq_subday_type 周期數。freq_subday_interval 的數據類型為 int,默許設置為 0。 [ @freq_relative_interval = ] freq_relative_interval 假如 freq_interval 是 32(每個月絕對),則為每個月中已調劑功課的 freq_interval 的產生情形。freq_relative_interval 的數據類型為 int,默許設置為 0,可所以以下值之一。 值 描寫(單元) 1 第一頁 2 秒 4 第三個 8 第四個 16 最初一頁 [ @freq_recurrence_factor = ] freq_recurrence_factor 功課的已調劑履行之間的周數或月數。只要當 freq_type 是 8、16 或 32 時,才應用 freq_recurrence_factor。freq_recurrence_factor 的數據類型為 int,默許設置為 0。 [ @active_start_date = ] active_start_date 功課可開端履行的日期。active_start_date 的數據類型為 int,默許設置為 NULL,該值表現當天的日期。日期的格局為 YYYYMMDD。假如 active_start_date 不為 NULL,則日期必需年夜於或等於 19900101。 [ @active_end_date = ] active_end_date 功課可停滯履行的日期。active_end_date 的數據類型為 int,默許設置為 99991231,該值表現 9999 年 12 月 31 日。格局為 YYYYMMDD。 [ @active_start_time = ] active_start_time 在 active_start_date 和 active_end_date 之間的任何一天開端履行功課的時光。active_start_time 的數據類型為 int,默許設置為 000000,該值表現 24 小時制的上午 12:00:00,而且必需應用格局 HHMMSS 停止輸出。 [ @active_end_time = ] active_end_time 在 active_start_date 和 active_end_date 之間的任何一天停滯履行功課的時光。active_end_time 的數據類型為 int,默許設置為 235959,該值表現 24 小時制的下晝 11:59:59,而且必需應用格局 HHMMSS 停止輸出。 前往代碼值 0(勝利)或 1(掉敗) 成果集 無 正文 SQL Server 企業治理器供給易於應用的圖形辦法來治理功課,建議應用該辦法創立和治理功課根本構造。 權限 履行權限默許授與 public 腳色。 示例 此示例假定曾經創立用來備份數據庫的 NightlyBackup 功課。它將功課添加到名為 ScheduledBackup 的調劑中,而且在天天上午 1:00 履行。 USE msdb EXEC sp_add_jobschedule @job_name = 'NightlyBackup', @name = 'ScheduledBackup', @freq_type = 4, -- daily @freq_interval = 1, @active_start_time = 10000 請拜見 修正和檢查功課 sp_delete_jobschedule sp_help_jobschedule sp_update_jobschedule 體系存儲進程
本站文章旨在為該成績供給處理思緒及症結性代碼,其實不能完成應當由網友本身完成的一切任務,請網友在細心看文章並懂得思緒的基本上觸類旁通、靈巧應用。