sqlserver数据库异步处理的存储过程

CREATE Procedure AsynchronousInvoking
 @EXECSQL nvarchar(4000)
AS

BEGIN TRANSACTION           
  DECLARE @JobID BINARY(16) 
  DECLARE @ReturnCode INT   
  SELECT @ReturnCode = 0    

BEGIN

  EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT ,
     @job_name = N'temp_sqljob',
     @owner_login_name = N'',
     @description = N'description for job',
     @category_name = N'[Uncategorized (Local)]',
     @enabled = 1,
     @notify_level_email = 0,
     @notify_level_page = 0,
     @notify_level_netsend = 0,
     @notify_level_eventlog = 0,
     @delete_level= 3
    
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback


  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
     @step_id = 1,
     @step_name = N'step1',
     @command = @EXECSQL,
     @database_name = N'master',
     @server = N'',
     @database_user_name = N'',
     @subsystem = N'TSQL',
     @cmdexec_success_code = 0,
     @flags = 0,
     @retry_attempts = 0,
     @retry_interval = 0,
     @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_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) BEGIN
    ROLLBACK TRANSACTION
    RETURN 1
  END
EndSave:

EXEC @ReturnCode = msdb.dbo.sp_start_job @job_id = @JobID
 
RETURN @ReturnCode


GO
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值