SQL Server如何查看SQL Server服務啟動時間
2023-01-11 10:11 瀟湘隱者 閱讀(1726) 評論(0) 收藏 舉報SQL Server數據庫中,我們想查看SQL Server實例的啟動時間以及SQL Server Agent服務的啟動時間,有哪一些方法和技巧呢? 下面總結一些查看SQL Server實例和SQL Server Agent服務啟動時間的方法。
查看SQL Server實例啟動時間
如果要查詢SQL Server實例的啟動時間,我們可以使用下面多種方法去查看。有些方法有條件限制,僅供參考。
方法1:
通過查看系統動態管理視圖sys.dm_server_services, 這個視圖中,有個字段last_startup_time表示上次啟動服務的日期和時間。
SELECT servicename ,
process_id ,
startup_type_desc ,
status_desc ,
last_startup_time ,
service_account ,
is_clustered ,
cluster_nodename ,
[filename]
FROM sys.dm_server_services WITH ( NOLOCK )
OPTION ( RECOMPILE );
方法2:
SQL Server服務每次啟動的時候,都會重新創建tempdb數據庫,所以可以根據tempdb數據庫的創建時間來判斷SQL Server實例的啟動時間
--系統數據庫tempdb創建的時間
SELECT CREATE_DATE AS StartDateTime
FROM sys.databases
WHERE NAME='tempdb'
方法3:
通過查看系統兼容性視圖master..sysprocesses獲取SQL Server服務啟動時間,會話ID為的1會話是SQL Server服務啟動時創建的。
SELECT CONVERT(VARCHAR(30), LOGIN_TIME,120) AS StartDateTime
FROM master..sysprocesses WHERE spid=1;
方法4:
通過查看DMV視圖sys.dm_os_sys_info獲取, 這個動態管理視圖中的字段sqlserver_start_time 表示SQL Server上次啟動時的日期和時間
SELECT sqlserver_start_time AS StartDateTime
FROM sys.dm_os_sys_info
方法5:
通過查看DMV sys.dm_exec_requests獲取 。會話ID為1的會話是SQL Server啟動時創建的。它的start_time(請求到達時的時間戳)可以判定SQL Server服務啟動的時間。
SELECT start_time AS StartDateTime
FROM sys.dm_exec_requests WHERE session_id = 1
方法6:
通過查看sys.traces 目錄視圖。該目錄視圖包含當前在系統中運行的跟蹤信息。
SELECT start_time AS StartDateTime
FROM sys.traces
WHERE is_default=1;
方法7:
這個方法僅供參考,它能查詢出SQL Server實例啟動時間是有條件的,除非從數據庫實例啟動后,你的錯誤日志就沒有變動過,如果錯誤日志文件被刪除或覆蓋,這個腳本根本無法查出數據。當然,如果SQL Server啟動時的錯誤日志還在的話,你也可以從錯誤日志中找出SQL Server實例啟動的時間。
use master
go
EXEC xp_ReadErrorLog 0, 1, N'SQL',N'Starting'
查看SQL Server Agent的啟動時間
方法1:
通過查看系統動態管理視圖sys.dm_server_services, 這個時視圖中,有個字段last_startup_time表示上次啟動服務的日期和時間。
SELECT servicename ,
process_id ,
startup_type_desc ,
status_desc ,
last_startup_time ,
service_account ,
is_clustered ,
cluster_nodename ,
[filename]
FROM sys.dm_server_services WITH ( NOLOCK )
OPTION ( RECOMPILE );
注意,有些SQL Server環境由于沒有更新補丁或Bug緣故,SQL Server 代理 (MSSQLSERVER)的last_startup_time總是為null,那么這種方法可能不能找出SQL Server Agent服務的啟動時間。如下圖所示:

方法2:
SELECT program_name
,login_time AS SQLAgent_StartTime
FROM sys.sysprocesses
WHERE program_name LIKE 'SQLAgent - Generic Refresher%';

浙公網安備 33010602011771號