我想如果可以从长的SQL服务器是如何被运行SQL Server内锻炼身体。
想结合的DMV对未使用的指标之一使用,但柜台重新设置每次SQL服务器的负载,所以我想知道他们会多么有用是。
我想如果可以从长的SQL服务器是如何被运行SQL Server内锻炼身体。
想结合的DMV对未使用的指标之一使用,但柜台重新设置每次SQL服务器的负载,所以我想知道他们会多么有用是。
SELECT
login_time
FROM
sys.dm_exec_sessions
WHERE
session_id = 1
会给你一个datetime
在服务器启动的。
为了得到它编程,你可以运行此脚本。 它会检查你的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服务器已经运行
SELECT crdate FROM sysdatabases WHERE [name] = 'tempdb'
上述将SQL Server 2000中,2005年和2008年的工作。
逻辑是,从上面的SQL结果返回tempdb数据库,SQL Server所再现每次重新启动时的创建日期。 因此,tempdb的创建日期是服务器的启动时间。
抓住这里
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
这个简单的查询工作的SQL Server 2005以及近期的前版本:
SELECT
crdate AS startup,
DATEDIFF(s, crdate, GETDATE()) / 3600. / 24 AS uptime_days
FROM master..sysdatabases
WHERE name = 'tempdb'