2013-08-26 3 views
5

다른 저장 프로 시저에서 저장 프로 시저에 대한 비동기 호출을 만드는 방법은 무엇입니까?T-SQL의 비동기 저장 프로 시저 호출

두 개의 저장 프로 시저, SP1 및 SP2가 있다고 가정합니다.이 프로 시저는 장기 실행 저장 프로 시저이며 실행에 많은 시간이 소요되고 결과가 반환되지 않습니다.

저장 프로 시저 SP1

는 다음과 같이 정의된다 :

CREATE PROCEDURE SP1 
AS 
BEGIN 

    --custom business logic 

    --CALL to SP2, but async 

    EXEC SP2 

END 

방법이 아닌 차단/비동기 호출이 SQL 서버 2,012분의 2,008 위처럼 (SP)을 만들 수?

+1

서비스 브로커는 데이터 엔진에 내장 된 유일한 문 수준 비동기입니다 통과 매개 변수 버전입니다. SQL 에이전트가 있다고 생각하지만, 이와 같이 사용하기가 어렵습니다. – RBarryYoung

+0

[Asynchronous procedure execution] (http://rusanu.com/2009/08/05/asynchronous-procedure-execution/)을 참조하십시오. –

답변

4

일단 저장 프로 시저를 Job으로 래핑 한 다음 sp_start_job 시스템 sp를 통해 프로 시저에서 작업을 호출하여이 작업을 수행하려고했습니다.

EXEC dbo.sp_start_job N'Job name' ; 
+0

인수가없는 한 작동합니다. – RoastBeast

+1

당신이 sysadmin 인 한 작동합니다. –

0

인용문
한 인수가없는 한 작품. - 17시 반

에서 RoastBeast 12월 22일 '15 여기

declare @variable -- job name 
declare @command -- command 

set @command = 'select * from table where data='[email protected] 

exec msdb..sp_add_job 
@job_name [email protected], 
@enabled=1, 
@start_step_id=1, 
@delete_level=1 --Job will delete itself after success 

exec msdb..sp_add_jobstep 
@[email protected], 
@step_id=1, 
@step_name='step1', 
@[email protected] 

exec msdb..sp_add_jobserver 
@job_name = @variable, 
@server_name = 'yourserver' 

exec msdb..sp_start_job 
@[email protected]