Antworten:
Sie können die ms_ticks
Spalte 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.
Ein anderer Weg sys.dm_os_sys_info
ist 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);
sample_ms
Spalte 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.
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.