win2008
sqlserver2008
我需要在sqlserver2008的 查询分析器里执行1个 windows 命令
wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value
FreeSpace=16668078080
Size=31453437952(我知道 oracle  mysql 是在控制台 都可以执行外部的 os 命令的)
我查询分析器里测试发现错误 
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'where'.1 这里想知道有没有其他方法 可以在 sqlserver agent的 job 里执行这个命令 得到  2个 返回值 
16668078080 31453437952 我需要得到2个值之后 做计算 之后根据结果 之后发邮件 提示磁盘空间不足报警邮件
2 或者有没有什么windows脚本方法  直接把 6668078080   和 31453437952的值  如何从上面的命令里取到 
之后计算,windows脚本如何发邮件(job一直在用的)?  

解决方案 »

  1.   

    1.先建一个表tableA,大概字段deviceID, freespace,totalspace,etc
    2.ps脚本 [String] $strInsertSql=""
    $devices=Get-WmiObject -Class Win32_LogicalDisk -filter "DriveType=3" Foreach ($device in $devices) { 
    $strInsertSql = $strInsertSql + "insert tableA select '" 
    + $device.DeviceID.SubString(0,1) + "', " + $device.Size/1024 + ", " + $device.FreeSpace/1024  }
    $strInsertSql
    Invoke-Sqlcmd -Query $strInsertSql -ServerInstance $inventoryServer -Database $inventoryDatabase3.在job中定期运行这个脚本,脚本要修改的,大体差不多了
    4.job中写sql查表计算,不符合条件直接发邮件,或者直接写ps脚本连邮件一起发了。