sql >> Databáze >  >> RDS >> Sqlserver

Spuštění úlohy SQL Server Agent z uložené procedury a vrácení výsledku úlohy

Pro všechny, kteří nemáte povoleno k použití OPENROWSET příkaz, to by mohlo pomoci. Zde jsem našel začátek svého řešení:

http://social.msdn.microsoft.com/Forums/en-US/89659729-fea8-4df0-8057-79e0a437b658/dynamically-checking-job-status-with-tsql

To závisí na skutečnosti, že některé sloupce msdb.dbo.sysjobactivity tabulka se nejprve vyplní po dokončení úlohy jedním nebo druhým způsobem.

-- 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

Možná budete chtít provést nějaké kontroly, jak dlouho může smyčka WHILE běžet. Rozhodl jsem se ponechat tuto část z příkladu.

Pokyny společnosti Microsoft pro ukončovací kódy atd.:http://technet.microsoft.com /en-us/library/ms174997.aspx



  1. Změňte stůl bez uzamčení celého stolu

  2. Připojení k serveru SQL pomocí ověřování systému Windows

  3. sql dotaz s příkazem if

  4. Databáze není během migrace nakonfigurována laravel