SQL Server如何查看SQL Server服务启动时间

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,120AS 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 01, 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服务的启动时间。如下图所示:

SQL Server如何查看SQL Server服务启动时间

方法2:

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

SQL Server如何查看SQL Server服务启动时间


原文始发于微信公众号(DBA闲思杂想录):SQL Server如何查看SQL Server服务启动时间

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/227794.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!