<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Kevin Holman's OpsMgr Blog : database</title><link>http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx</link><description>Tags: database</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Maintenance mode – tying the text of the category to the database</title><link>http://blogs.technet.com/kevinholman/archive/2009/06/05/maintenance-mode-tying-the-text-of-the-category-to-the-database.aspx</link><pubDate>Fri, 05 Jun 2009 08:59:36 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3250630</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3250630.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3250630</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3250630</wfw:comment><description>&lt;p&gt;I havent seen this discussed before – so I figured I would post this.&lt;/p&gt;  &lt;p&gt;In the OpsDB and DWDB – we keep some tables names MaintenanceMode and MaintenanceModeHistory.&lt;/p&gt;  &lt;p&gt;When you place an object into maintenance mode – we will log a row in the database for this object.&amp;#160; You could potentially write reports against this data in the data warehouse, and report on MM history.&amp;#160; &lt;/p&gt;  &lt;p&gt;From the following query:&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;select * from dbo.vMaintenanceModeHistory&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There is a column named “ReasonCode”&amp;#160; This has a numeric value.&amp;#160; However – in the UI – this correlates to the “Category” that you must select when you place an object into MM:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Maintenancemodetyingthetextofthecategory_DF6/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Maintenancemodetyingthetextofthecategory_DF6/image_thumb.png" width="472" height="533" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is a table which sorts out the numeric reason code vs the text in the UI:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0" width="415"&gt;&lt;tbody&gt;     &lt;tr height="20"&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Other (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;0&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Other (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Hardware: Maintenance (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;2&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Hardware: Maintenance (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;3&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Hardware: Installation (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;4&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Hardware: Installation (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;5&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Operating System: Reconfiguration (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;6&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Operating System: Reconfiguration (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;7&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Application: Maintenance (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;8&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Application: Maintenance (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;9&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Application: Installation (Planned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;10&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Application: Unresponsive&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;11&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Application:&amp;#160; Unstable&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;12&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Security Issue&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;13&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="360"&gt;         &lt;p&gt;&lt;font size="2"&gt;Loss of network connectivity (Unplanned)&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;p align="center"&gt;&lt;font size="2"&gt;14&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3250630" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/query/default.aspx">query</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>Populating groups from a SQL server CMDB – step by step</title><link>http://blogs.technet.com/kevinholman/archive/2009/01/27/populating-groups-from-a-sql-server-cmdb-step-by-step.aspx</link><pubDate>Tue, 27 Jan 2009 21:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3192151</guid><dc:creator>kevinhol</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3192151.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3192151</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3192151</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/boris_yanushpolsky/default.aspx" mce_href="http://blogs.msdn.com/boris_yanushpolsky/default.aspx"&gt;Boris&lt;/A&gt; wrote a cool article &lt;A href="http://blogs.msdn.com/boris_yanushpolsky/archive/2008/10/26/populating-groups-from-external-sources.aspx" mce_href="http://blogs.msdn.com/boris_yanushpolsky/archive/2008/10/26/populating-groups-from-external-sources.aspx"&gt;HERE&lt;/A&gt; on how to populate a group of computers in OpsMgr, from an external source…. such as active directory.&amp;nbsp; In his published example – you run an LDAP query to AD, to return a recordset list if computers, in order to populate them into a group.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This post will extend that, by showing how to do the same thing – but using a SQL database as the CMDB source for populating groups, instead of AD.&amp;nbsp; I had a customer who wanted to do this – to dynamically create groups for the purpose of scoping console views and notifications, to the teams that “owned” the different servers.&amp;nbsp; The CMDB contained this data, but it changes often, so manually controlling this proved to be a pain. &lt;/P&gt;
&lt;P&gt;Here is a very simple example of the CMDB, which contains the ServerName, and the team that owns the server, in the “ServerList” table:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb.png" width=261 height=282 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;As you can see… I can easily write a SQL query to show ONLY servers owned by TEAM 1:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb_1.png" width=546 height=179 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Let’s use this data source… to populate three groups.&amp;nbsp; Team 1 Group, Team 2 Group, and Team 3 group.&lt;/P&gt;
&lt;P&gt;First – I will post my finished XML example at the bottom – go grab that and open it – it will help you follow along with the XML requirements.&lt;/P&gt;
&lt;P&gt;In the XML… we basically need 4 components: &lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; We need to define the name of the MP, and add references to other MP’s we will depend on. (&amp;lt;Manifest&amp;gt; Section)&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; We need to define the groups themselves, and then define the relationships (stating that they will contain Windows Computer Objects) (&amp;lt;TypeDefinitions&amp;gt; section)&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp; We need to run a discovery to populate the groups… this will be a script based discovery that runs only on the RMS, queries the CMDB, matches on the servername FQDN, and populates the group with a windows computer object. (&amp;lt;Monitoring&amp;gt; section)&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp; We need to modify the display strings in the XML MP – in order to show friendly display names for each of the above, in the UI. (&amp;lt;LanguagePacks&amp;gt; Section)&lt;/P&gt;
&lt;P&gt;You can simply take the XML posted below, and just modify each section with your custom group names… or add new groups by adding a new class, relationship, discovery/script, and presentation section to each.&lt;/P&gt;
&lt;P&gt;Here we go:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Section 1:&amp;nbsp; &amp;lt;Manifest&amp;gt;&lt;/H1&gt;
&lt;P&gt;Simply modify the &amp;lt;ID&amp;gt;, &amp;lt;Version&amp;gt;, and &amp;lt;Name&amp;gt; sections based on your custom MP naming standard.&lt;/P&gt;
&lt;P&gt;&amp;lt;ManagementPack ContentReadable="true" xmlns:xsd="&lt;A href="http://www.w3.org/2001/XMLSchema%22" mce_href='http://www.w3.org/2001/XMLSchema"'&gt;http://www.w3.org/2001/XMLSchema"&lt;/A&gt; xmlns:xsl="&lt;A href="http://www.w3.org/1999/XSL/Transform%22" mce_href='http://www.w3.org/1999/XSL/Transform"'&gt;http://www.w3.org/1999/XSL/Transform"&lt;/A&gt;&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;Manifest&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Identity&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;&amp;lt;ID&amp;gt;SQLBasedGroupDemo&amp;lt;/ID&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;&amp;lt;Version&amp;gt;1.0.0.0&amp;lt;/Version&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Identity&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;&amp;lt;Name&amp;gt;SQLBasedGroupDemo&amp;lt;/Name&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;References&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Alias="SC"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ID&amp;gt;Microsoft.SystemCenter.Library&amp;lt;/ID&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;6.0.6278.0&amp;lt;/Version&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PublicKeyToken&amp;gt;31bf3856ad364e35&amp;lt;/PublicKeyToken&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Alias="Windows"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ID&amp;gt;Microsoft.Windows.Library&amp;lt;/ID&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;6.0.6278.0&amp;lt;/Version&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PublicKeyToken&amp;gt;31bf3856ad364e35&amp;lt;/PublicKeyToken&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Alias="Health"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ID&amp;gt;System.Health.Library&amp;lt;/ID&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;6.0.6278.0&amp;lt;/Version&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PublicKeyToken&amp;gt;31bf3856ad364e35&amp;lt;/PublicKeyToken&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Alias="System"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ID&amp;gt;System.Library&amp;lt;/ID&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;6.0.6278.0&amp;lt;/Version&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PublicKeyToken&amp;gt;31bf3856ad364e35&amp;lt;/PublicKeyToken&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/References&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Manifest&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Section 2:&amp;nbsp; &amp;lt;TypeDefinitions&amp;gt;&lt;/H1&gt;
&lt;P&gt;The example below defines 3 groups, and the relationships for those groups (contains windows computer objects).&amp;nbsp; Simply replace the bolded red “Team1Group” example with a short name for your custom groups.&amp;nbsp; (We will define the UI friendly name later, in the &amp;lt;Presentation&amp;gt; section.&lt;/P&gt;
&lt;P&gt;&amp;lt;TypeDefinitions&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;EntityTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassType ID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;" Accessibility="Internal" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassType ID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team2Group&lt;/FONT&gt;&lt;/STRONG&gt;" Accessibility="Internal" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassType ID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team3Group&lt;/FONT&gt;&lt;/STRONG&gt;" Accessibility="Internal" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ClassTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RelationshipTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RelationshipType ID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;ContainsWindowsComputers" Accessibility="Internal" Abstract="false" Base="System!System.Containment"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Source&amp;gt;GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Source&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Target&amp;gt;Windows!Microsoft.Windows.Computer&amp;lt;/Target&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RelationshipType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RelationshipType ID="GroupPopulation.&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;Team2Group&lt;/STRONG&gt;&lt;/FONT&gt;ContainsWindowsComputers" Accessibility="Internal" Abstract="false" Base="System!System.Containment"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Source&amp;gt;GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team2Group&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Source&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Target&amp;gt;Windows!Microsoft.Windows.Computer&amp;lt;/Target&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RelationshipType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RelationshipType ID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team3Group&lt;/FONT&gt;&lt;/STRONG&gt;ContainsWindowsComputers" Accessibility="Internal" Abstract="false" Base="System!System.Containment"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Source&amp;gt;GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team3Group&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Source&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Target&amp;gt;Windows!Microsoft.Windows.Computer&amp;lt;/Target&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RelationshipType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RelationshipTypes&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/EntityTypes&amp;gt; &lt;BR&gt;&amp;lt;/TypeDefinitions&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Section 3:&amp;nbsp; &amp;lt;Monitoring&amp;gt;&lt;/H1&gt;
&lt;P&gt;In this section – we define the discovery, and add the script to run.&amp;nbsp; In this example – I am running a VBscript with a SQL query to the CMDB.&amp;nbsp; You will need to modify the group name – just like you did above.&amp;nbsp; This is where we create a discovery to populate each group – so we will need one of these sections for each group in the MP.&amp;nbsp; Each of these sections will run a distinct script, with a different query, depending on which computers you want populated.&lt;/P&gt;
&lt;P&gt;I bolded in RED the group name sections you will need to modify, just like we did above… and you will need to modify the SQL DB information, and the script name.&lt;/P&gt;
&lt;P&gt;I set the discovery time to every 3600 seconds in this example…. you should probably set this to once or twice a day max…. no need to keep re-running it for groups that wont change that often.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;lt;Monitoring&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Discoveries&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Discovery ID="&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;Team1Group&lt;/STRONG&gt;&lt;/FONT&gt;.Discovery" Enabled="true" Target="SC!Microsoft.SystemCenter.RootManagementServer" ConfirmDelivery="true" Remotable="true" Priority="Normal"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DiscoveryTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DiscoveryClass TypeID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DiscoveryTypes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IntervalSeconds&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;3600&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/IntervalSeconds&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SyncTime /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ScriptName&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;Discovery.vbs&amp;lt;/ScriptName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Arguments&amp;gt;$MPElement$ $Target/Id$&amp;lt;/Arguments&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ScriptBody&amp;gt;&amp;lt;![CDATA[Dim SourceId &lt;BR&gt;Dim objConnection &lt;BR&gt;Dim oRS &lt;BR&gt;Dim sConnectString &lt;BR&gt;Dim ManagedEntityID &lt;BR&gt;Dim oAPI &lt;BR&gt;Dim oDiscoveryData &lt;BR&gt;SourceId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = WScript.Arguments(0) &lt;BR&gt;ManagedEntityId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = WScript.Arguments(1) &lt;BR&gt;Set oAPI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = CreateObject("MOM.ScriptAPI") &lt;BR&gt;Set oDiscoveryData&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = oAPI.CreateDiscoveryData(0,SourceId,ManagedEntityId) &lt;BR&gt;sConnectString = "Driver={SQL Server}; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Server=OMDW; Database=CMDB&lt;/FONT&gt;&lt;/STRONG&gt;;" &lt;BR&gt;Set objConnection = CreateObject("ADODB.Connection") &lt;BR&gt;objConnection.Open sConnectString &lt;BR&gt;Set oRS = CreateObject("ADODB.Recordset") &lt;BR&gt;oRS.Open "&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;select ServerName from ServerList where MonitorGroup = 'Team 1'&lt;/FONT&gt;&lt;/STRONG&gt;", objConnection &lt;BR&gt;Set groupInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;']$") &lt;BR&gt;While Not oRS.EOF &lt;BR&gt;Set serverInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='Windows!Microsoft.Windows.Computer']$") &lt;BR&gt;serverInstance.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$",oRS.Fields("ServerName") &lt;BR&gt;Set relationshipInstance = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;ContainsWindowsComputers']$") &lt;BR&gt;relationshipInstance.Source = groupInstance &lt;BR&gt;relationshipInstance.Target = serverInstance &lt;BR&gt;oDiscoveryData.AddInstance relationshipInstance &lt;BR&gt;oRS.MoveNext &lt;BR&gt;Wend &lt;BR&gt;objConnection.Close &lt;BR&gt;Call oAPI.Return(oDiscoveryData) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&amp;lt;/ScriptBody&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TimeoutSeconds&amp;gt;120&amp;lt;/TimeoutSeconds&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DataSource&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Discovery&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Section 4:&amp;nbsp; &amp;lt;LanguagePacks&amp;gt;&lt;/H1&gt;
&lt;P&gt;Here – we will take ALL of the modifications we made in the prior three steps, and match them up with friendly names to show in the UI:&lt;/P&gt;
&lt;P&gt;Essentially – just modify the MP name, group name, relationship name, and discovery name, to match what you did above…. and assign each a friendly name that you want to see in the UI.&amp;nbsp; I will bold in red the sections to modify, for the “Team 1 servers”.&amp;nbsp; You would continue this for as many groups as you used:&lt;/P&gt;
&lt;P&gt;&amp;lt;LanguagePacks&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;LanguagePack ID="ENU" IsDefault="true"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayStrings&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;SQLBasedGroupDemo&lt;/FONT&gt;&lt;/STRONG&gt;"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;SQL Based Group Population Demo MP&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team 1 Servers Group&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;ContainsWindowsComputers"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team 1 SQL Based Group Contains Windows Computers&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team1Group&lt;/FONT&gt;&lt;/STRONG&gt;.Discovery"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Team 1 SQL Based Group Discovery&lt;/FONT&gt;&lt;/STRONG&gt;&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.Team2Group"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 2 Servers Group&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.Team2GroupContainsWindowsComputers"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 2 SQL Based Group Contains Windows Computers&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="Team2Group.Discovery"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 2 SQL Based Group Discovery&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.Team3Group"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 3 Servers Group&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="GroupPopulation.Team3GroupContainsWindowsComputers"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 3 SQL Based Group Contains Windows Computers&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="Team3Group.Discovery"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Team 3 SQL Based Group Discovery&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayStrings&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/LanguagePack&amp;gt; &lt;BR&gt;&amp;lt;/LanguagePacks&amp;gt;&lt;/P&gt;
&lt;P&gt;That’s it!&amp;nbsp; If you get errors trying to import – you most likely modified a definition incompletely…. the import error should help you figure out what's wrong.&lt;/P&gt;
&lt;P&gt;Now I can go to my groups – find “Team 1 Group” and see if it is populated:&amp;nbsp; SUCCESS!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_6.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb_2.png" width=645 height=225 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PopulatinggroupsfromaSQLserverCMDBstepby_B57E/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;I am attaching my working sample MP below&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3192151" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3192151.ashx" length="1704" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/management+pack/default.aspx">management pack</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Authoring/default.aspx">Authoring</category></item><item><title>Boosting OpsMgr performance - by reducing the OpsDB data retention</title><link>http://blogs.technet.com/kevinholman/archive/2008/11/04/boosting-opsmgr-performance-by-reducing-the-opsdb-data-retention.aspx</link><pubDate>Wed, 05 Nov 2008 02:24:40 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3147538</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3147538.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3147538</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3147538</wfw:comment><description>&lt;p&gt;Here is a little tip I often advise my customers on.....&lt;/p&gt;  &lt;p&gt;The default data retention in OpsMgr is 7 days for most data types:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/BoostingOpsMgrperformancebyreducingtheOp_F454/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="556" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/BoostingOpsMgrperformancebyreducingtheOp_F454/image_thumb.png" width="556" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;These are default settings which work well for a large cross section of different agent counts.&amp;#160; In MOM 2005 - we defaulted to 4 days.&amp;#160; Many customers, especially with large agent counts, would have to reduce that in MOM 2005 down to 2 days to keep a manageable Onepoint DB size.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That being said - &lt;strong&gt;to boost UI performance, and reduce OpsDB database size&lt;/strong&gt; - consider reducing these values down to your &lt;strong&gt;real business requirements&lt;/strong&gt;.&amp;#160; For a new, out of the box management group - I advise my customers to set these to &lt;strong&gt;2 days&lt;/strong&gt;.&amp;#160; This will keep less noise in your database as you deploy, and tune, agents and management packs.&amp;#160; This keeps a smaller DB, and a more responsive UI, in large agent count environments.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Essentially - set each value to &amp;quot;2&amp;quot; except for Performance Signature&lt;/strong&gt;, which we will change to 1.&amp;#160; Performance Signature is unique.... the setting here isnt actually &amp;quot;Days&amp;quot; of retention.&amp;#160; It is &amp;quot;business cycles&amp;quot;.&amp;#160; This is for self-tuning threshold ONLY.&amp;#160; This data is used for calculating business cycle based self-tuning thresholds.&amp;#160; There is NO REASON for this ever to be larger than the default of &amp;quot;2&amp;quot; business cycles.... and large agent count environments can see a performance benefit by bumping this down to only keeping &amp;quot;1&amp;quot; business cycle.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/BoostingOpsMgrperformancebyreducingtheOp_F454/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="558" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/BoostingOpsMgrperformancebyreducingtheOp_F454/image_thumb_1.png" width="555" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then - once your Management group is fully deployed, and you have tuned your alert, performance, event, and state data.... IF you have a business requirement to keep this data for longer - bump it up.&lt;/p&gt;  &lt;p&gt;Keep in mind - this will NOT cause you to groom out Alerts that are open - only closed alerts, and still will keep your closed alerts around for a couple days.&lt;/p&gt;  &lt;p&gt;These settings have no impact on the data that is being written to the data warehouse - so any alert, event, or perf data needed will always be there.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3147538" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/self+tuning/default.aspx">self tuning</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Agent Pending Actions can get out of synch between the Console, and the database</title><link>http://blogs.technet.com/kevinholman/archive/2008/09/29/agent-pending-actions-can-get-out-of-synch-between-the-console-and-the-database.aspx</link><pubDate>Mon, 29 Sep 2008 21:57:59 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3130040</guid><dc:creator>kevinhol</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3130040.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3130040</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3130040</wfw:comment><description>&lt;p&gt;When you look at your agent pending actions in the Administration pane of the console.... you will see pending actions for things like approving a manual agent install, agent installation in progress, approving agent updates, like from a hotfix, etc.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This pending action information is also contained in the SQL table in the OpsDB - agentpendingaction&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It is possible for the agentpendingaction table to get out of synch with the console, for instance, if the server was in the middle of updating/installing an agent - and the management server Healthservice process crashed or was killed.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In this case, you might have a lingering pending action, that blocks you from doing something in the future.&amp;#160; For instance - if you had a pending action to install an agent, that did not show up in the pending actions view of the console.&amp;#160; What might happen, is that when you attempt to discover and push the agent to this same server, you get an error message:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;quot;One or more computers you are trying to manage are already in the process of being managed.&amp;#160; Please resolve these issues via the Pending Management view in Administration, prior to attempting to manage them again&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentPendingActionscangetoutofsynchbetwe_C463/ss2_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="ss2" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentPendingActionscangetoutofsynchbetwe_C463/ss2_thumb.jpg" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The problem is - they don't show up in this view!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To view the database information on pending actions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;select * from agentpendingaction&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You should be able to find your pending action there - that does not show up in the Pending Action view in the console, if you are affected by this.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To resolve - we should first try and reject these &amp;quot;ghost&amp;quot; pending actions via the SDK... using powershell.&amp;#160; Open a command shell, and run the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;get-agentpendingaction&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To see a prettier view:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;get-agentpendingaction | ft agentname,agentpendingactiontype&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To see a specific pending action for a specific agent:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;get-agentPendingAction | where {$_.AgentName -eq &amp;quot;servername.domain.com&amp;quot;}&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To reject the specific pending action:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;get-agentPendingAction | where {$_.AgentName -eq &amp;quot;servername.domain.com&amp;quot;}|Reject-agentPendingAction&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We can use the last line - to reject the specific pending action we are interested in.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You might get an exception running this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Reject-AgentPendingAction : Microsoft.EnterpriseManagement.Common.UnknownServiceE       &lt;br /&gt;xception: The service threw an unknown exception. See inner exception for details        &lt;br /&gt;. ---&amp;gt; System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]:        &lt;br /&gt; Exception of type 'Microsoft.EnterpriseManagement.Common.DataItemDoesNotExistExc        &lt;br /&gt;eption' was thrown.&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If this fails, such as gives an exception, or if our problem pending action doesn't even show up in Powershell.... we have to drop down to the SQL database level.&amp;#160; &lt;strong&gt;This is a LAST resort and NOT SUPPORTED....&lt;/strong&gt; run at your own risk.&lt;/p&gt;  &lt;p&gt;There is a stored procedure to delete pending actions.... here is an example, to run in a SQL query window:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;exec p_AgentPendingActionDeleteByAgentName 'agentname.domain.com'&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Change 'agentname.domain.com' to the agent name that is showing up in the SQL table, but not in the console view.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3130040" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/agents/default.aspx">agents</category></item><item><title>DBcreatewizard or just run good old SetupOM.exe - which should I use to install the Database component of OpsMgr?</title><link>http://blogs.technet.com/kevinholman/archive/2008/05/03/dbcreatewizard-or-just-run-good-old-setupom-exe-which-should-i-use-to-install-the-database-component-of-opsmgr.aspx</link><pubDate>Sat, 03 May 2008 14:04:50 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3049196</guid><dc:creator>kevinhol</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3049196.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3049196</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3049196</wfw:comment><description>&lt;p&gt;There has always been a bit of confusion on when to run the DBCreateWizard.exe tool, or when to just use SetupOM.exe to create the Operational DB or Data Warehouse DB.&lt;/p&gt;  &lt;p&gt;Historically.... in MOM 2005, we used the DBcreate Wizard in order to create the Onepoint database on Active/Active clusters..... or when SQL DBA teams refused to run a MSI based setup on one of their SQL servers.&amp;#160; The DB create wizard was a better option for them.... since it did not have to install any binaries on a SQL server.&amp;#160; In practice.... it was pretty rare to see this in widespread use.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In OpsMgr 2007, we haven't really documented all the scenarios for when you should run the DBcreate Wizard.... and I will try and do that here.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The DB create wizard is located on the CD - In the \SupportTools folder.&amp;#160; It does require some additional files to run it - these don't have to be &amp;quot;installed&amp;quot;, just need to be copied over to the SQL DB server where you will run the wizard.&amp;#160; Follow:&amp;#160; &lt;a title="http://support.microsoft.com/kb/938997/en-us" href="http://support.microsoft.com/kb/938997/en-us"&gt;http://support.microsoft.com/kb/938997/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;***&amp;#160; Note - the additional files required to run &lt;strong&gt;DBCreateWizard.exe&lt;/strong&gt; are documented in the KB article above.&amp;#160; They were also provided on the SP1 Select CD.&amp;#160; &lt;strong&gt;However&lt;/strong&gt; - the files provided on CD are for &lt;strong&gt;&lt;em&gt;32bit x86 only&lt;/em&gt;&lt;/strong&gt;.&amp;#160; If you are using the DBCreateWizard on a x64 platform - &lt;strong&gt;&lt;em&gt;you MUST copy these files listed in the KB article from an x64 server&lt;/em&gt;&lt;/strong&gt;.... any x64 server with the console installed will have them.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt; - there were some significant issues with the RTM version of this tool... in detecting the correct SQL instance on a multi-instance cluster, and leaving some table information blank (&lt;a title="http://support.microsoft.com/kb/942865/en-us" href="http://support.microsoft.com/kb/942865/en-us"&gt;http://support.microsoft.com/kb/942865/en-us&lt;/a&gt;).&amp;#160; &lt;strong&gt;When deploying SP1 - Use the SP1 version of this tool&lt;/strong&gt;.&amp;#160; If you MUST deploy the RTM version - I would recommend using SetupOM.exe for all installs.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok.... first, you will notice in the OpsMgr Deployment guide, they instruct to use the DBcreateWizard when installing the database on an Active/Passive cluster.&amp;#160; That's pretty much our first introduction to this tool.&amp;#160; While this isn't required (you can simply run SetupOM.exe on the Active node) it is recommended to use DBCreateWizard.&amp;#160; Essentially, our recommendation is that &lt;strong&gt;anytime&lt;/strong&gt; you have a dedicated SQL server for the OpsDB role... with no other OpsMgr role present, then you should use the DBcreateWizard to create the Operational database.&amp;#160; The reason for this, from an internal discussion I have been involved in.... is because using SetupOM.exe will create some additional registry entries on the database server... and will change how updates are applied to the server from an OpsMgr perspective.&amp;#160; Another scenario to leverage this tool, is anytime your SQL DBA teams refuse to allow you to run a MSI based setup on their SQL servers/clusters.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Below, I will just walk through some of the scenarios where using this stand-alone tool really makes good sense.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scenarios:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1.&amp;#160; &lt;strong&gt;&lt;em&gt;All in one role/shared roles&lt;/em&gt;&lt;/strong&gt;.&amp;#160; This is where a single server hosts SQL Server 2005 and the Operational Database role, along with the RMS role.&amp;#160; In this case.... you might as well just run SetupOM.exe and create the database while installing the management group.&amp;#160; You potentially could run the DBcreatewizard first.... but this would be an additional step and provides no value.&lt;/p&gt;  &lt;p&gt;2.&amp;#160; &lt;strong&gt;&lt;em&gt;Split roles&lt;/em&gt;&lt;/strong&gt;:&amp;#160; Dedicated SQL server (Server A) and dedicated RMS (Server B).&amp;#160;&amp;#160; In this scenario - &lt;strong&gt;we recommend using DBcreatewizard.exe instead of just running SetupOM.exe on the SQL server&lt;/strong&gt;.&amp;#160;&amp;#160; However - you certainly can do either one.... both are fully supported.&lt;/p&gt;  &lt;p&gt;3.&amp;#160; &lt;strong&gt;&lt;em&gt;Split roles - clustered DB&lt;/em&gt;&lt;/strong&gt;:&amp;#160; Dedicated cluster for SQL (can be A/P or A/A or multi-instance or multi node.... doesn't matter)&amp;#160; In this scenario - &lt;strong&gt;we recommend using DBcreatewizard.exe instead of just running SetupOM.exe on the SQL server&lt;/strong&gt;.&amp;#160; That said.... you can run SetupOM.exe on any node that owns the SQL instance you are creating the DB in.... we just favor using DBcreateWizard.&lt;/p&gt;  &lt;p&gt;4.&amp;#160; &lt;strong&gt;&lt;em&gt;Draconian DBA's&lt;/em&gt;&lt;/strong&gt;.&amp;#160; In general.... DBA's are used to creating an empty database for an application, then granting permissions to the DB only.... then washing their hands of it.&amp;#160; They don't like running setup's... or even running tools on their SQL servers....&amp;#160; If they must have an application create a database as part of that application install - they MUCH prefer that all the DB creation be handled remotely.&amp;#160; Unfortunately.... MOM 2005 and OpsMgr 2007 do not support what DBA's would most like to see.&amp;#160; We must run our setup or tool on the database server/node in order to install that component.&amp;#160; I suppose we could install the OpsDB using the DBcreatewizard in a test lab SQL box, then detach it.... then hand the files to a SQL team and have them drop in into a production environment to make them happier.... but I haven't really done much testing there.&amp;#160; Anyway.... the DBcreateWizard is the best option when working with a rigid DBA team.&amp;#160; Just follow the KB article listed above... and have the SQL team run the tool to create the database.... then they can delete to tool from the server.&amp;#160; We will still require SA priv over the instance to complete the RMS setup.... but once that is done, they can remove these advanced rights, per my previous post:&amp;#160; &lt;a title="http://blogs.technet.com/kevinholman/archive/2008/04/15/opsmgr-security-account-rights-mapping-what-accounts-need-what-privileges.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/04/15/opsmgr-security-account-rights-mapping-what-accounts-need-what-privileges.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/04/15/opsmgr-security-account-rights-mapping-what-accounts-need-what-privileges.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5.&amp;#160; &lt;strong&gt;&lt;em&gt;Multiple Operational Databases in the same SQL instance&lt;/em&gt;&lt;/strong&gt;.&amp;#160; It is possible, if you have multiple management groups, that you could place all the Operational DB's into a single SQL instance.&amp;#160; Now - these had better be small environments (test/dev) or a beefy SQL server to handle all that I/O.... but just for grins.... lets say you are doing it.&amp;#160; If you tried to run SetupOM.exe and install the database component multiple times.... it would detect it was already installed and ask you if you wish to repair or remove OpsMgr.&amp;#160; No good.&amp;#160; In comes the DBcreateWizard.&amp;#160; This tool is the supported method for creating multiple OpsDB's in a single SQL instance.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3049196" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Cluster/default.aspx">Cluster</category></item><item><title>Event ID 2115 A Bind Data Source in Management Group</title><link>http://blogs.technet.com/kevinholman/archive/2008/04/21/event-id-2115-a-bind-data-source-in-management-group.aspx</link><pubDate>Tue, 22 Apr 2008 01:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3042137</guid><dc:creator>kevinhol</dc:creator><slash:comments>27</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3042137.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3042137</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3042137</wfw:comment><description>&lt;p&gt;I see this event a lot in customer environments.&amp;#160; I am not an expert on troubleshooting this here... but saw this post in the MS newsgroups and felt it was worth capturing....&lt;/p&gt;  &lt;p&gt;My experience has been that it is MUCH more common to see these when there is a management pack that collects way too much discovery data.... than any real performance problem with the data warehouse.&amp;#160; In most cases.... if the issue just started after bringing in a new MP.... deleting that MP solves the problem.&amp;#160; I have seen this repeatedly after importing the Cluster MP, Or Exchange 2007 MP.... but haven't been able to fully investigate the root cause yet:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In a nutshell.... if they are happening just a couple times an hour.... and the time in seconds is fairly low (under a few minutes) then this is normal.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If they are happening very frequently - like every minute, and the times are increasing - then there is an issue that needs to be resolved.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Taken from the newsgroups:&lt;/p&gt;  &lt;p&gt;-------------------------------------------&lt;/p&gt;  &lt;p&gt;In OpsMgr 2007 one of the performance concerns is DB/DW data insertion performance. Here is a description of how to identify and troubleshoot problems with DB/DW data insertion. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Symptoms:&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;DB/DW write action workflows run on a Management Server, they first keep data received from Agent / Gateway in an internal buffer, then they create a batch of data from the buffer and insert the data batch to DB / DW, when the insertion of the first batch finished, they will create another batch and insert it to DB / DW. The size of the batch depends on how much data is available in the buffer when the batch is created, but there is a maximum limit on the size of the batch, a batch can contain up to 5000 data items.&amp;#160; If data item incoming (from Agent / Gateway) throughput becomes larger, or the data item insertion (to DB/DW) throughput becomes smaller, then the buffer will tend to accumulate more data and the batch size will tend to become larger.&amp;#160; There are different write action workflows running on a MS, they handle data insertion to DB / DW for different type of data: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.SystemCenter.DataWarehouse.CollectEntityHealthStateChange &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.DataWarehouse.CollectPerformanceData &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.DataWarehouse.CollectEventData &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectAlerts &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectEntityState &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectPublishedEntityState &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectDiscoveryData &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectSignatureData &lt;/li&gt;    &lt;li&gt;Microsoft.SystemCenter.CollectEventData &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When a DB/DW write action workflow on Management Server notices that the insertion of a single data batch is slow (ie. slower than 1 minute), it will start to log a 2115 NT event to OpsMgr NT event log once every minute until the batch is inserted to DB / DW or is dropped by DB / DW write action module.&amp;#160; So you will see 2115 events in management server's &amp;quot;Operations Manager&amp;quot; NT event log when it is slow to insert data to DB /DW.&amp;#160; You might also see 2115 events when there is a burst of data items coming to    &lt;br /&gt;Management server and the number of data items in a batch is large.&amp;#160; (This can happen during a large amount of discovery data being inserted - from a freshly imported or noisy management pack.)&lt;/p&gt;  &lt;p&gt;2115 events have 2 import pieces of information: the name of the workflow that has insertion problem, and the pending time since the workflow started inserting last data batch.&amp;#160; Here is an example of a 2115 event: &lt;/p&gt;  &lt;p&gt;------------------------------------&lt;/p&gt;  &lt;p&gt;A Bind Data Source in Management Group OpsMgr07PREMT01 has posted items to the workflow, but has not received a response in 3600 seconds.&amp;#160; This indicates a performance or functional problem with the workflow. &lt;/p&gt;  &lt;p&gt;Workflow Id : Microsoft.SystemCenter.CollectSignatureData &lt;/p&gt;  &lt;p&gt;Instance&amp;#160;&amp;#160;&amp;#160; : MOMPREMSMT02.redmond.corp.microsoft.com &lt;/p&gt;  &lt;p&gt;Instance Id : {6D52A6BB-9535-9136-0EF2-128511F264C4} &lt;/p&gt;  &lt;p&gt;------------------------------------------&lt;/p&gt;  &lt;p&gt;This 2115 event is saying DB write action workflow &amp;quot;Microsoft.SystemCenter.CollectSignatureData&amp;quot; (which writes performance    &lt;br /&gt;signature data to DB) is trying to insert a batch of signature data to DB and it started inserting 3600 seconds ago but the insertion has not finished yet. Normally inserting of a batch should finish within 1 minutes. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Normally, there should not be much 2115 events happening on Management server, if it happens less than 1 or 2 times every hour (per write action workflow), then it is not a big concern, but if it happens more than that, there is a DB /DW insertion problem. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The following performance counters on Management Server gives information of DB / DW write action insertion batch size and insertion time, if batch size is becoming larger (by default maximum batch size is 5000), it means management server is either slow in inserting data to DB/DW or is getting a burst of data items from Agent/Gateway. From the DB / DW write action's Avg. Processing Time, you will see how much time it takes to write a batch of data to DB / DW. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OpsMgr DB Write Action Modules(*)\Avg. Batch Size &lt;/li&gt;    &lt;li&gt;OpsMgr DB Write Action Modules(*)\Avg. Processing Time &lt;/li&gt;    &lt;li&gt;OpsMgr DW Writer Module(*)\Avg. Batch Processing Time, ms &lt;/li&gt;    &lt;li&gt;OpsMgr DW Writer Module(*)\Avg. Batch Size &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Possible root causes:&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In OpsMgr, &lt;strong&gt;discovery&lt;/strong&gt; data insertion is relatively expensive, so a discovery burst (a discovery burst is referring to a short period of time when a lot of discovery data is received by management server) could cause 2115 event (complaining about slow insertion of discovery data), since discovery insertion should not happen frequently.&amp;#160; So if you see consistently 2115 events for discovery data collection. That means you either have DB /DW insertion problem or some discovery rules in a MP is collecting too much       &lt;br /&gt;discovery data. &lt;/li&gt;    &lt;li&gt;OpsMgr &lt;strong&gt;Config update&lt;/strong&gt; caused by instance space change or MP import will impact the CPU utilization on DB and will have impact on DB data insertion.&amp;#160; After importing a new MP or after a big instance space change in a large environment,&amp;#160; you will probably see more than normal 2115 events. &lt;/li&gt;    &lt;li&gt;Expensive &lt;strong&gt;UI queries&lt;/strong&gt; can impact the resource utilization on DB and could have impact on DB data insertion. When user is doing expensive UI operation, you will probably see more than normal 2115 events. &lt;/li&gt;    &lt;li&gt;When DB / DW is &lt;strong&gt;out of space&lt;/strong&gt; / offline you will find Management server keeps logging 2115 events to NT event log and the pending time is becoming higher and higher. &lt;/li&gt;    &lt;li&gt;Sometimes &lt;strong&gt;invalid data item&lt;/strong&gt; sent from agent /Gateway will cause DB / DW insertion error which will end up with 2115 event complaining about DB /DW slow insertion. In this case please check the OpsMgr event log for relevant error events. It's more common in DW write action workflows. &lt;/li&gt;    &lt;li&gt;If DB / DW hardware is not configured properly, there could be performance issue,&amp;#160; and it could cause slow data insertion to DB / DW. The problem could be:&amp;#160; &lt;ul&gt;       &lt;li&gt;The &lt;strong&gt;network link&lt;/strong&gt; between DB / DW to MS is slow (either bandwidth is small / latency is large, as a best practice we recommend MS to be in the same LAN as DB/DW). &lt;/li&gt;        &lt;li&gt;The &lt;strong&gt;data / log / tempdb disk used by DB / DW is slow&lt;/strong&gt;, (we recommend separating data, log and tempdb to different disks, we recommend using RAID 10 instead of using RAID 5, we also recommend turning on write cache of the array controllers).&amp;#160; &lt;/li&gt;        &lt;li&gt;The &lt;strong&gt;OpsDB tables are too fragmented&lt;/strong&gt; (this is a common cause of DB performance issues).&amp;#160; Reindex affected tables will solve this issue. &lt;/li&gt;        &lt;li&gt;The DB / DW does not have &lt;strong&gt;enough memory&lt;/strong&gt;.&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;&lt;font color="#ff0000"&gt;Now - that is the GENERAL synopsis and how to attack them.&amp;#160; Next - we will cover a specific issue we are seeing with a specific type of 2115 Event:&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;-----------------------------------------------&lt;/p&gt;  &lt;p&gt;It appears we may be hitting cache resolution error we were trying to catch for a while. This is about CollectEventData workflow.&amp;#160; Error is very hard to catch and we're including a fix in SP2 to avoid it.&amp;#160; There are two ways to resolve the problem in the meantime.&amp;#160; Since the error happens very rarely, you can just restart Health Service on the Management Server that is affected.&amp;#160; Or you can prevent it from blocking the workflow by creating overrides in the following way:&lt;/p&gt;  &lt;p&gt;-----------------------------------------------&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;1) Launch Console, switch to Authoring space and click &amp;quot;Rules&amp;quot;     &lt;br /&gt;2) In the right top hand side of the screen click &amp;quot;Change Scope&amp;quot;     &lt;br /&gt;3) Select &amp;quot;Data Warehouse Connection Server&amp;quot; in the list of types,. click &amp;quot;Ok&amp;quot;     &lt;br /&gt;4) Find &amp;quot;Event data collector&amp;quot; rule in the list of rules;     &lt;br /&gt;5) Right click &amp;quot;Event data collector&amp;quot; rule, select Overrides/Override the Rule/For all objects of type...     &lt;br /&gt;6) Set Max Execution Attempt Count to 10     &lt;br /&gt;7) Set Execution Attempt Timeout Interval Seconds to 6     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;That way if DW event writer fails to process event batch for ~ a minute, it will discard the batch.&amp;#160; 2115 events related to    &lt;br /&gt;Datawarehouse.CollectEventData should go away after you apply these overrides.&amp;#160; BTW, while you're at it you may want to override &amp;quot;Max Batches To Process Before Maintenance Count&amp;quot; to 50 if you have a relatively large environment.&amp;#160; We think 50 is better default setting then SP1's 20 in this case and we'll switch default to 50 in SP2.&lt;/p&gt;  &lt;p&gt;-------------------------------------------------&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Essentially - to know if you are affected by the specific 2115 issue describe above - here is the criteria:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1.&amp;#160; You are seeing 2115 bind events in the OpsMgr event log of the RMS or MS, and they are recurring every minute.&lt;/p&gt;  &lt;p&gt;2.&amp;#160; The events have a Workflow ID of:&amp;#160; Workflow Id : Microsoft.SystemCenter.DataWarehouse.CollectEventData&lt;/p&gt;  &lt;p&gt;3.&amp;#160; The &amp;quot;has not received a response&amp;quot; time is increasing, and growing to be a very large number over time.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here is an example of a MS with the problem:&amp;#160; Note consecutive events, from the CollectEventData workflow, occurring every minute, with the time being a large number and increasing:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Warning   &lt;br /&gt;Event Source:&amp;#160;&amp;#160; HealthService    &lt;br /&gt;Event Category:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; None    &lt;br /&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2115    &lt;br /&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5/5/2008    &lt;br /&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2:37:06 PM    &lt;br /&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A    &lt;br /&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MS1    &lt;br /&gt;Description:    &lt;br /&gt;A Bind Data Source in Management Group MG1 has posted items to the workflow, but has not received a response in 706594 seconds.&amp;#160; This indicates a performance or functional problem with the workflow.    &lt;br /&gt; Workflow Id : Microsoft.SystemCenter.DataWarehouse.CollectEventData    &lt;br /&gt; Instance&amp;#160;&amp;#160;&amp;#160; : MS1.domain.com    &lt;br /&gt; Instance Id : {646486D0-E366-03CA-38E7-79A0D6F34F82} &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Warning   &lt;br /&gt;Event Source:&amp;#160;&amp;#160; HealthService    &lt;br /&gt;Event Category:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; None    &lt;br /&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2115    &lt;br /&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5/5/2008    &lt;br /&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2:36:05 PM    &lt;br /&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A    &lt;br /&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MS1    &lt;br /&gt;Description:    &lt;br /&gt;A Bind Data Source in Management Group MG1 has posted items to the workflow, but has not received a response in 706533 seconds.&amp;#160; This indicates a performance or functional problem with the workflow.    &lt;br /&gt; Workflow Id : Microsoft.SystemCenter.DataWarehouse.CollectEventData    &lt;br /&gt; Instance&amp;#160;&amp;#160;&amp;#160; : MS1.domain.com    &lt;br /&gt; Instance Id : {646486D0-E366-03CA-38E7-79A0D6F34F82} &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Warning   &lt;br /&gt;Event Source:&amp;#160;&amp;#160; HealthService    &lt;br /&gt;Event Category:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; None    &lt;br /&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2115    &lt;br /&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5/5/2008    &lt;br /&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2:35:03 PM    &lt;br /&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A    &lt;br /&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MS1    &lt;br /&gt;Description:    &lt;br /&gt;A Bind Data Source in Management Group MG1 has posted items to the workflow, but has not received a response in 706471 seconds.&amp;#160; This indicates a performance or functional problem with the workflow.    &lt;br /&gt; Workflow Id : Microsoft.SystemCenter.DataWarehouse.CollectEventData    &lt;br /&gt; Instance&amp;#160;&amp;#160;&amp;#160; : MS1.domain.com    &lt;br /&gt; Instance Id : {646486D0-E366-03CA-38E7-79A0D6F34F82}&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3042137" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/agents/default.aspx">agents</category></item><item><title>What SQL maintenance should I perform on my OpsMgr databases?</title><link>http://blogs.technet.com/kevinholman/archive/2008/04/12/what-sql-maintenance-should-i-perform-on-my-opsmgr-databases.aspx</link><pubDate>Sat, 12 Apr 2008 02:38:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3035376</guid><dc:creator>kevinhol</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3035376.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3035376</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3035376</wfw:comment><description>&lt;p&gt;&lt;strong&gt;This question comes up a lot.&amp;#160; The answer is really - not what maintenance you should be performing... but what maintenance you should be *excluding*.... or when.&amp;#160; Here is why:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Most SQL DBA's will set up some pretty basic default maintenance on all SQL DB's they support.&amp;#160; This often includes, but is not limited to:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DBCC CHECKDB&lt;/strong&gt;&amp;#160; (to look for DB errors and report on them)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE STATISTICS&lt;/strong&gt;&amp;#160; (to boost query performance)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DBCC DBREINDEX&lt;/strong&gt;&amp;#160; (to rebuild the table indexes to boost performance)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BACKUP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SQL DBA's might schedule these to run via the SQL Agent to execute nightly, weekly, or some combination of the above depending on DB size and requirements.&lt;/p&gt;  &lt;p&gt;On the other side of the coin.... in some companies, the MOM/OpsMgr team installs and owns the SQL server.... and they dont do ANY default maintenance to SQL.&amp;#160; Because of this - a focus in OpsMgr was to have the Ops DB and Datawarehouse DB to be fully self-maintaining.... providing a good level of SQL performance whether or not any default maintenance was being done.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Operational Database:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Reindexing is already taking place against the OperationsManager database for some of the tables.&amp;#160; This is built into the product.&amp;#160; What we need to ensure - is that any default DBA maintenance tasks are not redundant nor conflicting with our built-in maintenance, and our built-in schedules:&lt;/p&gt;  &lt;p&gt;There is a rule in OpsMgr that is targeted at the &lt;strong&gt;Root Management Server&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="232" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb.png" width="478" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The rule executes the &amp;quot;p_OptimizeIndexes&amp;quot; stored procedure, every day at 2:30AM:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="427" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_1.png" width="606" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_1.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_6.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_2.png" width="729" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This rule cannot be changed or modified.&amp;#160; Therefore - we need to ensure there is not other SQL maintenance (including backups) running at 2:30AM, or performance will be impacted.&lt;/p&gt;  &lt;p&gt;If you want to view the built-in UPDATE STATISTICS and DBCC DBREINDEX jobs history - just run the following queries:&lt;/p&gt;  &lt;p&gt;select *    &lt;br /&gt;from DomainTable dt     &lt;br /&gt;inner join DomainTableIndexOptimizationHistory dti     &lt;br /&gt;on dt.domaintablerowID = dti.domaintableindexrowID     &lt;br /&gt;ORDER BY optimizationdurationseconds DESC &lt;/p&gt;  &lt;p&gt;select *    &lt;br /&gt;from DomainTable dt     &lt;br /&gt;inner join DomainTableStatisticsUpdateHistory dti     &lt;br /&gt;on dt.domaintablerowID = dti.domaintablerowID     &lt;br /&gt;ORDER BY UpdateDurationSeconds DESC&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Take note of the update/optimization duration seconds column&lt;/strong&gt;.&amp;#160; This will show you how long your maintenance is typically running.&amp;#160; In a healthy environment these should not take very long.&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you want to view the fragmentation levels of the current tables in the database, run:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DBCC SHOWCONTIG WITH FAST&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here is some sample output:&lt;/p&gt;  &lt;p&gt;----------------------------------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;DBCC SHOWCONTIG scanning 'Alert' table...    &lt;br /&gt;Table: 'Alert' (1771153355); index ID: 1, database ID: 5     &lt;br /&gt;TABLE level scan performed.     &lt;br /&gt;- Pages Scanned................................: 936     &lt;br /&gt;- Extent Switches..............................: 427     &lt;br /&gt;- &lt;strong&gt;Scan Density [Best Count:Actual Count].......: 27.34%&lt;/strong&gt; [117:428]     &lt;br /&gt;- &lt;strong&gt;Logical Scan Fragmentation ..................: 60.90%&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;----------------------------------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;In general - we would like the &amp;quot;&lt;strong&gt;Scan density&lt;/strong&gt;&amp;quot; to be &lt;strong&gt;&lt;em&gt;high&lt;/em&gt;&lt;/strong&gt; (Above 80%), and the &amp;quot;&lt;strong&gt;Logical Scan Fragmentation&lt;/strong&gt;&amp;quot; to be &lt;strong&gt;&lt;em&gt;low&lt;/em&gt;&lt;/strong&gt; (below 30%).&amp;#160; What you might find... is that *some* of the tables are more fragmented than others, because our built-in maintenance does not reindex all tables.&amp;#160; Especially tables like the raw perf, event, and localizedtext tables.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;That said - there is nothing wrong with running a DBA's default maintenance against the Operational database&lt;/strong&gt;..... reindexing these tables in the database might also help console performance.&amp;#160; We just dont want to run any DBA maintenance during the same time that we run our own internal maintenance, so try not to conflict with this schedule.&amp;#160; Care should also be taken in any default DBA maintenance, that it does not run too long, or impact normal operations of OpsMgr.&amp;#160; Maintenance jobs should be monitored, and should not conflict with the backup schedules as well.&lt;/p&gt;  &lt;p&gt;Here is a reindex job you can schedule with SQL agent.... for the OpsDB:&lt;/p&gt;  &lt;p&gt;USE OperationsManager    &lt;br /&gt;go     &lt;br /&gt;SET ANSI_NULLS ON     &lt;br /&gt;SET ANSI_PADDING ON     &lt;br /&gt;SET ANSI_WARNINGS ON     &lt;br /&gt;SET ARITHABORT ON     &lt;br /&gt;SET CONCAT_NULL_YIELDS_NULL ON     &lt;br /&gt;SET QUOTED_IDENTIFIER ON     &lt;br /&gt;SET NUMERIC_ROUNDABORT OFF     &lt;br /&gt;EXEC SP_MSForEachTable &amp;quot;Print 'Reindexing '+'?' DBCC DBREINDEX ('?')&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Data Warehouse Database:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The data warehouse DB is also fully self maintaining.&amp;#160; This is called out by a rule &amp;quot;&lt;strong&gt;Standard Data Warehouse Data Set maintenance rule&lt;/strong&gt;&amp;quot; which is targeted to the &amp;quot;&lt;strong&gt;Standard Data Set&lt;/strong&gt;&amp;quot; object type.&amp;#160; This stored procedure is called on the data warehouse &lt;strong&gt;&lt;em&gt;every 60 seconds&lt;/em&gt;&lt;/strong&gt;.&amp;#160; It performs many, many tasks, of which Index optimization is but one.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_8.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="186" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_3.png" width="691" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhatSQLmaintenanceshouldIperformonmyOpsM_10632/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This SP calls the StandardDatasetOptimize stored procedure, which handles any index operations.&lt;/p&gt;  &lt;p&gt;To examine the index and statistics history - run the following query for the Alert, Event, Perf, and State tables:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;select basetablename, optimizationstartdatetime, optimizationdurationseconds,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; beforeavgfragmentationinpercent, afteravgfragmentationinpercent,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; optimizationmethod, onlinerebuildlastperformeddatetime     &lt;br /&gt;from StandardDatasetOptimizationHistory sdoh     &lt;br /&gt;inner join StandardDatasetAggregationStorageIndex sdasi     &lt;br /&gt;on sdoh.StandardDatasetAggregationStorageIndexRowId = sdasi.StandardDatasetAggregationStorageIndexRowId     &lt;br /&gt;inner join StandardDatasetAggregationStorage sdas     &lt;br /&gt;on sdasi.StandardDatasetAggregationStorageRowId = sdas.StandardDatasetAggregationStorageRowId     &lt;br /&gt;ORDER BY optimizationdurationseconds DESC&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then examine the default domain tables optimization history.... run the same two queries as listed above for the OperationsDB.&lt;/p&gt;  &lt;p&gt;In the data warehouse - we can see that all the necessary tables are being updated and reindexed as needed.&amp;#160; When a table is 10% fragmented - we reorganize.&amp;#160; When it is 30% or more, we rebuild the index.&lt;/p&gt;  &lt;p&gt;Therefore - &lt;strong&gt;there is no need for a DBA to execute any UPDATE STATISTICS or DBCC DBREINDEX maintenance against this database&lt;/strong&gt;.&amp;#160; Furthermore, since we run our maintenance every 60 seconds, and only execute maintenance when necessary, there is no &amp;quot;set window&amp;quot; where we will run our maintenance jobs.&amp;#160; This means that if a DBA team also sets up a UPDATE STATISTICS or DBCC DBREINDEX job - it can conflict with our jobs and execute concurrently.&amp;#160; This should not be performed.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For the above reasons, I would recommend against any maintenance jobs on the &lt;strong&gt;Data Warehouse DB&lt;/strong&gt;, beyond a CHECKDB (only if DBA's mandate it) and a good backup schedule.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For the OpsDB:&lt;/strong&gt; any standard maintenance is fine, as long as it does not conflict with the built-in maintenance, or impact production by taking too long, or having an impact on I/O.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lastly - I'd like to discuss the recovery model of the SQL database.&amp;#160; We default to &amp;quot;&lt;strong&gt;simple&lt;/strong&gt;&amp;quot; for all our DB's.&amp;#160; This should be left alone.... unless you have *&lt;strong&gt;very&lt;/strong&gt;* specific reasons to change this.&amp;#160; Some SQL teams automatically assume all databases should be set to &amp;quot;&lt;strong&gt;full&lt;/strong&gt;&amp;quot; recovery model.&amp;#160; This requires that they back up the transaction logs on a very regular basis, but give the added advantage of restoring up to the time of the last t-log backup.&amp;#160; For OpsMgr, this is of very little value, as the data changing on an hourly basis is of little value compared to the complexity added by moving from simple to full.&amp;#160; Also, changing to full will mean that your transaction logs will only checkpoint once a t-log backup is performed.&amp;#160; What I have seen, is that many companies aren't prepared for the amount of data written to these databases.... and their standard transaction log backups (often hourly) are not frequent enough to keep them from filling.&amp;#160; The only valid reason to change to FULL, in my opinion, is when you are using an advanced replication strategy, like log shipping, which requires full recovery model.&amp;#160; When in doubt - &lt;strong&gt;&lt;em&gt;keep it simple&lt;/em&gt;&lt;/strong&gt;.&amp;#160; :-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;P.S....&amp;#160; The Operations Database needs 50% free space at all times.&amp;#160; This is for growth, and for re-index operations to be successful.&amp;#160; This is a general supportability recommendation, but the OpsDB will alert when this falls below 40%.&amp;#160; &lt;/p&gt;  &lt;p&gt;For the Data warehouse.... we do not require the same 50% free space.&amp;#160; This would be a temendous requireemnts if we had a multiple-terabyte database!&lt;/p&gt;  &lt;p&gt;Think of the data warehouse to have 2 stages... a &amp;quot;growth&amp;quot; stage (while it is adding data and not yet grooming much (havent hit the default 400 days retention) and a &amp;quot;maturity stage&amp;quot; where agent count is steady, MP's are not changing, and the grooming is happening because we are at 400 days retention.&amp;#160; During &amp;quot;growth&amp;quot; we need to watch and maintain free space, and monitor for available disk space.&amp;#160; In &amp;quot;maturity&amp;quot; we only need enough free space to handle our index operations.&amp;#160; when you start talking 1 Terabyte of data.... that means 500GB of free space, which is expensive, and.&amp;#160; If you cannot allocate it.... then just allow auto-grow and monitor the database.... but always plan for it from a volume size perspective.&lt;/p&gt;  &lt;p&gt;For transaction log sizing - we don't have any hard rules.&amp;#160; A good rule of thumb for the OpsDB is ~20% to 50% of the database size.... this all depends on your environment.&amp;#160; For the Data warehouse, it depends on how large the warehouse is - but you will probably find steady state to require somewhere around 10% to 20% of the warehouse size.&amp;#160; Any time we are doing any additional grooming of an alert/event/perf storm.... or changin grooming from 400 days to 300 days - this will require a LOT more transaction log space - so keep that in mind as your databases grow.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3035376" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Grooming process in the Operations Database</title><link>http://blogs.technet.com/kevinholman/archive/2008/02/13/grooming-process-in-the-operations-database.aspx</link><pubDate>Wed, 13 Feb 2008 05:51:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2881422</guid><dc:creator>kevinhol</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2881422.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2881422</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2881422</wfw:comment><description>&lt;p&gt;This is a continuation of my other post, on general alert grooming:&lt;/p&gt;  &lt;p&gt;&lt;a title="How grooming and auto-resolution work in the OpsMgr 2007 Operational database" href="http://blogs.technet.com/kevinholman/archive/2007/12/13/how-grooming-and-auto-resolution-work-in-the-opsmgr-2007-operational-database.aspx"&gt;How grooming and auto-resolution work in the OpsMgr 2007 Operational database&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Grooming of the OpsDB is called once per day at 12:00am&amp;#8230;. by the rule:&amp;#160; &amp;#8220;&lt;strong&gt;Partitioning and Grooming&lt;/strong&gt;&amp;#8221; You can search for this rule in the Authoring space of the console, under Rules. It is targeted to the &amp;#8220;&lt;strong&gt;Root Management Server&lt;/strong&gt;&amp;#8221; and is part of the System Center Internal Library.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="166" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_thumb_1.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It calls the &amp;#8220;&lt;strong&gt;p_PartitioningAndGrooming&lt;/strong&gt;&amp;#8221; stored procedure.&amp;#160; This SP calls two other SP's:&amp;#160; &lt;strong&gt;p_Partitioning&lt;/strong&gt; and then &lt;strong&gt;p_Grooming&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;p_Partitioning&lt;/strong&gt; inspects the table &lt;strong&gt;PartitionAndGroomingSettings&lt;/strong&gt;, and then calls the SP &lt;strong&gt;p_PartitionObject&lt;/strong&gt; for each object in the &lt;strong&gt;PartitionAndGroomingSettings&lt;/strong&gt; table where &amp;quot;&lt;strong&gt;IsPartitioned = 1&lt;/strong&gt;&amp;quot;&amp;#160;&amp;#160; (note - we partition event and perf into 61 daily tables - just like MOM 2005)&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;PartitionAndGroomingSettings&lt;/strong&gt; table:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_thumb_2.png" width="678" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;p_PartitionObject&lt;/strong&gt; SP first identifies the next partition in the sequence, truncates it to make sure it is empty, and then updates the &lt;strong&gt;PartitionTables&lt;/strong&gt; table in the database, to update the &lt;strong&gt;IsCurrent&lt;/strong&gt; field to the next numeric table for events and perf.&amp;#160; Then it calls the &lt;strong&gt;p_PartitionAlterInsertView&lt;/strong&gt; sproc, to make new data start writing to the current event and perf table.&lt;/p&gt;  &lt;p&gt;To review which tables you are writing to - execute the following query:&amp;#160;&amp;#160; &lt;em&gt;&lt;strong&gt;select * from partitiontables where IsCurrent = '1'&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A &lt;strong&gt;&lt;em&gt;select * from partitiontables &lt;/em&gt;&lt;/strong&gt;will show you all 61 event and perf tables, and when they were used.&amp;#160; You should see a &lt;strong&gt;PartitionStartTime&lt;/strong&gt; updated every day - around midnight (time is stored in UTC in the database).&amp;#160; If partitioning is failing to run, then we wont see this date changing every day.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok - that's the first step of the &lt;strong&gt;p_PartitioningAndGrooming&lt;/strong&gt; sproc - Partitioning.&amp;#160; Now - if that is all successful, we will start grooming!&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;p_Grooming&lt;/strong&gt; is called after partitioning is successful.&amp;#160; One of the first things it does - is to update the InternalJobHistory table.&amp;#160; In this able - we keep a record of all partitioning and grooming jobs.&amp;#160; It is a good spot check to see what's going on with grooming.&amp;#160; To have a peek at this table - execute a &lt;strong&gt;&lt;em&gt;select * from InternalJobHistory order by InternalJobHistoryId&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="137" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/GroomingprocessintheOperationsDatabase_1255A/image_thumb_3.png" width="670" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;p_Grooming&lt;/strong&gt; sproc then calls &lt;strong&gt;p_GroomPartitionedObjects&amp;#160; &lt;/strong&gt;This sproc will first examine the &lt;strong&gt;PartitionAndGroomingSettings&lt;/strong&gt; and compare the days to keep column, against the current date, to figure out how many partitions to groom.&amp;#160; It will then inspect the partitions to ensure they have data, and then truncate the partition, by calling &lt;strong&gt;p_PartitionTruncate.&amp;#160; &lt;/strong&gt;The &lt;strong&gt;p_GroomPartitionedObjects &lt;/strong&gt;sproc will then update the &lt;strong&gt;PartitionAndGroomingSettings &lt;/strong&gt;table with the current time, under the &lt;strong&gt;GroomingRunTime&lt;/strong&gt; column.&amp;#160; &lt;/p&gt;  &lt;p&gt;Next - the &lt;strong&gt;p_Grooming&lt;/strong&gt; sproc continues, by calling &lt;strong&gt;p_GroomNonPartitionedObjects.&amp;#160; p_GroomNonPartitionedObjects &lt;/strong&gt;is a short, but complex sproc - in that is calls all the individual sprocs listed in the &lt;strong&gt;PartitionAndGroomingSettings&lt;/strong&gt; table where IsPartitioned = 0.&amp;#160; (see my other post at the link above to follow the logic of one of these non-partitioned sprocs)&lt;/p&gt;  &lt;p&gt;Next - the &lt;strong&gt;p_Grooming&lt;/strong&gt; sproc continues, by updating the InternalJobHistory table, to give it a status of success (StatusCode of 1 = success, 2= failed, 0 appears to be never completed?)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you ever have a problem with grooming - or need to get your OpsDB database size under control - simply reduce the data retention days, in the console, under Administration, Settings, Database Grooming.&amp;#160; To start with - I recommend setting all these to just 2 days, fromt he default of 7.&amp;#160; This keeps your OpsDB under control until you have time to tune all the noise fromt he MP's you import.&amp;#160; So just reduce this number, then open up query analyzer, and execute &lt;strong&gt;p_PartitioningAndGrooming&lt;/strong&gt;&amp;#160; When it is done, check the job status by executing &lt;strong&gt;&lt;em&gt;select * from InternalJobHistory order by InternalJobHistoryId&amp;#160;&amp;#160; &lt;/em&gt;&lt;/strong&gt;The last groom job should be present, and successful.&amp;#160; The OpsDB size should be smaller, with more free space.&amp;#160; And to validate, you can always run my large table query, found at:&amp;#160;&amp;#160; &lt;a title="Useful Operations Manager 2007 SQL queries" href="http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx"&gt;Useful Operations Manager 2007 SQL queries&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2881422" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Print Server management pack fills the Operational DB with TONS of perf data</title><link>http://blogs.technet.com/kevinholman/archive/2008/02/12/print-server-management-pack-fills-the-operational-db-with-tons-of-perf-data.aspx</link><pubDate>Tue, 12 Feb 2008 03:19:51 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2872547</guid><dc:creator>kevinhol</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2872547.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2872547</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2872547</wfw:comment><description>&lt;p&gt;This is something I have noticed in MOM 2005, and seems to be the same in the conversion MP for OpsMgr 2007.&amp;#160; (Version 6.0.5000.0 of the Microsoft.Windows.Server.Printserver (Converted) MP).&amp;#160; When you import this MP, it will fill the Operational and reporting databases with performance data about print jobs and queues, if you have a large number of print servers/queues in your environment.&lt;/p&gt;  &lt;p&gt;If reporting on this perf data is not critical to your environment, you should disable these rules:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PrintServermanagementpackfillstheOperati_101C0/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="453" alt="clip_image002" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/PrintServermanagementpackfillstheOperati_101C0/clip_image002_thumb.jpg" width="702" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2872547" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/management+pack/default.aspx">management pack</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Failed tasks aren't groomed from the Operational Database</title><link>http://blogs.technet.com/kevinholman/archive/2008/02/05/failed-tasks-aren-t-groomed-from-the-operational-database.aspx</link><pubDate>Tue, 05 Feb 2008 20:02:59 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2832480</guid><dc:creator>kevinhol</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2832480.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2832480</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2832480</wfw:comment><description>&lt;p&gt;This appears to be present up to RC-SP1 version, build 6.0.6246.0&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the Task Status console view - I noticed an old failed task from 2 months ago..... however, my task grooming is set to 7 days.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To view the grooming process:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/kevinholman/archive/2007/12/13/how-grooming-and-auto-resolution-work-in-the-opsmgr-2007-operational-database.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2007/12/13/how-grooming-and-auto-resolution-work-in-the-opsmgr-2007-operational-database.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Basically &amp;#8211; select * from PartitionAndGroomingSettings will show you all grooming going on.&lt;/p&gt;  &lt;p&gt;Tasks are kept in the jobstatus table.&lt;/p&gt;  &lt;p&gt;Select * from jobstatus will show all tasks.&lt;/p&gt;  &lt;p&gt;p_jobstatusgrooming is called to groom this table.&lt;/p&gt;  &lt;p&gt;Here is the text of that SP:&lt;/p&gt;  &lt;p&gt;--------------------------------&lt;/p&gt;  &lt;p&gt;USE [OperationsManager]&lt;/p&gt;  &lt;p&gt;GO&lt;/p&gt;  &lt;p&gt;/****** Object:&amp;#160; StoredProcedure [dbo].[p_JobStatusGrooming]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/05/2008 10:49:32 ******/&lt;/p&gt;  &lt;p&gt;SET ANSI_NULLS ON&lt;/p&gt;  &lt;p&gt;GO&lt;/p&gt;  &lt;p&gt;SET QUOTED_IDENTIFIER ON&lt;/p&gt;  &lt;p&gt;GO&lt;/p&gt;  &lt;p&gt;ALTER PROCEDURE [dbo].[p_JobStatusGrooming]&lt;/p&gt;  &lt;p&gt;AS&lt;/p&gt;  &lt;p&gt;BEGIN&lt;/p&gt;  &lt;p&gt;SET NOCOUNT ON&lt;/p&gt;  &lt;p&gt;DECLARE @Err int&lt;/p&gt;  &lt;p&gt;DECLARE @Ret int&lt;/p&gt;  &lt;p&gt;DECLARE @RowCount int&lt;/p&gt;  &lt;p&gt;DECLARE @SaveTranCount int&lt;/p&gt;  &lt;p&gt;DECLARE @GroomingThresholdLocal datetime&lt;/p&gt;  &lt;p&gt;DECLARE @GroomingThresholdUTC datetime&lt;/p&gt;  &lt;p&gt;DECLARE @TimeGroomingRan datetime&lt;/p&gt;  &lt;p&gt;DECLARE @MaxTimeGroomed datetime&lt;/p&gt;  &lt;p&gt;SET @SaveTranCount = @@TRANCOUNT&lt;/p&gt;  &lt;p&gt;SET @TimeGroomingRan = getutcdate()&lt;/p&gt;  &lt;p&gt;SELECT @GroomingThresholdLocal = dbo.fn_GroomingThreshold(DaysToKeep, getdate())&lt;/p&gt;  &lt;p&gt;FROM dbo.PartitionAndGroomingSettings&lt;/p&gt;  &lt;p&gt;WHERE ObjectName = 'JobStatus'&lt;/p&gt;  &lt;p&gt;EXEC dbo.p_ConvertLocalTimeToUTC @GroomingThresholdLocal, @GroomingThresholdUTC OUT&lt;/p&gt;  &lt;p&gt;IF (@@ERROR &amp;lt;&amp;gt; 0)&lt;/p&gt;  &lt;p&gt;BEGIN&lt;/p&gt;  &lt;p&gt;GOTO Error_Exit&lt;/p&gt;  &lt;p&gt;END&lt;/p&gt;  &lt;p&gt;-- Selecting the max time to be groomed to update the table&lt;/p&gt;  &lt;p&gt;SELECT @MaxTimeGroomed = MAX(LastModified)&lt;/p&gt;  &lt;p&gt;FROM dbo.JobStatus &lt;/p&gt;  &lt;p&gt;WHERE TimeFinished IS NOT NULL&lt;/p&gt;  &lt;p&gt;AND LastModified &amp;lt; @GroomingThresholdUTC&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;IF @MaxTimeGroomed IS NULL&lt;/p&gt;  &lt;p&gt;GOTO Success_Exit&lt;/p&gt;  &lt;p&gt;BEGIN TRAN&lt;/p&gt;  &lt;p&gt;-- Change the Statement below to reflect the new item &lt;/p&gt;  &lt;p&gt;-- that needs to be groomed&lt;/p&gt;  &lt;p&gt;DELETE FROM dbo.JobStatus&lt;/p&gt;  &lt;p&gt;WHERE TimeFinished IS NOT NULL&lt;/p&gt;  &lt;p&gt;AND LastModified &amp;lt; @GroomingThresholdUTC&lt;/p&gt;  &lt;p&gt;SET @Err = @@ERROR&lt;/p&gt;  &lt;p&gt;IF (@Err &amp;lt;&amp;gt; 0)&lt;/p&gt;  &lt;p&gt;BEGIN&lt;/p&gt;  &lt;p&gt;GOTO Error_Exit&lt;/p&gt;  &lt;p&gt;END&lt;/p&gt;  &lt;p&gt;UPDATE dbo.PartitionAndGroomingSettings&lt;/p&gt;  &lt;p&gt;SET GroomingRunTime = @TimeGroomingRan,&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataGroomedMaxTime = @MaxTimeGroomed&lt;/p&gt;  &lt;p&gt;WHERE ObjectName = 'JobStatus'&lt;/p&gt;  &lt;p&gt;SELECT @Err = @@ERROR, @RowCount = @@ROWCOUNT&lt;/p&gt;  &lt;p&gt;IF (@Err &amp;lt;&amp;gt; 0 OR @RowCount &amp;lt;&amp;gt; 1)&lt;/p&gt;  &lt;p&gt;BEGIN&lt;/p&gt;  &lt;p&gt;GOTO Error_Exit&lt;/p&gt;  &lt;p&gt;END&lt;/p&gt;  &lt;p&gt;COMMIT TRAN&lt;/p&gt;  &lt;p&gt;Success_Exit:&lt;/p&gt;  &lt;p&gt;RETURN 0&lt;/p&gt;  &lt;p&gt;Error_Exit:&lt;/p&gt;  &lt;p&gt;-- If there was an error and there is a transaction&lt;/p&gt;  &lt;p&gt;-- pending, rollback.&lt;/p&gt;  &lt;p&gt;IF (@@TRANCOUNT &amp;gt; @SaveTranCount)&lt;/p&gt;  &lt;p&gt;ROLLBACK TRAN&lt;/p&gt;  &lt;p&gt;RETURN 1&lt;/p&gt;  &lt;p&gt;END&lt;/p&gt;  &lt;p&gt;------------------------------------&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is the problem in the SP:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;DELETE FROM dbo.JobStatus&lt;/p&gt;  &lt;p&gt;WHERE TimeFinished IS NOT NULL&lt;/p&gt;  &lt;p&gt;AND LastModified &amp;lt; @GroomingThresholdUTC&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We only delete (groom) tasks that have a timestamp in TimeFinished.&amp;#160; If a failed task doesn&amp;#8217;t finish &amp;#8211; this field will be NULL and never gets groomed.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2832480" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Moving the Data Warehouse and ACS databases in OpsMgr 2007</title><link>http://blogs.technet.com/kevinholman/archive/2007/12/14/moving-the-data-warehouse-and-acs-databases-in-opsmgr-2007.aspx</link><pubDate>Fri, 14 Dec 2007 19:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2646813</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2646813.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2646813</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2646813</wfw:comment><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;Moving the Data Warehouse and ACS databases in OpsMgr 2007&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;Instructions for how to move the data warehouse database, and ACS database – have been published.&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The Operations Manager 2007 Backup and Recovery Guide has been updated as of December 2007, to include moving the DW and ACS DB's, in addition to the previously published move of the OpsDB.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Perhaps you deployed your databases to interim hardware?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Perhaps you outgrew you current disk I/O?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Perhaps you want to move to a high availability cluster?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Move ‘em!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/opsmgr/bb498235.aspx" mce_href="http://technet.microsoft.com/en-us/opsmgr/bb498235.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://technet.microsoft.com/en-us/opsmgr/bb498235.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2646813" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/ACS/default.aspx">ACS</category></item><item><title>How grooming and auto-resolution work in the OpsMgr 2007 Operational database</title><link>http://blogs.technet.com/kevinholman/archive/2007/12/13/how-grooming-and-auto-resolution-work-in-the-opsmgr-2007-operational-database.aspx</link><pubDate>Fri, 14 Dec 2007 02:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2644996</guid><dc:creator>kevinhol</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2644996.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2644996</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2644996</wfw:comment><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;How Grooming and Auto-Resolution works in the OpsMgr 2007 Operations DB&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;Warning – don’t read this if you are bored easily.&amp;nbsp;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;In a simplified view to groom alerts…..&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;Grooming of the ops DB is called once per day at 12:00am…. by the rule:&amp;nbsp; “&lt;STRONG&gt;Partitioning and Grooming&lt;/STRONG&gt;”&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You can search for this rule in the Authoring space of the console, under Rules.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is targeted to the “&lt;STRONG&gt;Root Management Server&lt;/STRONG&gt;” and is part of the System Center Internal Library.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;It calls the “&lt;STRONG&gt;p_PartitioningAndGrooming&lt;/STRONG&gt;” stored procedure, which calls &lt;STRONG&gt;p_Grooming&lt;/STRONG&gt;, which calls &lt;STRONG&gt;p_GroomNonPartitionedObjects&lt;/STRONG&gt; (Alerts are not partitioned) which inspects the &lt;STRONG&gt;PartitionAndGroomingSetting&lt;/STRONG&gt;s table… and executes each stored procedure.&amp;nbsp; The Alerts stored procedure in that table is referenced as &lt;STRONG&gt;p_AlertGrooming&lt;/STRONG&gt; which has the following sql statement:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; AlertId &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; #AlertsToGroom&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;Alert&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; TimeResolved &lt;SPAN style="COLOR: gray"&gt;IS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;NULL&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; TimeResolved &lt;SPAN style="COLOR: gray"&gt;&amp;lt;&lt;/SPAN&gt; @GroomingThresholdUTC&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; ResolutionState &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; 255&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;So…. the criteria for what is groomed is pretty simple:&amp;nbsp; In a resolution state of “Closed” (255) and older than the 7 day default setting (or your custom setting referenced in the table above)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;We won’t groom any alerts that are in &lt;STRONG&gt;New&lt;/STRONG&gt; (0), or any &lt;STRONG&gt;custom resolution-states&lt;/STRONG&gt; (custom ID #).&amp;nbsp; Those will have to be set to “&lt;STRONG&gt;Closed&lt;/STRONG&gt;” (255)…. either by autoresolution of a monitor returning to healthy, direct user interaction, our built in autoresolution mechanism, or your own custom script.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;Ok – that covers grooming.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;However – I can see that brings up the question – how does auto-resolution work?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;IMG style="WIDTH: 539px; HEIGHT: 307px" height=307 src="http://blogs.technet.com/photos/kevinholman/images/2645011/original.aspx" width=539 mce_src="http://blogs.technet.com/photos/kevinholman/images/2645011/original.aspx"&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;That specifically states “&lt;STRONG&gt;alerts in the new resolution state&lt;/STRONG&gt;”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I don’t think that is completely correct:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;That is called upon by the rule “&lt;STRONG&gt;Alert Auto Resolve Execute All&lt;/STRONG&gt;” which runs &lt;STRONG&gt;p_AlertAutoResolveExecuteAll&lt;/STRONG&gt; once per day at &lt;STRONG&gt;4:00&lt;/STRONG&gt;am.&amp;nbsp; This calls &lt;STRONG&gt;p_AlertAutoResolve&lt;/STRONG&gt; twice…. once with a variable of “&lt;STRONG&gt;0&lt;/STRONG&gt;” and once with a “&lt;STRONG&gt;1&lt;/STRONG&gt;”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;Here is the sql statement: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;@AutoResolveType &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; 0&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; @AlertResolvePeriodInDays &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; [SettingValue]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[GlobalSettings]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; [ManagedTypePropertyId] &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;fn_ManagedTypePropertyId_MicrosoftSystemCenterManagementGroup_HealthyAlertAutoResolvePeriod&lt;SPAN style="COLOR: gray"&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SET&lt;/SPAN&gt; @AutoResolveThreshold &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: fuchsia"&gt;DATEADD&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;dd&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;-&lt;/SPAN&gt;@AlertResolvePeriodInDays&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: fuchsia"&gt;getutcdate&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SET&lt;/SPAN&gt; @RootMonitorId &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;fn_ManagedTypeId_SystemHealthEntityState&lt;SPAN style="COLOR: gray"&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- We will resolve all alerts that have green state and are un-resolved&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- and haven't been modified for N number of days.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; @AlertsToBeResolved&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[AlertId]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[Alert] A&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;JOIN&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[State] S&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ON&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[BaseManagedEntityId] &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; S&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[BaseManagedEntityId] &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; S&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[MonitorId] &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; @RootMonitorId&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[LastModified] &lt;SPAN style="COLOR: gray"&gt;&amp;lt;&lt;/SPAN&gt; @AutoResolveThreshold&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[ResolutionState] &lt;SPAN style="COLOR: gray"&gt;&amp;lt;&amp;gt;&lt;/SPAN&gt; 255&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; S&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[HealthState] &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; 1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;snip&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ELSE&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;IF&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;@AutoResolveType &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; @AlertResolvePeriodInDays &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; [SettingValue]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[GlobalSettings]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; [ManagedTypePropertyId] &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;fn_ManagedTypePropertyId_MicrosoftSystemCenterManagementGroup_AlertAutoResolvePeriod&lt;SPAN style="COLOR: gray"&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SET&lt;/SPAN&gt; @AutoResolveThreshold &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: fuchsia"&gt;DATEADD&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;dd&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;-&lt;/SPAN&gt;@AlertResolvePeriodInDays&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: fuchsia"&gt;getutcdate&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- We will resolve all alerts that are un-resolved&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- and haven't been modified for N number of days.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; @AlertsToBeResolved&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[AlertId]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[Alert] A&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; A&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[LastModified] &lt;SPAN style="COLOR: gray"&gt;&amp;lt;&lt;/SPAN&gt; @AutoResolveThreshold&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; ResolutionState &lt;SPAN style="COLOR: gray"&gt;&amp;lt;&amp;gt;&lt;/SPAN&gt; 255&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"&gt;So we are basically checking that &lt;STRONG&gt;Resolution state &amp;lt;&amp;gt; 255&lt;/STRONG&gt;….. not specifically “&lt;STRONG&gt;New&lt;/STRONG&gt;” (0) as we would lead you to believe by the wording in the interface.&amp;nbsp; There are simply two types of auto-resolution:&amp;nbsp; Resolve all alerts where the object has returned to a healthy state in “&lt;STRONG&gt;N&lt;/STRONG&gt;” days….. and Resolve all alerts no matter what, as long as they haven’t been modified in “&lt;STRONG&gt;N&lt;/STRONG&gt;” days.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2644996" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/grooming/default.aspx">grooming</category></item><item><title>Useful MOM 2005 SQL queries</title><link>http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-mom-2005-sql-queries.aspx</link><pubDate>Thu, 18 Oct 2007 21:44:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2199783</guid><dc:creator>kevinhol</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2199783.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2199783</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2199783</wfw:comment><description>&lt;p&gt;&lt;font size="5"&gt;SCDW/DTS:&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Primary 6 tables that SCDW data is retained in:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SC_AlertFact_Table   &lt;br /&gt;SC_AlertHistoryFact_Table    &lt;br /&gt;SC_AlertToEventFact_Table    &lt;br /&gt;SC_EventFact_Table    &lt;br /&gt;SC_EventParameterFact_Table    &lt;br /&gt;SC_SampledNumericDataFact_Table &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Commands to execute to modify the data retention age:&amp;#160; Please run these commands changing the values from 385 to the number to the number of days of data to be retained: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Exec p_updategroomdays 'SC_AlertFact_Table', 385   &lt;br /&gt;Exec p_updategroomdays 'SC_AlertHistoryFact_Table', 385    &lt;br /&gt;Exec p_updategroomdays 'SC_AlertToEventFact_Table', 385    &lt;br /&gt;Exec p_updategroomdays 'SC_EventFact_Table', 385    &lt;br /&gt;Exec p_updategroomdays 'SC_EventParameterFact_Table', 385    &lt;br /&gt;Exec p_updategroomdays 'SC_SampledNumericDataFact_Table', 385 &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Queries to verify above setting:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;For example, to verify the number of days that the SC_AlertFact_Table retains data, use the following command: &lt;/p&gt;  &lt;p&gt;select cs.cs_tablename 'Table Name', wcs.wcs_groomdays 'Groom Days' from warehouseclassschema wcs   &lt;br /&gt;join classschemas cs    &lt;br /&gt;on cs.cs_classID = wcs.wcs_classID    &lt;br /&gt;where cs.cs_tablename = 'SC_AlertFact_Table'    &lt;br /&gt;and wcs.wcs_mustbegroomed = 1&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Grooming the SCDW:&lt;/strong&gt;&amp;#160; &lt;br /&gt;If you set the grooming data to attempt to groom too much data at a time, the job will likely fail due to the transaction log filling up.&amp;#160; You should first ensure your transaction log has plenty of free space, or grow it manually, or set it to auto-grow (if ample disk space).&amp;#160; Ensure your tempdb has ample room (disk space) to grow temporarily, and then attempt to run the SCDWgroomjob.&amp;#160; Start with only grooming out 10 days at a time. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Queries to find out how old present data is:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SELECT DATEDIFF(d, MIN(DateTimeLastModified), GETDATE()) AS [Current] FROM SC_AlertFact_View   &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTimeLastModified), GETDATE()) AS [Current] FROM SC_AlertHistoryFact_View    &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTimeEventStored), GETDATE()) AS [Current] FROM SC_AlertToEventFact_View    &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTimeStored), GETDATE()) AS [Current] FROM SC_EventFact_View    &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTimeEventStored), GETDATE()) AS [Current] FROM SC_EventParameterFact_View    &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTimeAdded), GETDATE()) AS [Current] FROM SC_SampledNumericDataFact_View &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Delete event data from SCDW (NOT SUPPORTED):&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;USE SystemCenterReporting   &lt;br /&gt;DELETE SC_EventFact_Table    &lt;br /&gt;FROM SC_EventFact_Table AS ft    &lt;br /&gt;INNER JOIN SC_EventDetailDimension_Table AS ed    &lt;br /&gt;ON ft.EventDetail_FK = ed.SMC_InstanceID    &lt;br /&gt;WHERE ed.EventID_PK = '1234' &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Query to examine the last groom job and how long it took in the SCDW:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Use SystemCenterReporting   &lt;br /&gt;GO    &lt;br /&gt;Select MWCS.GroomDays, MCS.ClassName, MCS.TableName,MWGI.*, DATEDIFF(s,MWGI.StartTime, MWGI.EndTime) AS GroomTookSeconds FROM dbo.SMC_Meta_WarehouseGroomingInfo MWGI    &lt;br /&gt;INNER JOIN SMC_Meta_ClassSchemas MCS    &lt;br /&gt;ON MWGI.ClassID=MCS.ClassID    &lt;br /&gt;INNER JOIN SMC_Meta_WarehouseClassSchema MWCS    &lt;br /&gt;ON MWGI.ClassID=MWCS.ClassID    &lt;br /&gt;ORDER BY MCS.ClassName &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Running the DTS job with latency:     &lt;br /&gt;&lt;/strong&gt;Add the &amp;#8220;/latency:90&amp;#8221;&amp;#160; switch to the scheduled task command line for the DTS job (MOM.Datawarehousing.DTSPackageGenerator.exe)    &lt;br /&gt;(The latency switch specifies the number of days to skip) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Setting query timeout value:&lt;/strong&gt;    &lt;br /&gt;If a *remote* query or DTS job times out, you can change the value in Ent. Manager, on the properties of the server, connections tab.&amp;#160; &lt;br /&gt;Default is 600, set this to 0 for unlimited. &lt;/p&gt;  &lt;p&gt;Query to look at oldest date of event records: &lt;/p&gt;  &lt;p&gt;use SystemCenterReporting   &lt;br /&gt;select min(timestored) from sdkeventview &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Given the event ID &amp;#8211; a quick query to view the number of distinct events for each message, and view the text of the event message: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct message, count(*) as number from sdkeventview where nteventid = '7036' group by message order by number desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Faking the Onepoint database to think DTS is working in order to groom:&lt;/strong&gt;    &lt;br /&gt;Changed the Date of &amp;quot;TimeDTSLastRan&amp;quot; to today's date in ReportingSettings table of Onepoint DB.    &lt;br /&gt;Then, run the MOMX Partitioning and grooming job.&amp;#160; This will delete all data in Onepoint based on the global setting of data retention, even if it has not been transferred to the SCDW. &lt;/p&gt;  &lt;p&gt;The GroomingSettings table also contains a &amp;#8220;TimeDTSLastRan&amp;#8221; value &amp;#8211; but this will be an old date, as it is typically the time and date of the reporting server install and is apparently not used by the grooming stored procedure. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DTS Logging:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;1. Setup Error Logging for the DTS Package. You can use info from the following MS KB to setup DTS Package Logging:   &lt;br /&gt;316043 HOW TO: Log Data Transformation Services Package Execution to a Text File    &lt;br /&gt;&lt;a href="http://support.microsoft.com/?id=316043"&gt;http://support.microsoft.com/?id=316043&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. SQL Log location:&amp;#160; Zip up all the files in the SQL Server Log folder &amp;quot;..\program files\microsoft    &lt;br /&gt;sql server\MSSQL\LOG&amp;quot; Note: if you have a SQL Named Instance then the path will be as following for     &lt;br /&gt;the LOG Folder:&amp;#160; &amp;quot;..\program files\microsoft sql server\SQLNamedInstance\MSSQL\LOG&amp;quot; &lt;/p&gt;  &lt;p&gt;3.&amp;#160;&amp;#160;&amp;#160;&amp;#160; SQL profiler settings to capture for DTS logging:    &lt;br /&gt;- Errors and Warnings&amp;#160;&amp;#160; ---&amp;gt; Add All events under this    &lt;br /&gt;- Stored Proc ---&amp;gt; RPC/SP Starting/Completed, SP:Stmt Starting/Completed, and&amp;#160; SP:     &lt;br /&gt;Recompile    &lt;br /&gt;- Transactions ---&amp;gt; All of these    &lt;br /&gt;- TSQL ---&amp;gt; SQL:Batch/SQL:Stmt Starting/Completed &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;Onepoint:&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Alerts:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Most common alerts in a Onepoint DB:&lt;/strong&gt;    &lt;br /&gt;This will tell us how many alerts we are generating per day, and &lt;/p&gt;  &lt;p&gt;SELECT CONVERT(char(10), TimeRaised, 101) AS &amp;quot;Alert Date (by Day)&amp;quot;, COUNT(*) AS &amp;quot;Number of Alerts&amp;quot;   &lt;br /&gt;FROM SDKAlertView    &lt;br /&gt;GROUP BY CONVERT(char(10), TimeRaised, 101)    &lt;br /&gt;ORDER BY &amp;quot;Alert Date (by Day)&amp;quot; DESC &lt;/p&gt;  &lt;p&gt;SELECT Culprit, Name, SUM(1) AS AlertCount, SUM(RepeatCount+1) AS AlertCountWithRepeatCount   &lt;br /&gt;FROM Alert WITH (NOLOCK)    &lt;br /&gt;WHERE ResolutionState = (0|255)    &lt;br /&gt;GROUP BY Culprit, Name    &lt;br /&gt;ORDER BY AlertCount DESC    &lt;br /&gt;-- ORDER BY AlertCountWithRepeatCount DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Events:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Most common events in a Onepoint DB:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SELECT CONVERT(char(10), TimeGenerated, 101) AS &amp;quot;Events Date (by Day)&amp;quot;, COUNT(*) AS &amp;quot;Number of Events&amp;quot;   &lt;br /&gt;FROM SDKEventView    &lt;br /&gt;GROUP BY CONVERT(char(10), TimeGenerated, 101)    &lt;br /&gt;ORDER BY &amp;quot;Events Date (by Day)&amp;quot; DESC &lt;/p&gt;  &lt;p&gt;SELECT NTEventID, COUNT(*) AS &amp;quot;Numver of Events&amp;quot;   &lt;br /&gt;FROM SDKEventView    &lt;br /&gt;GROUP BY NTEventID    &lt;br /&gt;ORDER BY &amp;quot;Numver of Events&amp;quot; DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To view the oldest events in the database (this should mirror the &amp;#8220;1&amp;#8221; in Lastgroomed from above query): &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select min(timestored) from sdkeventview &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To count the number of events in Onepoint: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select count(*) from sdkeventview &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To determine computers that are generating the most event data: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct ComputerName, count(*) as NumberOfOccurences from SDKEventView   &lt;br /&gt;group by Computername order by numberofoccurences desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To determine the noisiest computers and see the events they are generating: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 100 Computername, Message, NTEventID, Source, Count(*) AS TOTAL    &lt;br /&gt;from SDKEventView    &lt;br /&gt;Group by Computername, Message, NTEventID, Source    &lt;br /&gt;Order by TOTAL DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Selecting multiple events: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select * from SDKeventview where NTeventID in (&amp;#8216;9980&amp;#8217;,&amp;#8217;9981&amp;#8217;,&amp;#8217;9982&amp;#8217;,&amp;#8217;9983&amp;#8217;) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Given the event ID &amp;#8211; a quick query to view the number of distinct events for each message, and view the text of the event message: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select distinct message, count(*) as number from sdkeventview where nteventid = '7036' group by message order by number desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Performance: &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the most common perf insertions: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select performanceobjectname, performancecountername, count(performanceobjectname) as 'count' from sdkperformanceview   &lt;br /&gt;group by performanceobjectname, performancecountername    &lt;br /&gt;order by 'count' desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To determine computers are generating the most perf insertions: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct server, count(*) as NumberOfOccurences from SampledNumericDataPerformanceReportView   &lt;br /&gt;group by server order by numberofoccurences desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Top 10% Computers with High Perf Volume, by Counter, by Object, by Day &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 10 percent CONVERT(char(10), TimeSampled, 101) AS &amp;quot;Perf Date (by Day)&amp;quot;   &lt;br /&gt; , Computername, PerformanceObjectName, PerformanceCounterName, COUNT(*) AS &amp;quot;Number of PerfObjects&amp;quot;    &lt;br /&gt;FROM SDKPerformanceView    &lt;br /&gt;GROUP BY CONVERT(char(10), TimeSampled, 101), computername, PerformanceObjectName, PerformanceCounterName    &lt;br /&gt;ORDER BY &amp;quot;Number of PerfObjects&amp;quot; DESC&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Top 10% Computers with High Perf Volume, by Day &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT&amp;#160; top 10 percent CONVERT(char(10), TimeSampled, 101) AS &amp;quot;Perf Date (by Day)&amp;quot;, computername, COUNT(*) AS &amp;quot;Number of PerfObjects&amp;quot;   &lt;br /&gt;FROM SDKPerformanceView    &lt;br /&gt;GROUP BY CONVERT(char(10), TimeSampled, 101), computername    &lt;br /&gt;ORDER BY &amp;quot;Number of PerfObjects&amp;quot; DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Top 10% Computers with High Perf Volume, by Object, by Day &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 10 percent CONVERT(char(10), TimeSampled, 101) AS &amp;quot;Perf Date (by Day)&amp;quot;, computername, performanceobjectname, COUNT(*) AS &amp;quot;Number of PerfObjects&amp;quot;   &lt;br /&gt;FROM SDKPerformanceView    &lt;br /&gt;GROUP BY CONVERT(char(10), TimeSampled, 101), computername, performanceobjectname    &lt;br /&gt;ORDER BY &amp;quot;Number of PerfObjects&amp;quot; DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the counters causing the most perf impact per computer: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select performanceobjectname, performancecountername, count(performanceobjectname) as 'count'    &lt;br /&gt;from sdkperformanceview    &lt;br /&gt;where computername = 'COMPUTERNAME'    &lt;br /&gt;group by performanceobjectname, performancecountername    &lt;br /&gt;order by 'count' desc &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Misc Onepoint:&lt;/font&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To view the number of Operations Console currently open: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT program_name, count(*)    &lt;br /&gt;FROM Master..sysprocesses     &lt;br /&gt;WHERE ecid=0 and program_name='Microsoft Operations Manager - DAS Operations Console'     &lt;br /&gt;GROUP BY program_name     &lt;br /&gt;ORDER BY count(*) desc&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To view the grooming information on tables in one point, especially with respect to the &amp;#8220;Current&amp;#8221; and &amp;#8220;LastGroomed&amp;#8221; columns =1     &lt;br /&gt;&lt;/strong&gt;SELECT * FROM dbo.PartitionTables &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To view or modify the TimeDTSLastRan field to allow grooming to occur:     &lt;br /&gt;&lt;/strong&gt;select * from ReportingSettings &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the rule name given a GUID: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select Name FROM onepoint.dbo.ProcessRule WHERE idProcessRule=&amp;#8217;GUIDstringHERE&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To find all rules associated with a provider: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select pr.name 'Rule Name', pi.name 'Provider Name' from processrule pr   &lt;br /&gt;join ProviderInstance pi    &lt;br /&gt;on pr.idproviderinstance = pi.idproviderinstance    &lt;br /&gt;where pi.name like 'ISA Server%' &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the Total number of agents (all agent types) &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT * FROM ManagedCountsView WHERE ManagedType = &amp;#8216;-1&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the total number of Unmanaged agents &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT * FROM ManagedCountsView WHERE ManagedType = &amp;#8216;0&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the total number of Managed agents &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT * FROM ManagedCountsView WHERE ManagedType = &amp;#8216;2&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the total number of Windows Server Cluster computers &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT * FROM ManagedCountsView WHERE ManagedType = &amp;#8216;3&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the total number of Agents reporting to a specific Mgmt Server &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT COUNT(*) FROM MOMv2_ComputerAllPropertiesView WHERE ConfigManagerName = &amp;#8216;mgmt server name&amp;#8217; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;or to list the total number of Agents reporting to all Mgmt Servers (NULL are unmanaged) &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT configmanagername, COUNT(*) FROM MOMv2_ComputerAllPropertiesView group by ConfigManagerName &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To display the agent action account for all servers: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;use OnePoint   &lt;br /&gt;Select Name, Value    &lt;br /&gt;from Attribute INNER JOIN Computer ON DISCOVERYCOMPUTERID = IDCOMPUTER    &lt;br /&gt;WHERE ClassAttributeID IN (Select ClassAttributeID from ClassAttribute where    &lt;br /&gt;ClassAttributeName = 'Action Account Identity')    &lt;br /&gt;AND IDComputer IN (Select DiscoveryComputerID from Attribute WHERE    &lt;br /&gt;ClassAttributeID IN (Select ClassAttributeID from ClassAttribute where    &lt;br /&gt;ClassAttributeName = 'Action Account Identity'))    &lt;br /&gt;order by value, name &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;MISC:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple query to display large tables: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT    &lt;br /&gt;so.name,    &lt;br /&gt;8 * Sum(CASE WHEN si.indid IN (0, 1) THEN si.reserved END) AS data_kb,     &lt;br /&gt;Coalesce(8 * Sum(CASE WHEN si.indid NOT IN (0, 1, 255) THEN si.reserved END), 0) AS index_kb,     &lt;br /&gt;Coalesce(8 * Sum(CASE WHEN si.indid IN (255) THEN si.reserved END), 0) AS blob_kb    &lt;br /&gt;FROM dbo.sysobjects AS so JOIN dbo.sysindexes AS si ON (si.id = so.id)     &lt;br /&gt;WHERE 'U' = so.type GROUP BY so.name&amp;#160; ORDER BY data_kb DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple query for Onepoint or SCDW to dump a perfcounter to a table output.&amp;#160; Modify Computername and timestamps: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;DECLARE @BeginDate datetime   &lt;br /&gt;DECLARE @EndDate datetime    &lt;br /&gt;SET @BeginDate = '2006-10-18 05:45:00.287'    &lt;br /&gt;SET @EndDate = '2006-10-19 05:45:00.287'    &lt;br /&gt;SELECT * FROM dbo.SDKPerformanceView WHERE Computername = 'EXCH1' and PERFORMANCECOUNTERNAME = 'Local Queue Length' and TimeSampled BETWEEN @BeginDate AND @EndDate ORDER BY TimeSampled DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Database Performance:&lt;/font&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The System Center DW does not come with any maintenance.&amp;#160; &lt;br /&gt;I really like the maintenance plan at:&amp;#160; &lt;a href="http://systemcenterforum.org/wp-content/uploads/scdw_reindex1.zip"&gt;http://systemcenterforum.org/wp-content/uploads/scdw_reindex1.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To get better performance manually: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update Statistics (will help speed up reports and takes less time than a full reindex): &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;EXEC sp_updatestats &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Show index fragmentation (to determine how badly you need a reindex &amp;#8211; logical scan frag &amp;gt; 10% = bad.&amp;#160; Scan density below 80 = bad): &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;DBCC SHOWCONTIG   &lt;br /&gt;DBCC SHOWCONTIG WITH FAST (less data than above &amp;#8211; in case you don&amp;#8217;t have time) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reindex the database: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Onepoint: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;USE OnePoint    &lt;br /&gt;go     &lt;br /&gt;SET ANSI_NULLS ON    &lt;br /&gt;SET ANSI_PADDING ON    &lt;br /&gt;SET ANSI_WARNINGS ON    &lt;br /&gt;SET ARITHABORT ON    &lt;br /&gt;SET CONCAT_NULL_YIELDS_NULL ON    &lt;br /&gt;SET QUOTED_IDENTIFIER ON    &lt;br /&gt;SET NUMERIC_ROUNDABORT OFF    &lt;br /&gt;EXEC SP_MSForEachTable &amp;quot;Print 'Reindexing '+'?' DBCC DBREINDEX ('?')&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SystemCenterReporting:    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DBCC REINDEX (&amp;#8216;TableName&amp;#8217;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DBCC REINDEX (&amp;#8216;SC_SampledNumericDataFact_Table&amp;#8217;) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update usage (use when SQL reports a table size that you know not to be correct): &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;DBCC updateusage ('systemcenterreporting')   &lt;br /&gt;DBCC updateusage ('systemcenterreporting','sc_samplednumericdatafact_table') &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to identify your version of SQL server: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT&amp;#160; SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL 2005: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SQL Server 2005 RTM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2005.90.1399    &lt;br /&gt;SQL Server 2005 SP1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2005.90.2047    &lt;br /&gt;SQL Server 2005 SP1 plus 918222&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2005.90.2153    &lt;br /&gt;SQL Server 2005 SP2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2005.90.3042 &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL 2000: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SQL Server 2000 RTM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.80.194.0    &lt;br /&gt;SQL Server 2000 SP1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.80.384.0     &lt;br /&gt;SQL Server 2000 SP2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.80.534.0     &lt;br /&gt;SQL Server 2000 SP3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.80.760.0     &lt;br /&gt;SQL Server 2000 SP3a&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.80.760.0     &lt;br /&gt;SQL Server 2000 SP4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2000.8.00.2039 &lt;/p&gt;  &lt;p&gt;SQL2000 Reporting RTM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8.00.743.00   &lt;br /&gt;SQL2000 Reporting SP1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8.00.878.00    &lt;br /&gt;SQL2000 Reporting SP2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8.00.1038.00&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2199783" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/query/default.aspx">query</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/TSQL/default.aspx">TSQL</category></item></channel></rss>