存储过程先返回结果,再后台执行
我有个存储过程,执行时间可能要很久。我不想一直等下去,有没有办法,先返回结果给客户端。
我考虑过,客户端调用存储过程A建立作业,启动作业。然后这个作业去执行存储过程B。
B就是我们那个执行时间比较久的存储过程。
不知道这样能实现吗?或者有什么其他的方法?
[解决办法]
--1.新建作业 --> 作业步骤 --> 作业调度 --> 作业服务器
declare @jobname sysname,@db_name sysname
select @jobname = 'job_update_sql',
@db_name = db_name()
--1.1创建作业
exec msdb..sp_add_job
@job_name=@jobname
--1.2创建作业步骤
exec msdb..sp_add_jobstep
@job_name=@jobname,
@step_name = N'数据处理',
@subsystem = N'TSQL',
@database_name=@db_name,
@command = N'Exec 你的存储过程',
@retry_attempts = 1,
@retry_interval = 1
--1.3添加作业步骤,每天8点运行一次
EXEC msdb..sp_add_jobschedule
@job_name=@jobname,
@name = N'job_update_sql作业运行时间',
@freq_type=4 , --间隔为每天
@freq_interval=1,
@active_start_time=200000 --8点
--1.4添加目标服务器
EXEC msdb.dbo.sp_add_jobserver
@job_name = @jobname ,
@server_name = @@servername --@@servername 这个函数的返回值不一定准确