2017-03-09 41 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

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