Für alle, die nicht erlaubt sind um das OPENROWSET zu verwenden Befehl, das könnte helfen. Den Anfang für meine Lösung habe ich hier gefunden:
Dies beruht auf der Tatsache, dass einige Spalten der msdb.dbo.sysjobactivity Die Tabelle wird erst gefüllt, nachdem der Job auf die eine oder andere Weise beendet wurde.
-- 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
Vielleicht möchten Sie überprüfen, wie lange die WHILE-Schleife laufen darf. Ich habe mich entschieden, diesen Teil aus dem Beispiel herauszuhalten.
Microsoft-Anleitung für Beendigungscodes usw.:http://technet.microsoft.com /en-us/library/ms174997.aspx