Wie kann ich feststellen, wie lange bereits eine SQL Server 2005 Instanz läuft

Der Startzeitpunkt des MS SQL Servers steht im Fehlerprotokoll, in der untersten Zeile, des Servers.

Da der MS SQL Server beim Starten für interne Prozesse auch einige Verbindungen verwendet und diese mit der Session_ID=1 initialisiert werden, kann man folgendes Script anwenden:

DECLARE @elapsed_time AS DATETIME, @lr_start_time AS DATETIME

SELECT @lr_start_time = (SELECT last_request_start_time FROM sys.dm_exec_sessions WHERE session_id=1)
SELECT @elapsed_time = GETDATE()- @lr_start_time

SELECT	DATEDIFF(day,0,@elapsed_time) AS 'TAGE', 
	DATEPART(hour,@elapsed_time) AS 'STUNDEN',
	DATEPART(minute,@elapsed_time) AS 'MINUTEN',
	DATEPART(second,@elapsed_time) AS 'SEKUNDEN',
	DATEPART(millisecond,@elapsed_time) AS 'MILLISEKUNDEN'

CU
Torsten Schuessler

AnhangGröße
query_sys_dm_exec_sessions.txt1.01 KB
Average: 5 (1 Wertung)

Ebis
Als View wärs prkatischer:

CREATE VIEW [dbo].[Uptime] AS
SELECT DATEDIFF(day, 0, elapsed_time) AS TAGE
, DATEPART(hour, elapsed_time) AS STUNDEN
, DATEPART(minute, elapsed_time) AS MINUTEN
, DATEPART(second, elapsed_time) AS SEKUNDEN
, DATEPART(millisecond, elapsed_time) AS MILLISEKUNDEN
FROM (SELECT GETDATE() - last_request_start_time AS elapsed_time
FROM master.sys.dm_exec_sessions
WHERE session_id = 1
) AS X

Hallo Ebis,

warum wäre es praktischer? Ist dieses kleine TSQL-Statement es wert eine Sicht zu erstellen?

CU
tosc

Bis die Abfrage eingeben ist, die man dann auch nicht im Kopf hat, wenn man sie braucht...
an Uptime erinnert man sich schon mal eher (jedenfalls geht es mir so) oder man kann Sie halt unter den eigenen Sichten schnell finden

Ebis

hm, jeder so wie er will und kann - tendenziell würde ich eher solche Scripte im Projektmappen-Explorer verbannen.
Auf einem Produktiv-System - haben solche Views, auch wenn es Admin/DBA-Views sind - meines Erachtens nichts zu suchen.

CU
tosc