So bestimmen Sie die Startzeit von Windows Server mithilfe von T-SQL

7

Ich suche nach einer Möglichkeit, herauszufinden, wann der Windows Server zuletzt nur mit t-sql-Befehlen gestartet wurde.

Ich versuche, innerhalb der Standardsicherheitskonfigurationen zu bleiben (dh ich möchte xp_cmdshell nicht aktivieren).

Datagod
quelle

Antworten:

10

Sie können die ms_ticksSpalte von verwenden sys.dm_os_sys_info. Dies ist die Anzahl der Millisekunden seit dem Start des Computers.

SELECT DATEADD(SECOND, (ms_ticks/1000)*(-1), GETDATE())
    FROM sys.dm_os_sys_info

Erhalten Sie diese Informationen.

Swasheck
quelle
1
@datagod Danke für die Bearbeitung. Guter Fang und Entschuldigung.
Swasheck
4

Ein anderer Weg sys.dm_os_sys_infoist die Verwendung

sys.dm_io_virtual_file_stats -> column sample_ms -> Anzahl der Millisekunden seit dem Start des Computers

-- find windows server restart date:

SELECT DATEADD(ms,-sample_ms,GETDATE() )AS StartTime
FROM sys.dm_io_virtual_file_stats(1,1);
Kin Shah
quelle
Ich habe diesen Code gerade auf meinem Computer ausgeführt und er gab mir ein Datum für die Zukunft - es sieht so aus, als ob die sample_msSpalte in der DMV negativ ist (das Entfernen des negativen Vorzeichens gab mir die richtige Antwort). Ich habe 3 andere Server ausprobiert und der Code funktioniert wie er ist in Ordnung. Interessant.
Jon Seigel
@ JonSeigel Interessant ... Ich habe es auf 5 verschiedenen Servern ausgeführt und die gleichen Ergebnisse erzielt. Keine Änderung des Codes. Funktioniert einwandfrei.
Kin Shah
2
Ah ich sehe. Die DMV gibt einen int-Wert zurück. Das bedeutet, dass der Wert alle ~ 25 Tage um +/- wechselt und alle ~ 50 umbrochen wird. Dies ist ein Fehler in der DMV - es sollte bigint zurückgeben. Dies wurde auch 2012 nicht behoben.
Jon Seigel
5
Fehler
Jon Seigel
@ JonSeigel Gutes Zeug. Vielen Dank für Ihren Blick.
Kin Shah
2

Vielleicht sollten Sie Powershell anstelle von T-SQL verwenden, um das zu erstellen, wofür Sie diese Informationen verwenden? Weitere Informationen finden Sie im SQL Server Powershell-Anbieter auf MSDN.

Sie können SQLPS verwenden, um alle erforderlichen Datenbankabfragen durchzuführen, während Sie weiterhin PowerShell verwenden, um auf alle WMI-Objekte zuzugreifen, die Sie jemals benötigen könnten.

Ozziemedes
quelle
Ich bin damit einverstanden, dass Powershell mächtig ist, aber eine steile Lernkurve hat. Nicht jeder Server hat es installiert. Das von mir verwendete SQL-Skript ist eine allgemeine Integritätsprüfung und wird auf einer Version ausgeführt, die bis zu SQL2000 zurückreicht. Es ist nett und einfach, bietet aber eine Menge Informationen für den DBA.
Datum