Hits: 2071
錯誤情境
公司的機房因為冷氣壞掉,導致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
Comments