当前位置: 代码迷 >> SQL >> T-SQL创办SQLServer作业
  详细解决方案

T-SQL创办SQLServer作业

热度:50   发布时间:2016-05-05 09:55:52.0
T-SQL创建SQLServer作业
-- =============================================-- Author:Czhipu-- CreateDate:2014-10-15-- Description:<Description, 竞猜作业>-- =============================================-- 新建作业分类 Mall_MONITORINGEXEC msdb.dbo.sp_add_category    @class=N'JOB',    @type=N'LOCAL',    @name=N'Mall_MONITORING' ;GO-- 删除作业分类EXEC msdb.dbo.sp_delete_category    @name = N'Mall_MONITORING',    @class = N'JOB' ;GO-- 修改作业分类EXEC msdb.dbo.sp_update_category    @class = N'JOB',    @name = N'Mall_MONITORING1',    @new_name = N'Mall_MONITORING' ;GO-- 查看作业分类SELECT * FROM msdb.dbo.syscategories WHERE NAME='Mall_MONITORING'-- 新建作业/*1. 执行 sp_add_job 来创建作业。2. 执行 sp_add_jobstep 来创建一个或多个作业步骤。3. 执行 sp_add_schedule 来创建计划。4. 执行 sp_attach_schedule 将计划附加到作业。5. 执行 sp_add_jobserver 来设置作业的服务器。*/USE [TestDB]GO SELECT * FROM  msdb.dbo.sysjobs_view /****** Object:  Job [JOB_CLEAR_GUESS]    Script Date: 10/15/2014 15:25:09 ******/IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'JOB_CLEAR_GUESS')EXEC msdb.dbo.sp_delete_job @job_id=N'a5dff08b-95f8-498e-a6c9-59241fe197b4', @delete_unused_schedule=1GO USE [msdb]GO /****** Object:  Job [JOB_CLEAR_GUESS]    Script Date: 10/15/2014 15:25:09 ******/BEGIN TRANSACTIONDECLARE @ReturnCode INTSELECT @ReturnCode = 0/****** Object:  Job [JOB_CLEAR_GUESS]    Script Date: 10/15/2014 15:25:09 ******/IF NOT EXISTS(SELECT name FROM msdb.dbo.syscategories WHERE name=N'Mall_MONITORING' AND category_class=1)BEGINEXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Mall_MONITORING'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16)EXEC @ReturnCode =msdb.dbo.sp_add_job @job_name=N'JOB_CLEAR_GUESS',    @enabled=1,    @notify_level_eventlog=0,    @notify_level_email=0,    @notify_level_netsend=0,    @notify_level_page=0,    @delete_level=0,    @description=N'每天执行EXEC JOB_CLEAR_GUESS 实现结算竞猜。',    @category_name=N'Mall_MONITORING',    @owner_login_name=N'sa', @job_id = @jobId OUTPUTIF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback/****** Object:  Step [Step 1: recycle the errorlog]    Script Date: 10/15/2014 15:25:09 ******/EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Step 1: recycle the errorlog',        @step_id=1,        @cmdexec_success_code=0,        @on_success_action=1,        @on_success_step_id=0,        @on_fail_action=2,        @on_fail_step_id=0,        @retry_attempts=0,        @retry_interval=0,        @os_run_priority=0, @subsystem=N'TSQL',        @command=N'exec msdb.dbo.sp_cycle_errorlog',        @database_name=N'msdb',        @flags=0IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackEXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackEXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Job Schedule',        @enabled=1,        @freq_type=4,                                        --指示作业执行时间的值(1:一次;4:每天;8:每周;16:每月)        @freq_interval=1,                                    --执行作业的日期(1:一次;4:每天;8:每周;16:每月)        @freq_subday_type=1,                                 --指定 frequency_subday_interval 的单位(4:分钟;8:小时)        @freq_subday_interval=0,                             --两次执行作业之间间隔的 frequency_subday_type 周期数        @freq_relative_interval=0,                            @freq_recurrence_factor=0,                           --作业执行计划之间相隔的周数或月数        @active_start_date=20130823,        @active_end_date=99991231,        @active_start_time=0,        @active_end_time=235959,        @schedule_uid=N'2099c694-cd26-4edf-8803-179227bf8770'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackEXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackCOMMIT TRANSACTIONGOTO EndSaveQuitWithRollback:    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTIONEndSave: GO-- 启动作业EXEC msdb.dbo.sp_start_job @job_name='JOB_CLEAR_GUESS'-- 停止作业EXEC msdb.dbo.sp_stop_job    @job_name='JOB_CLEAR_GUESS'-- 启用或禁用作业EXEC msdb.dbo.sp_update_job    @job_name = N'JOB_CLEAR_GUESS',    @enabled = 0 ;  --0 禁用作业、  1启用作业GO-- 删除作业EXEC msdb.dbo.sp_delete_job  @job_name = 'JOB_CLEAR_GUESS';

 

  相关解决方案