[DBA] SQL Server Agent啟動,但無法執行排程作業

點閱: 734

錯誤情境

公司的機房因為冷氣壞掉,導致server熱當機,公司的MIS手動將機器重開後,SQL Server相關的服務如SQL Server, SQL Server Agent, Reporting…等等,都有自動啟動,但是相關的自動排程作業卻都沒有執行,也沒有錯誤訊息紀錄在log裡。

錯誤訊息

[298] SQLServer 錯誤: 109,共用記憶體提供者: 管道已結束。 [SQLSTATE 08S01] (ConnCheckIfDBIsOnline)
[298] SQLServer 錯誤: 109,通訊連結失敗 [SQLSTATE 08S01] (ConnCheckIfDBIsOnline)
[298] SQLServer 錯誤: 16389,通訊連結失敗 [SQLSTATE 08S01] (ConnCheckIfDBIsOnline)
[393] 正在等候 SQL Server 復原資料庫 'msdb'...

硬體環境

描述一下發生問題的server環境

OS: Windows Server 2012 R2
SQL: Microsoft SQL Server 2012 - 11.0.5058.0 (X64)   May 14 2014 18:34:29   Copyright (c) Microsoft Corporation  Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor) 

WORKAROUND: 重啟 SQL Server Agent

搜尋了許多方案,最後參考這篇文章的作法,也就是進到server主機,把SQL Server Agent的服務重啟,就搞定了Orz|||

檢查SQL Server Agent的狀態

下列程式碼可以檢查SQL Server Agent的狀態,可以讓SQL Server定期的執行

IF EXISTS(
  SELECT 1
  FROM MASTER.dbo.sysprocesses
  WHERE program_name = N'SQLAgent - Generic Refresher'
)
BEGIN
  SELECT SERVERPROPERTY('ServerName') AS 'InstanceName', 'Running' AS 'SQLServerAgent Status'
  END
  ELSE
  BEGIN
  SELECT SERVERPROPERTY('ServerName') AS 'InstanceName', 'Stopped' AS 'SQLServerAgent Status'
END

若要直接在command prompt把SQL Server Agent叫起來,可用下列指令

NET START SQLSERVERAGENT

About the Author

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts