找出多久SQL Server服务已经运行,从T-SQL(Find out how long the

2019-07-29 04:17发布

我想如果可以从长的SQL服务器是如何被运行SQL Server内锻炼身体。

想结合的DMV对未使用的指标之一使用,但柜台重新设置每次SQL服务器的负载,所以我想知道他们会多么有用是。

Answer 1:

SELECT
    login_time
FROM
    sys.dm_exec_sessions
WHERE
    session_id = 1

会给你一个datetime在服务器启动的。



Answer 2:

为了得到它编程,你可以运行此脚本。 它会检查你的tempdb的创建时间,因为tempdb数据库被重新初始化每个SQL Server启动时间。

SELECT create_date 
FROM sys.databases 
WHERE name = 'tempdb'

为了使它更直观,可以在下方运行脚本,它会告诉你有多少天数和小时的Sql Server已被运行。 分秒信息将被截断。 如果你需要的是,修改脚本以自己得到它。

SELECT 'Sql Server Service has been running for about '
+ CAST((DATEDIFF(hh, create_date, GETDATE()))/24 AS varchar(3)) + ' days and '
+ CAST((DATEDIFF(hh, create_date, GETDATE())) % 24 AS varchar(2)) + ' hours'
FROM sys.databases 
WHERE name = 'tempdb'

来源: 多久SQL服务器已经运行



Answer 3:

SELECT crdate FROM sysdatabases WHERE [name] = 'tempdb'

上述将SQL Server 2000中,2005年和2008年的工作。

逻辑是,从上面的SQL结果返回tempdb数据库,SQL Server所再现每次重新启动时的创建日期。 因此,tempdb的创建日期是服务器的启动时间。



Answer 4:

抓住这里

USE Master
GO

SET NOCOUNT ON
DECLARE @crdate DATETIME, @hr VARCHAR(50), @min VARCHAR(5)
SELECT @crdate=crdate FROM sysdatabases WHERE NAME='tempdb'
SELECT @hr=(DATEDIFF ( mi, @crdate,GETDATE()))/60
IF ((DATEDIFF ( mi, @crdate,GETDATE()))/60)=0
SELECT @min=(DATEDIFF ( mi, @crdate,GETDATE()))
ELSE
SELECT @min=(DATEDIFF ( mi, @crdate,GETDATE()))-((DATEDIFF( mi, @crdate,GETDATE()))/60)*60
PRINT 'SQL Server "' + CONVERT(VARCHAR(20),SERVERPROPERTY('SERVERNAME'))+'" is Online for the past '+@hr+' hours & '+@min+' minutes'
IF NOT EXISTS (SELECT 1 FROM master.dbo.sysprocesses WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
PRINT 'SQL Server is running but SQL Server Agent <<NOT>> running'
END
ELSE BEGIN
PRINT 'SQL Server and SQL Server Agent both are running'
END


Answer 5:

这个简单的查询工作的SQL Server 2005以及近期的前版本:

SELECT
 crdate AS startup,
 DATEDIFF(s, crdate, GETDATE()) / 3600. / 24 AS uptime_days
FROM master..sysdatabases
WHERE name = 'tempdb'


文章来源: Find out how long the sql server service has been running, from t-sql