Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server Agent Hết thời gian chờ công việc

Chúng tôi thực hiện một cái gì đó giống như đoạn mã dưới đây như một phần của hệ thống con xử lý công việc hàng đêm - nó phức tạp hơn so với thực tế; ví dụ:chúng tôi đang xử lý nhiều nhóm công việc phụ thuộc lẫn nhau và đọc tên công việc và giá trị thời gian chờ từ bảng cấu hình - nhưng điều này nắm bắt được ý tưởng:

    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. Làm cách nào để liệt kê các phiên bản sẵn có của Máy chủ SQL sử dụng SMO trong C #?

  2. Tại sao truy vấn này chậm lần đầu tiên sau khi tôi bắt đầu dịch vụ?

  3. Không thể tạo phiên bản của nhà cung cấp OLE DB Microsoft.Jet.OLEDB.4.0 cho máy chủ được liên kết rỗng

  4. Tổng số đang chạy SQL được nhóm theo ngày

  5. Cách chỉ định vị trí của tệp dữ liệu và tệp nhật ký khi tạo cơ sở dữ liệu trong SQL Server