Cách xác định thời gian bắt đầu Windows Server bằng T-SQL


7

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:


10

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.


1
@datagod Cảm ơn bạn đã chỉnh sửa. Bắt tốt và xin lỗi về điều đó.
swasheck

4

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);

Tôi vừa chạy mã này trên máy của mình và nó đã cho tôi một ngày trong tương lai - có vẻ như 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.
Jon Seigel

@JonSeigel Thú vị ... Tôi đã chạy nó trên 5 máy chủ khác nhau và tôi nhận được kết quả tương tự .. không thay đổi mã .. hoạt động hoàn toàn tốt.
Kin Shah

2
Ah tôi thấy. DMV trả về giá trị int. Điều đó có nghĩa là giá trị lật +/- cứ sau 25 ngày và kết thúc sau mỗi ~ 50. Đây là một lỗi trong DMV - nó sẽ trả về bigint. Điều này đã không được sửa chữa vào năm 2012.
Jon Seigel


@JonSeigel Thứ tốt. Cảm ơn đã xem xét.
Kin Shah

2

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.


Tôi đồng ý powershell là mạnh mẽ, nhưng có một đường cong học tập dốc. Không phải mọi máy chủ đều được cài đặt. Tập lệnh SQL tôi đang sử dụng là kiểm tra sức khỏe tổng quát và chạy trên phiên bản có từ SQL2000 trở lại. Nó là tốt đẹp và đơn giản nhưng cung cấp rất nhiều thông tin cho DBA.
datagod
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.