I have seen in couple of Forum posts and in MS support cases where customer is having issues while dealing with SQL management pack workflows.

I will discuss the some of the tips and tricks which will help you to identify if we have any issues with the SQL workflows.

Firstly, we need to look at the event logs from the SQL server where we have seen the errors like following exceptions in the event logs.

 

Error 1:

--------- Exception: ----------
Exception Type: System.Exception
Message: Unable to execute query 'SELECT ServiceName, PropertyName, PropertyNumValue, PropertyStrValue FROM SqlServiceAdvancedProperty WHERE (PropertyName = 'ISWOW64' OR PropertyName = 'LANGUAGE' OR PropertyName = 'INSTANCEID' OR PropertyName = 'SPLEVEL' OR PropertyName = 'INSTALLPATH' OR PropertyName = 'ERRORREPORTING') AND SqlServiceType = 1' for the path '\\sqlcluster.lab.com\root\Microsoft\SqlServer\ComputerManagement11'. 32 bit: False. Error code: -2147217392. Error message: Invalid class
Source: Microsoft.SQLServer.Module4.Helper
Stack Trace:

Error 2:

Event ID: 7102. Management Group: SCOM-PROD. Script: DiscoverSQL2008MirroringWitness.vbs. Version: 7.0.15.0. Instance: MSSQLSERVER : Mirroring witness discovery script 'DiscoverSQL2008MirroringWitness.vbs' for SQL instance 'MSSQLSERVER' failed.
The next errors occurred:
Cannot get target instance machine's NetBios host name.
Computer name: SQLServer.domain.com
Error number: -2147217392
Error description:Invalid class

Error 3:

Event ID: 7103. Management Group: SCOM-prod. Script: DiscoverSQL2012MirroringWitness.vbs. Version: 7.0.15.0. Instance: MSSQLSERVER : Mirroring witness discovery script 'DiscoverSQL2012MirroringWitness.vbs' for SQL instance 'MSSQLSERVER' failed.
The next errors occurred:
[Microsoft][SQL Server Native Client 11.0][SQL Server]The SELECT permission was denied on the object 'database_mirroring_witnesses', database 'mssqlsystemresource', schema 'sys'.

Error 4:

Log Name:      Operations Manager
Source:        Health Service Script
Date:          18-09-2019 08:16:52
Event ID:      4001
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      SQLServer.domain.com
Description:
Management Group: scom-prod. Script: GetSQL2012DBFreeSpace.vbs. Version: 7.0.15.0 : The next errors occurred:
Cannot connect to database 'model'
Error Number: -2147467259
Description: [Microsoft][SQL Server Native Client 11.0][SQL Server]The server principal "domain\sqlsvc" is not able to access the database "model" under the current security context.
Instance: MSSQLSERVER

 

I will discuss here each scenario which will cover all the errors we are having in the SQL server.

 

So firstly, we will run a ProcMon Trace from the SQL server to identify the account which runs all the SQL workflows for that server.

Steps:

  • Now download the following tool and copy it in the server

https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

  • Now run the tool with admin privilege.
  • Now restart the Microsoft Monitoring agent on the server.
  • Please wait for the event listed above.

Once we have the event reproduced, stop the ProcMon trace and save it.

 

So now looked at the ProcMon trace to check the account details as below.

We could see that the workflow is running under Domain\sqlsvc account.

Now we need to run the following SQL queries using the same account. You can elevate wbemtest or you can run it from PowerShell.exe by elevating the PowerShell windows with the same account.

 

PS C:\Users\sqlsvc> whoami

lab\sqlsvc

PS C:\Users\sqlsvc> Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query "select * from SqlService where SQLServiceType ='1'"

__GENUS          : 2

__CLASS          : SqlService

__SUPERCLASS     :

__DYNASTY        : SqlService

__RELPATH        : SqlService.ServiceName="MSSQLSERVER",SQLServiceType=1

__PROPERTY_COUNT : 15

__DERIVATION     : {}

__SERVER         : SQLServer

__NAMESPACE      : root\microsoft\sqlserver\computermanagement13

__PATH           : \\SQLServer\root\microsoft\sqlserver\computermanagement13:SqlService.ServiceName="MSSQLSERVER",SQLServiceType=1

AcceptPause      : True

AcceptStop       : True

BinaryPath       : "C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER

Dependencies     : {SQLSERVERAGENT}

Description      : Provides storage, processing and controlled access of data, and rapid transaction processing.

DisplayName      : SQL Server (MSSQLSERVER)

ErrorControl     : 1

ExitCode         : 0

HostName         : SQLServer

ProcessId        : 10472

ServiceName      : MSSQLSERVER

SQLServiceType   : 1

StartMode        : 2

StartName        : LocalSystem

State            : 4

PSComputerName   : SQLServer

PS C:\Users\sqlsvc> 

 

N.B: To get wmi namespace, you need to go to wmimgmt.msc >> WMI Control (Local) >> Properties >> Security >> Root >> Microsoft >> ComputerManagement13

You need to run the following commands as well to check if we have any failure.

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query "select * from SqlService where SQLServiceType ='1'"

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query "Select * from SqlService"

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query "Select * from SqlServiceAdvancedProperty"

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query  "Select * from ServerNetworkProtocolProperty"

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query  "Select * from ServerNetworkProtocol"

Get-WmiObject -Namespace "root\microsoft\sqlserver\computermanagement13" -Query "select * from SqlService where SQLServiceType ='9' or SQLServiceType ='3'"

 

The above queries might fail with the error called Invalid WMI class.

In that case, the resolution would be to recompile the MOF file.

For SQL 2008, please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\100\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

For SQL 2012, please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\110\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

For SQL 2014, please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\120\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

For SQL 2016, please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\130\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

For SQL 20017 please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\140\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

For SQL 2019, please run the below command from elevated CMD as administrator.

cd “C:\Program Files (x86)\Microsoft SQL Server\150\Shared”

mofcomp sqlmgmproviderxpsp2up.mof

 

If we have found any access related issues in WMI as access denied in ProcMon, we can provide the below permission to the SQL account Domain\sqlsvc.

grant the “Execute Methods”, “Enable Account”, “Remote Enable”, “Read Security” permissions on the following WMI for the account Domain\sqlsvc for both nodes.

 

root

root\cimv2

root\default

Root\Microsoft\SqlServer

root\Microsoft\SqlServer\ComputerManagement14

 

If we have any access issue with registry, please grant read access to the below registry paths for the SQL account.

 

“HKLM:\Software\Microsoft\Microsoft SQL Server”

“HKLM:\Software\Microsoft\Microsoft SQL Server\[InstanceID]\MSSQLServer\Parameters”

 

If we have any issues with the database permission and we would like to restrict the account permission, please follow the following article to grant the permission for the SQL account Domain\sqlsvc.

https://www.souravmahato.com/set-up-sql-monitoring-with-minimum-rights-in-scom/

 

I hope this will help to identify the issue for SQL workflow. I would appreciate if you could provide any feedback in this. I am looking forward to hearing from you.

Cheers!