Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Batas Waktu Pekerjaan Agen Server SQL

Kami melakukan sesuatu seperti kode di bawah ini sebagai bagian dari subsistem pemrosesan pekerjaan malam - ini lebih rumit daripada yang sebenarnya; misalnya kita memproses beberapa kumpulan tugas yang saling bergantung, dan membaca nama tugas dan nilai batas waktu dari tabel konfigurasi - tetapi ini menangkap idenya:

    DECLARE @JobToRun NVARCHAR(128) = 'My Agent Job'
DECLARE @dtStart DATETIME = GETDATE(), @dtCurr DATETIME
DECLARE @ExecutionStatus INT, @LastRunOutcome INT, @MaxTimeExceeded BIT = 0
DECLARE @TimeoutMinutes INT = 180 

EXEC msdb.dbo.sp_start_job @JobToRun
SET @dtCurr = GETDATE()
WHILE 1=1
BEGIN
    WAITFOR DELAY '00:00:10'
    SELECT @ExecutionStatus=current_execution_status, @LastRunOutcome=last_run_outcome 
    FROM OPENQUERY(LocalServer, 'set fmtonly off; exec msdb.dbo.sp_help_job') where [name] = @JobToRun
    IF @ExecutionStatus <> 4
    BEGIN -- job is running or finishing (not idle)
        SET @dtCurr=GETDATE()
        IF DATEDIFF(mi, @dtStart, @dtCurr) > @TimeoutMinutes
        BEGIN   
            EXEC msdb.dbo.sp_stop_job @[email protected]                   
            -- could log info, raise error, send email etc here
        END
        ELSE
        BEGIN
            CONTINUE
        END
    END
    IF @LastRunOutcome = 1  -- the job just finished with success flag
    BEGIN
        -- job succeeded, do whatever is needed here
        print 'job succeeded'                                   
    END

END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Deklarasikan Variabel untuk String Kueri

  2. Varchar tidak valid untuk operator Sum

  3. Bagaimana cara menghapus 1000 baris teratas dari tabel menggunakan Sql Server 2008?

  4. Bagaimana cara membuat pernyataan SQL dengan menggunakan ID yang mungkin tidak tersedia di tabel?

  5. Metode paling efisien untuk mendeteksi perubahan kolom di MS SQL Server