System driver detected that can cause stability problems for SQL Server

AK85445.BadHPSystemDriver (UnitMonitor)

Knowledge Base article:

External

http://go.microsoft.com/fwlink/?LinkId=199782

Element properties:

TargetMicrosoft.KnowledgeServices.Windows.OperatingSystem
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.KnowledgeServices.Library.ScriptMonitorEx
RemotableTrue
AccessibilityPublic
Alert Message
System driver detected that can cause stability problems for SQL Server

<Details>
<Content>There is a system driver used for storage on your system that can cause stability problems for SQL Server, such as database consistency errors, and STOP errors for Windows. Upgrade the driver from the manufacturer as soon as possible.</Content>
<CollectedInformation>
<Info>
<Name>System driver name</Name>
<Value>{0}</Value>
</Info>
<Info>
<Name>System driver vendor</Name>
<Value>HP</Value>
</Info>
<Info>
<Name>System driver version</Name>
<Value>{1}</Value>
</Info>
<Info>
<Name>System driver version to upgrade to</Name>
<Value>6.14.0.32</Value>
</Info>
</CollectedInformation>
</Details>
RunAsDefault
CommentSupportTopic=Administration\Disaster Recovery, Backup/Restore, Attach/Detach, DB corruption;VersionNumber=1.0.0.2;

Source Code:

<UnitMonitor ID="AK85445.BadHPSystemDriver" Comment="SupportTopic=Administration\Disaster Recovery, Backup/Restore, Attach/Detach,  DB corruption;VersionNumber=1.0.0.2;" Accessibility="Public" Enabled="true" Target="MicrosoftKnowledgeServicesWindowsLibrary!Microsoft.KnowledgeServices.Windows.OperatingSystem" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="KnowledgeServicesLibrary!Microsoft.KnowledgeServices.Library.ScriptMonitorEx" ConfirmDelivery="true">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="AlertMessageID368fd0155f80469884491abfc7b8c846">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='DriverFileName']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='DriverVersion']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ScriptName>detectBadDriver.vbs</ScriptName>
<Arguments/>
<ScriptBody><Script>
'Copyright (c) Microsoft Corporation. All rights reserved.
' This script takes no parameters
' retuns the bad driver information if found
Option Explicit

Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()

Dim fileSys
Set fileSys = CreateObject("Scripting.FileSystemObject")

'get the system folder to System32 and SysWOW64
Dim sysFolder, file, filename
sysFolder = fileSys.GetAbsolutePathName(fileSys.GetSpecialFolder(1) + "\drivers")

filename = sysFolder + "\HPCISSS2.SYS"
if fileSys.FileExists(filename) Then
file = fileSys.GetFile(filename)
Call oBag.AddValue("DriverFileName", CSTR(file))
Else
Call oBag.AddValue("BadDriver", 0)
Call oAPI.Return(oBag)
WScript.Quit()
End If

'Check that the version is above 6.14.0.32
Dim fileVer
fileVer = fileSys.GetFileVersion(file)
Call oBag.AddValue("DriverVersion", CSTR(fileVer))
if Len(fileVer) = 0 Then
'This is unexpected
WScript.Quit -1
End If

Dim versionTokens, majorVersion, minorVersion, buildVersion, buildRevision
versionTokens = Split(fileVer, "." , -1, 1)

majorVersion = versionTokens(0)
minorVersion = versionTokens(1)
buildVersion = versionTokens(2)
buildRevision = versionTokens(3)

Dim BadDriverVersion
BadDriverVersion = false
if (majorVersion &lt; 6) Then
BadDriverVersion = true
End If

if (majorVersion = 6) Then
if (minorVersion &lt; 14) Then
BadDriverVersion = true
End If

if (minorVersion = 14) and (buildVersion = 0) and (buildRevision &lt; 32) Then
BadDriverVersion = true
End If
End If

if BadDriverVersion Then
Call oBag.AddValue("BadDriver", 1)
else
Call oBag.AddValue("BadDriver", 0)
End If

Call oAPI.Return(oBag)
</Script></ScriptBody>
<TimeoutSeconds>30</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='BadDriver']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<Not>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='BadDriver']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Not>
</SuccessExpression>
<Schedule>86401</Schedule>
</Configuration>
</UnitMonitor>