Tôi đang tìm cách để tìm hiểu khi Windows Server được khởi động lần cuối chỉ bằng các lệnh t-sql.
Tôi đang cố gắng duy trì các cấu hình bảo mật mặc định (nghĩa là tôi không muốn bật xp_cmdshell)
Tôi đang tìm cách để tìm hiểu khi Windows Server được khởi động lần cuối chỉ bằng các lệnh t-sql.
Tôi đang cố gắng duy trì các cấu hình bảo mật mặc định (nghĩa là tôi không muốn bật xp_cmdshell)
Câu trả lời:
Bạn có thể sử dụng ms_tickscột từ sys.dm_os_sys_info. Đây là số mili giây kể từ khi máy tính được khởi động.
SELECT DATEADD(SECOND, (ms_ticks/1000)*(-1), GETDATE())
FROM sys.dm_os_sys_info
Sẽ giúp bạn có được thông tin này.
Một cách khác sys.dm_os_sys_infolà sử dụng
sys.dm_io_virtual_file_stats -> cột sample_ms -> Số mili giây kể từ khi máy tính được khởi động
-- find windows server restart date:
SELECT DATEADD(ms,-sample_ms,GETDATE() )AS StartTime
FROM sys.dm_io_virtual_file_stats(1,1);
sample_mscột âm trong DMV (loại bỏ dấu âm cho tôi câu trả lời đúng). Tôi đã thử 3 máy chủ khác và mã vẫn hoạt động tốt. Hấp dẫn.
Có lẽ bạn nên sử dụng Powershell thay vì T-SQL để xây dựng bất cứ điều gì bạn đang sử dụng thông tin này cho? Xem Nhà cung cấp Powershell của SQL Server trên MSDN để biết thêm thông tin.
Bạn có thể sử dụng SQLPS để thực hiện bất kỳ truy vấn cơ sở dữ liệu nào bạn cần, trong khi vẫn sử dụng PowerShell để truy cập tất cả các đối tượng WMI mà bạn có thể cần.