Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изпълнение на задание на SQL Server Agent от съхранена процедура и връщане на резултат от заданието

За всички вас, на които не е позволено за да използвате OPENROWSET команда, това може да помогне. Намерих началото на моето решение тук:

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

Това се основава на факта, че някои колони на 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. Избрах да запазя тази част извън примера.

Ръководство на Microsoft за кодове за изход и др.:http://technet.microsoft.com /en-us/library/ms174997.aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:+(унарен) оператор върху нечислови низове

  2. Разрешението SELECT беше отказано на обекта „Адрес“, база данни „CNET_85731“, схема „dbo“

  3. Свържете се с базата данни MSSQL с помощта на Flask-SQLAlchemy

  4. Задайте вход на потребител, създаден без вход (SQL Server)

  5. Създайте изглед с клауза ORDER BY