Kevin Holman's System Center Blog

Posts in this blog are provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified in the Terms of UseAre you interested in having a dedicated engineer that will be your Mic

SQL MP 6.4.1.0 – SQL 2012 DB Engine group does not contain all SQL servers

SQL MP 6.4.1.0 – SQL 2012 DB Engine group does not contain all SQL servers

  • Comments 2
  • Likes

 

Ian wrote about this issue back in September:  http://ianblythmanagement.wordpress.com/2013/09/12/sql-server-2012-db-engine-group-problem/

Essentially – SCOM discovers the SQL Version from a registry key that SQL places.  The problem arises that the SQL version in that key uses a different SQL version that what is considered typical. 

SQL build versions are visible here:  http://sqlserverbuilds.blogspot.com/

When you apply SQL 2012 SP1 to SQL 2012, this updates the registry from 11.0.xxxx.x to 11.1.xxx.x as seen below in SCOM Discovered inventory:

image

 

The issue is that the group “SQL Server 2012 DB Engine Group” is hard coded to 11.0.* as seen below:

image

 

I wrote a quick MP that contains a new group population discovery set to “11.*” along with an override to disable the built in group.  The XML is visible below:

 

<ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <Manifest> <Identity> <ID>Microsoft.SQLServer.2012.Discovery.Addendum</ID> <Version>6.4.1.0</Version> </Identity> <Name>Microsoft.SQLServer.2012.Discovery.Addendum</Name> <References> <Reference Alias="SQL2012Disc"> <ID>Microsoft.SQLServer.2012.Discovery</ID> <Version>6.4.1.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> <Reference Alias="SQL"> <ID>Microsoft.SQLServer.Library</ID> <Version>6.4.1.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> <Reference Alias="SC"> <ID>Microsoft.SystemCenter.Library</ID> <Version>6.1.7221.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> <Reference Alias="Windows"> <ID>Microsoft.Windows.Library</ID> <Version>6.1.7221.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> <Reference Alias="Health"> <ID>System.Health.Library</ID> <Version>6.1.7221.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> <Reference Alias="System"> <ID>System.Library</ID> <Version>6.1.7221.0</Version> <PublicKeyToken>31bf3856ad364e35</PublicKeyToken> </Reference> </References> </Manifest> <Monitoring> <Discoveries> <Discovery ID="Microsoft.SQLServer.2012.Discovery.Addendum.PopulateSQL2012EngineGroup" Enabled="true" Target="SQL2012Disc!Microsoft.SQLServer.2012.InstanceGroup" ConfirmDelivery="true" Remotable="true" Priority="Normal"> <Category>Discovery</Category> <DiscoveryTypes> <DiscoveryClass TypeID="SQL2012Disc!Microsoft.SQLServer.2012.InstanceGroup" /> </DiscoveryTypes> <DataSource ID="DS" TypeID="SC!Microsoft.SystemCenter.GroupPopulator"> <RuleId>$MPElement$</RuleId> <GroupInstanceId>$Target/Id$</GroupInstanceId> <MembershipRules> <MembershipRule> <MonitoringClass>$MPElement[Name="SQL2012Disc!Microsoft.SQLServer.2012.DBEngine"]$</MonitoringClass> <RelationshipClass>$MPElement[Name="SQL2012Disc!Microsoft.SQLServer.2012.InstanceGroupContainsDBEngine"]$</RelationshipClass> <Expression> <RegExExpression> <ValueExpression> <Property>$MPElement[Name="SQL!Microsoft.SQLServer.DBEngine"]/Version$</Property> </ValueExpression> <Operator>MatchesWildcard</Operator> <Pattern>11.*</Pattern> </RegExExpression> </Expression> </MembershipRule> </MembershipRules> </DataSource> </Discovery> </Discoveries> <Overrides> <DiscoveryPropertyOverride ID="Microsoft.SQLServer.2012.Discovery.Addendum.DisableSQL2012GP" Context="SQL2012Disc!Microsoft.SQLServer.2012.InstanceGroup" Enforced="false" Discovery="SQL2012Disc!Microsoft.SQLServer.2012.PopulateSQLServersInstanceGroup" Property="Enabled"> <Value>false</Value> </DiscoveryPropertyOverride> </Overrides> </Monitoring> <LanguagePacks> <LanguagePack ID="ENU" IsDefault="true"> <DisplayStrings> <DisplayString ElementID="Microsoft.SQLServer.2012.Discovery.Addendum"> <Name>SQL Server 2012 (Discovery) Addendum</Name> <Description>This management pack addresses a specific issue in the SQL MP 6.4.1.0 where the SQL 2012 DB engine instance group does not populate correctly due to a version mismatch. This MP ONLY applies to that specific version.</Description> </DisplayString> <DisplayString ElementID="Microsoft.SQLServer.2012.Discovery.Addendum.DisableSQL2012GP"> <Name>Disable default SQL 2012 Group Population </Name> <Description /> </DisplayString> <DisplayString ElementID="Microsoft.SQLServer.2012.Discovery.Addendum.PopulateSQL2012EngineGroup"> <Name>Populate Microsoft SQL Server 2012 Instance Group (fixed)</Name> <Description>This discovery fixes an issue in the group discover in SQL MP version 6.4.1.0</Description> </DisplayString> </DisplayStrings> </LanguagePack> </LanguagePacks> </ManagementPack>

I will also attach the MP as a zip file to this post below.

Now my groups populate as expected:

 

image

Attachment: Microsoft.SQLServer.2012.Discovery.Addendum.xml.zip
Comments
  • I confirmed this is fixed in version 6.5.1.0 of the SQL Server 2012 management pack.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
Search Blogs