文档库 最新最全的文档下载
当前位置:文档库 › 定义异步调用存储过程的作业

定义异步调用存储过程的作业

定义异步调用存储过程的作业
定义异步调用存储过程的作业

CREATE PROCEDURE [dbo].[SP_JOB_LOADPORC]

@command nvarchar(4000), --异步调用的存储过程

@DataBaseName sysname=null, --在哪个数据库中执行作业步骤,默认在当前数据库中@jobdelay int=5, --当前时间后的多少秒钟执行,该值大于等于5

@jobid uniqueidentifier OUTPUT --定义的作业编号

AS

--作业名称,作业的执行时间

DECLARE @jobname sysname,@time int

SELECT @jobname=N'临时作业'

+N'_'+LEFT(HOST_NAME(),40)

+N'_'+CONVERT(CHAR(19),GETDATE(),120)

+N'_'+CAST(NEWID() AS VARCHAR(36)),

@jobdelay=CASE

WHEN ISNULL(@jobdelay,0)<5 THEN 5

ELSE @jobdelay+1 END,

@time=REPLACE(CONVERT(CHAR(8),

DATEADD(SECOND,@jobdelay,GETDATE()),

108),':','')

--数据库名

IF DB_ID(@DataBaseName) IS NULL

SET @DataBaseName=DB_NAME()

--检查是否存在同名作业,存在则删除

IF EXISTS(SELECT * FROM MSDB.DBO.sysjobs WHERE name=@jobname)

EXEC msdb..sp_delete_job @job_name=@jobname

--定义作业

EXEC msdb.DBO.sp_add_job

@job_name = @jobname,

@delete_level = 3, --作业执行后自动删除

@job_id = @jobid OUTPUT

--定义作业步骤

EXEC msdb.dbo.sp_add_jobstep

@job_id=@jobid,

@step_name=N'异步调用的存储过程',

@subsystem='TSQL',

@database_name=@DataBaseName,

@command=@command

--创建调度

EXEC msdb..sp_add_jobschedule

@job_id=@jobid,

@name=N'异步调用的存储过程',

@freq_type=1,

@active_start_time=@time

--添加目标服务器

DECLARE @servername sysname

SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName')) EXEC msdb.dbo.sp_add_jobserver

@job_id=@jobid,

@server_name=@servername

相关文档