2017-03-09 69 views

回答

0

因爲你也勾選了SQL SERVER,我猜你可以對數據庫執行你的VB代碼。如果是這樣,你可以運行它(這會給你一些關於大小,延遲和平均傳輸的細節,但在你決定轉發這些數據之前,請閱讀關於源代碼的sys表(因爲這可能取決於你的SQL Server版本因爲某些數據可能會爲SQL Server只來計算,你可能還會發現你可能會感興趣的更多信息):

dm_io_virtual_file_stats

master_files

dm_os_volume_stats

WITH [RAW_INFO] AS 
(
    SELECT 
    [num_of_reads] = SUM(num_of_reads), 
    [io_stall_read_ms] = SUM(io_stall_read_ms), 
    [num_of_writes] = SUM(num_of_writes), 
    [io_stall_write_ms] = SUM(io_stall_write_ms), 
    [num_of_bytes_read] = SUM(num_of_bytes_read), 
    [num_of_bytes_written] = SUM(num_of_bytes_written), 
    [io_stall] = SUM(io_stall), 
    [Volume Mount Point] = vs.volume_mount_point, 
    [File System Format] = vs.file_system_type, 
    [Logical Name] = vs.logical_volume_name, 
    [Total Size (GB)] = CONVERT(DECIMAL(18,2),vs.total_bytes/1073741824.0), 
    [Free Space (GB)] = CONVERT(DECIMAL(18,2), vs.available_bytes/1073741824.0), 
    [Free Space (%)] = CONVERT(DECIMAL(18,2), vs.available_bytes * 1./vs.total_bytes * 100.0) 
    FROM sys.dm_io_virtual_file_stats(NULL, NULL) vfs 
    INNER JOIN sys.master_files mf WITH (NOLOCK)  ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id 
    CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.[file_id]) vs 
    GROUP BY LEFT(UPPER(mf.physical_name), 2), vs.volume_mount_point, 
    vs.file_system_type, vs.logical_volume_name, vs.total_bytes, vs.available_bytes 
    ) 
SELECT 
[Volume Mount Point], 
[Logical Name], 
[File System Format], 
[Total Size (GB)], 
[Free Space (GB)], 
[Free Space (%)], 
[Read Latency (ms)] = CASE WHEN num_of_reads <> 0 THEN (io_stall_read_ms/num_of_reads) END, 
[Write Latency (ms)] = CASE WHEN num_of_writes <> 0 THEN (io_stall_write_ms/num_of_writes) END, 
[Overall Latency (ms)] = CASE WHEN num_of_reads <> 0 AND num_of_writes <> 0 THEN (io_stall/(num_of_reads + num_of_writes)) END, 
[Avg Read (KB)] = CASE WHEN num_of_reads <> 0 THEN CAST(CAST(num_of_bytes_read as decimal)/ CAST((num_of_reads * 1024) as decimal) as decimal(8,2)) END, 
[Avg Write (KB)] = CASE WHEN num_of_writes <> 0 THEN CAST(CAST(num_of_bytes_written as decimal)/ CAST((num_of_writes * 1024) as decimal) as decimal(8,2)) END, 
[Avg Transfer (KB)] = CASE WHEN (num_of_reads <> 0 AND num_of_writes <> 0) THEN CAST(CAST(num_of_bytes_read + num_of_bytes_written as decimal)/ CAST((num_of_reads + num_of_writes * 1024) as decimal) as decimal(8,2)) END 
FROM [RAW_INFO] 
ORDER BY [Volume Mount Point]; 

This是一篇關於如何通過返回行的VB.NET執行SQL語句的文章。

+0

我的意思是,我想從我喜歡的溫度壞扇區的硬盤驅動器得到所有的信息和等 像hardwaremonitor,但我想從hardrive的更多細節,我沒有使用SQL Server 和抱歉,我的英語不好 –

+0

我只回答了,因爲您標記了SQL Server。如果這只是關於VB.NET嘗試[此鏈接](https://daran9.wordpress.com/2011/01/24/howto-get-harddisk-temperature-with-net)或[this one](https ://social.msdn.microsoft.com/Forums/vstudio/en-US/704db4ae-5646-4f59-b39b-241a666a5e0d/retrieving-hard-drive-temperature-smart?forum = vbgeneral)以及你的問題的答案您已收到[MSDN論壇](https://social.msdn.microsoft.com/Forums/zh-CN/76842db3-0746-4769-bf51-c6d129684b72/get-all-information-from-hard-disk-using -vbnet?forum = vbgeneral) –

+0

好的兄弟,但謝謝你的回答 –