SQL MP 2016 and 2014
The change does not appear documented and provides the customer no advance warning that this change will be required.
The class definition for Microsoft.SQLServer.Database (<ClassType ID="Microsoft.SQLServer.Database" Accessibility="Public" Abstract="false" Base="System!System.Database" Hosted="true" Singleton="false" Extension="false">) shows that the base class for SQLServer.Database is System.Database. In the management packs that include, and precede, SQL Server 2012, the entry for the derived 20XX database classes (<ClassType ID="Microsoft.SQLServer.2012.Database" Accessibility="Public" Abstract="false" Base="SQL!Microsoft.SQLServer.Database" Hosted="true" Singleton="false" Extension="false" />) states that they are derived from the Microsoft.SQLServer.Database class. Moving onto the derived 2014 and 2016 database classes (<ClassType ID="Microsoft.SQLServer.2016.Database" Accessibility="Public" Abstract="false" Base="System!System.Database" Hosted="true" Singleton="false" Extension="false">), it is stated that they are derived from System.Database, which is a change from previous versions that called SQLServer.Database.
I have looked through the discovered inventory for the SQL Database class and can confirm that there are databases missing that include 2014 and 2016 versions of SQL. The version specific class, however, (e.g. SQL Server 2016 DB) does include the databases that are missing from the SQL Database class.
What’s further concerning are two examples:
The description of the SQLServer.Database class indicates that a management pack should be able to target this class and get every SQL Server Database object:
<Description>All Microsoft SQL Server databases regardless of the version</Description>
Even current, Microsoft provided, management packs for other 2016 products have a dependency on the SQL Server Database class, when a database using 2014 or 2016 will be a discovered object of the SQL Server Database class (System Center Service Management Automation Library MP where a group population is using that class:
we will fix the documentation in our June release. Thank you for bringing it to our attention. Could you also share which Microsoft released MPs you have seen this in? We want to make sure we cover everything.
For SQL Server 2014 and SQL Server 2016, we’ve decided to stop using shared SQL Server library and start wrapping up each MP bundle as a standalone product.
The only shared part now is presentation – main folder in Monitoring view, dashboards code and some groups.
So, to get all SQL Server Instances, these people should use “Microsoft.SQLServer.Generic.Presentation.SQLServerInstanceGroup” group.
That group is included in Microsoft.SQLServer.Generic.Presentation MP.
For this group to be filled, Microsoft.SQLServer.2014.Views and/or Microsoft.SQLServer.2016.Views should be installed.
To get All databases in one group, they have to create a new group and dynamically fill it with classes:
Same approach can be used for Instances or any other objects, if they prefer not to refer to our visualization library.
SQL MP Team