आप सभी लोगों के लिए जिन्हें अनुमति नहीं है OPENROWSET . का उपयोग करने के लिए आदेश, यह मदद कर सकता है। मुझे अपने समाधान की शुरुआत यहां मिली:
यह इस तथ्य पर निर्भर करता है कि msdb.dbo.sysjobactivity . के कुछ कॉलम किसी न किसी तरह से कार्य समाप्त होने के बाद तालिका पहले पॉप्युलेट हो जाती है।
-- Start job
DECLARE @job_name NVARCHAR(MAX) = 'JobName'
EXEC msdb.dbo.sp_start_job @job_name = @job_name
-- Wait for job to finish
DECLARE @job_history_id AS INT = NULL
WHILE @time_constraint = @ok
BEGIN
SELECT TOP 1 @job_history_id = activity.job_history_id
FROM msdb.dbo.sysjobs jobs
INNER JOIN msdb.dbo.sysjobactivity activity ON activity.job_id = jobs.job_id
WHERE jobs.name = @job_name
ORDER BY activity.start_execution_date DESC
IF @job_history_id IS NULL
BEGIN
WAITFOR DELAY '00:00:10'
CONTINUE
END
ELSE
BREAK
END
-- Check exit code
SELECT history.run_status
FROM msdb.dbo.sysjobhistory history
WHERE history.instance_id = @job_history_id
WHILE-loop को कितने समय तक चलने की अनुमति है, इसके लिए आप कुछ जांच कर सकते हैं। मैंने उस हिस्से को उदाहरण से बाहर रखना चुना।
निकास कोड आदि के लिए Microsoft मार्गदर्शन:http://technet.microsoft.com /en-us/library/ms174997.aspx