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:
The issue is that the group “SQL Server 2012 DB Engine Group” is hard coded to 11.0.* as seen below:
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.0where 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: