<?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 : query</title><link>http://blogs.technet.com/kevinholman/archive/tags/query/default.aspx</link><description>Tags: query</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Outages and Maintenance Report</title><link>http://blogs.technet.com/kevinholman/archive/2009/06/11/outages-and-maintenance-report.aspx</link><pubDate>Thu, 11 Jun 2009 07:48:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3253340</guid><dc:creator>kevinhol</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3253340.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3253340</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3253340</wfw:comment><description>&lt;P&gt;This is a little report I put together on request.&lt;/P&gt;
&lt;P&gt;This report will query the data warehouse, and show all the outages, and maintenance, for objects in specific groups.&lt;/P&gt;
&lt;P&gt;The outages look at all the “Failed to Connect to Computer” alerts, and list the start and end time of the outage, based on the time the alert was created, to the time it was closed (assumes it is auto-closed by the agent coming back online)&lt;/P&gt;
&lt;P&gt;The maintenance looks at the times that the Health Service Watcher objects are placed into maintenance mode.&lt;/P&gt;
&lt;P&gt;There is a start and end time parameters for the report – and the report defaults to the last 30 days.&lt;/P&gt;
&lt;P&gt;There is a group choice parameter – you should pick a group that contains Health Service Watcher objects.&lt;/P&gt;
&lt;P&gt;It looks like this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/OutagesandMaintenanceReport_14EC7/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/OutagesandMaintenanceReport_14EC7/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/OutagesandMaintenanceReport_14EC7/image_thumb.png" width=644 height=257 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/OutagesandMaintenanceReport_14EC7/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;It is based on this query, which you can tune to meet your needs:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;declare @startdate datetime &lt;BR&gt;declare @enddate datetime &lt;BR&gt;declare @computergroups varchar(50) &lt;BR&gt;SET @startdate = '2009-06-01 00:00:00.000' &lt;BR&gt;SET @enddate = getutcdate() &lt;BR&gt;set @computergroups = 'Agent Managed Computer Group' &lt;/P&gt;
&lt;P&gt;select &lt;BR&gt;apv.ParameterValue as SystemName, &lt;BR&gt;(DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),av.RaisedDateTime)) as DownDateTime, &lt;BR&gt;(DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),arsv.StateSetDateTime)) as RestoredDateTime, &lt;BR&gt;adv.CustomField2 as OutageType, &lt;BR&gt;adv.CustomField3 as RootCause, &lt;BR&gt;adv.CustomField4 as Reason, &lt;BR&gt;adv.DBLastModifiedByUserId as UserID &lt;BR&gt;FROM Alert.vAlert av &lt;BR&gt;JOIN Alert.vAlertDetail adv on av.AlertGuid = adv.AlertGuid &lt;BR&gt;JOIN Alert.vAlertResolutionState arsv on av.AlertGuid = arsv.AlertGuid &lt;BR&gt;JOIN Alert.vAlertParameter apv on av.AlertGuid = apv.AlertGuid &lt;BR&gt;WHERE AlertName = 'Failed to Connect to Computer' &lt;BR&gt;AND arsv.ResolutionState = '255' &lt;BR&gt;--AND adv.CustomField2 IS NOT NULL &lt;BR&gt;AND (DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),av.RaisedDateTime)) between @startdate and @enddate &lt;BR&gt;and apv.ParameterValue IN ( &lt;BR&gt;SELECT vManagedEntity.DisplayName &lt;BR&gt;FROM&amp;nbsp; vManagedEntity &lt;BR&gt;INNER JOIN vRelationship ON vManagedEntity.ManagedEntityRowId = vRelationship.TargetManagedEntityRowId &lt;BR&gt;INNER JOIN vManagedEntity AS ManagedEntity_1 ON vRelationship.SourceManagedEntityRowId = ManagedEntity_1.ManagedEntityRowId &lt;BR&gt;WHERE (ManagedEntity_1.DisplayName = @computergroups) &lt;BR&gt;) &lt;/P&gt;
&lt;P&gt;UNION ALL &lt;/P&gt;
&lt;P&gt;select &lt;BR&gt;vme.displayname, &lt;BR&gt;(DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),vmm.StartDateTime)) as DownDateTime, &lt;BR&gt;(DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),vmm.EndDateTime)) as RestoredDateTime, &lt;BR&gt;'OutageType' = &lt;BR&gt;CASE &lt;BR&gt;&amp;nbsp; vmm.PlannedMaintenanceInd &lt;BR&gt;&amp;nbsp; WHEN '1' THEN 'Scheduled' &lt;BR&gt;&amp;nbsp; WHEN '0' THEN 'Unscheduled' &lt;BR&gt;END, &lt;BR&gt;'RootCause' = &lt;BR&gt;CASE &lt;BR&gt;&amp;nbsp; vmmh.ReasonCode &lt;BR&gt;&amp;nbsp; WHEN '0' THEN 'Other (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '1' THEN 'Other (Unplanned)' &lt;BR&gt;&amp;nbsp; WHEN '2' THEN 'Hardware: Maintenance (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '3' THEN 'Hardware: Maintenance (Unplanned)' &lt;BR&gt;&amp;nbsp; WHEN '4' THEN 'Hardware: Installation (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '5' THEN 'Hardware: Installation (Unplanned)' &lt;BR&gt;&amp;nbsp; WHEN '6' THEN 'Operating System: Reconfiguration (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '7' THEN 'Operating System: Reconfiguration (Unplanned)' &lt;BR&gt;&amp;nbsp; WHEN '8' THEN 'Application: Maintenance (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '9' THEN 'Application: Maintenance (Unplanned)' &lt;BR&gt;&amp;nbsp; WHEN '10' THEN 'Application: Installation (Planned)' &lt;BR&gt;&amp;nbsp; WHEN '11' THEN 'Application: Unresponsive' &lt;BR&gt;&amp;nbsp; WHEN '12' THEN 'Application:&amp;nbsp; Unstable' &lt;BR&gt;&amp;nbsp; WHEN '13' THEN 'Security Issue' &lt;BR&gt;&amp;nbsp; WHEN '14' THEN 'Loss of network connectivity (Unplanned)' &lt;BR&gt;END, &lt;BR&gt;vmmh.Comment as Reason, &lt;BR&gt;vmmh.userid as UserID &lt;BR&gt;from vMaintenanceMode vmm &lt;BR&gt;join vManagedEntity vme on vmm.managedentityrowid = vme.managedentityrowid &lt;BR&gt;join vMaintenanceModeHistory vmmh on vmm.maintenancemoderowid = vmmh.maintenancemoderowid &lt;BR&gt;where vme.FullName LIKE '%HealthServiceWatcher%' &lt;BR&gt;and (DATEADD(hh,DATEDIFF(hh,getutcdate(),getdate()),vmm.StartDateTime)) between @startdate and @enddate &lt;BR&gt;and vme.displayname IN ( &lt;BR&gt;SELECT vManagedEntity.DisplayName &lt;BR&gt;FROM&amp;nbsp; vManagedEntity &lt;BR&gt;INNER JOIN vRelationship ON vManagedEntity.ManagedEntityRowId = vRelationship.TargetManagedEntityRowId &lt;BR&gt;INNER JOIN vManagedEntity AS ManagedEntity_1 ON vRelationship.SourceManagedEntityRowId = ManagedEntity_1.ManagedEntityRowId &lt;BR&gt;WHERE (ManagedEntity_1.DisplayName = @computergroups) &lt;BR&gt;) &lt;BR&gt;ORDER BY DownDateTime&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The report is attached below.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3253340" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3253340.ashx" length="3131" type="application/x-zip-compressed" /><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><category domain="http://blogs.technet.com/kevinholman/archive/tags/TSQL/default.aspx">TSQL</category></item><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>Which servers are DOWN in my company, and which just have a heartbeat failure, RIGHT NOW?</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/27/which-servers-are-down-in-my-company-and-which-just-have-a-heartbeat-failure-right-now.aspx</link><pubDate>Sat, 28 Jun 2008 00:39:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079704</guid><dc:creator>kevinhol</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3079704.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3079704</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3079704</wfw:comment><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://kevinholman.com/fun/serverdown.jpg" /&gt;&lt;/p&gt;  &lt;p&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;In OpsMgr 2007, when a agent experiences a heartbeat failure, several things happen.&amp;#160; There are diagnostics, and possibly recoveries that are run.&amp;#160; Alerts, and possibly notifications go out.&lt;/p&gt;  &lt;p&gt;But what happens if my Operations team misses on of these alerts?&amp;#160; What can I do to &amp;quot;spot check&amp;quot; agents with issues?&lt;/p&gt;  &lt;p&gt;Well, any time an agent has a heartbeat failure, we gray out the state icon of the agents last known state for in each state view.&amp;#160; &lt;/p&gt;  &lt;p&gt;However - you CAN create a State view that will turn Red or Yellow just like any other state views.&amp;#160; Simply create a new State View, and scope the class to Health Service Watcher (Agent).&lt;/p&gt;  &lt;p&gt;I called mine Heartbeat State View:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="603" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb.png" width="747" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This view will show us when any of the agent health service watcher monitors are unhealthy:&amp;#160; In my case - OWA and EXCH1 have issues.&amp;#160; OWA is DOWN, while EXCH1 agent healthservice is stopped.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="354" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb_1.png" width="633" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;However - here is the issue.&amp;#160; This view shows us when ANY monitor rolls up unhealthy state.... this includes heartbeat failures AND computer unreachable (server IP stack is down):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_6.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="178" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb_2.png" width="299" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What if I want a State View - to ONLY show me computers that are DOWN.... as in... not heartbeating AND not responding to any PING?&amp;#160; Most customers consider this their &amp;quot;&lt;strong&gt;&lt;em&gt;most&lt;/em&gt;&lt;/strong&gt; critical situation&amp;quot;.&amp;#160; Well, I haven't found an easy way to do that.... so I wrote a report which handles it.&amp;#160; This report will query the OpsDB for the state of the &amp;quot;Computer Not Reachable&amp;quot; monitor, and only display those servers.&amp;#160; It is based on the following query:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SELECT bme.DisplayName, s.LastModified as LastModifiedUTC, dateadd(hh,-5,s.LastModified) as 'LastModifiedCST (GMT-5)'      &lt;br /&gt;FROM state AS s, BaseManagedEntity as bme       &lt;br /&gt;WHERE s.basemanagedentityid = bme.basemanagedentityid AND s.monitorid       &lt;br /&gt;IN (SELECT MonitorId FROM Monitor WHERE MonitorName = 'Microsoft.SystemCenter.HealthService.ComputerDown')       &lt;br /&gt;AND s.Healthstate = '3' AND bme.IsDeleted = '0'       &lt;br /&gt;ORDER BY s.Lastmodified DESC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can import this report if you have created a data source as shown in my previous post:&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/kevinholman/archive/2008/06/27/creating-a-new-data-source-for-reporting-against-the-operational-database.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/06/27/creating-a-new-data-source-for-reporting-against-the-operational-database.aspx" mce_href="http://blogs.technet.com/kevinholman/archive/2008/06/27/creating-a-new-data-source-for-reporting-against-the-operational-database.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/06/27/creating-a-new-data-source-for-reporting-against-the-operational-database.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Import this report into your custom folder... and run it.&amp;#160; You can schedule it to receive it first thing every day... if you like the output:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_thumb_4.png" width="673" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;*****&amp;#160; Update 6-30-08&amp;#160; I removed a section of the original query relating to maintenance mode.&amp;#160; We found that if a down server had never been in maintenance mode, the server would not show up in the report.&amp;#160; The query and report download have been updated to address this.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_8.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/WhichserversareDOWNinmycompanyandwhichju_EA35/image_8.png"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Report is attached below:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079704" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3079704.ashx" length="10814" type="application/octet-stream" /><category domain="http://blogs.technet.com/kevinholman/archive/tags/query/default.aspx">query</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/agents/default.aspx">agents</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Authoring/default.aspx">Authoring</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><item><title>Useful Operations Manager 2007 SQL queries</title><link>http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx</link><pubDate>Thu, 18 Oct 2007 18:35:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2199747</guid><dc:creator>kevinhol</dc:creator><slash:comments>26</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2199747.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2199747</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2199747</wfw:comment><description>&lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="3"&gt;Last updated 11-9-09&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Large Table query&lt;/font&gt;.&lt;/strong&gt;&amp;#160; (I am putting this at the top, because I use it so much – to find out what is taking up so much space in the OpsDB or DW)&lt;/p&gt; &lt;font color="#0000ff"&gt;SELECT 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;/font&gt;   &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="5"&gt;Operational Database Section:&lt;/font&gt;&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;Alerts Section:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Number of console Alerts per Day:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT CONVERT(VARCHAR(20), TimeAdded, 102) AS DayAdded, COUNT(*) AS NumAlertsPerDay    &lt;br /&gt;FROM Alert WITH (NOLOCK)     &lt;br /&gt;WHERE TimeRaised is not NULL     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), TimeAdded, 102)     &lt;br /&gt;ORDER BY DayAdded DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Top 20 Alerts in an Operational Database, by Alert Count &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT TOP 20 SUM(1) AS AlertCount, AlertStringName, AlertStringDescription, MonitoringRuleId, Name    &lt;br /&gt;FROM Alertview WITH (NOLOCK)     &lt;br /&gt;WHERE TimeRaised is not NULL     &lt;br /&gt;GROUP BY AlertStringName, AlertStringDescription, MonitoringRuleId, Name     &lt;br /&gt;ORDER BY AlertCount DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Top 20 Alerts in an Operational Database, by Repeat Count &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT TOP 20 SUM(RepeatCount+1) AS RepeatCount, AlertStringName, AlertStringDescription, MonitoringRuleId, Name    &lt;br /&gt;FROM Alertview WITH (NOLOCK)     &lt;br /&gt;WHERE Timeraised is not NULL     &lt;br /&gt;GROUP BY AlertStringName, AlertStringDescription, MonitoringRuleId, Name     &lt;br /&gt;ORDER BY RepeatCount DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Number of console Alerts per Day by Resolution State:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT    &lt;br /&gt;CASE WHEN(GROUPING(CONVERT(VARCHAR(20), TimeAdded, 102)) = 1) THEN 'All Days' ELSE CONVERT(VARCHAR(20), TimeAdded, 102) END AS [Date],     &lt;br /&gt;CASE WHEN(GROUPING(ResolutionState) = 1) THEN 'All Resolution States' ELSE CAST(ResolutionState AS VARCHAR(5)) END AS [ResolutionState],     &lt;br /&gt;COUNT(*) AS NumAlerts     &lt;br /&gt;FROM Alert WITH (NOLOCK)     &lt;br /&gt;WHERE TimeRaised is not NULL     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), TimeAdded, 102), ResolutionState WITH ROLLUP     &lt;br /&gt;ORDER BY DATE DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;(Note:&amp;#160; There will be more alerts in the &amp;quot;Alert&amp;quot; table in the form of rows, than exist in the console.&amp;#160; This is because there are non-console alerts where TimeRaised is NULL - these have to do with driving state change records, and are not included in the above queries by design)&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;   &lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;Events Section:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;All Events by count by day, with total for entire database:&amp;#160; &lt;/strong&gt;&lt;em&gt;(this tells us how many events per day we are inserting - and helps us look for too many events, event storms, and the result after tuning rules that generate too many events)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT CASE WHEN(GROUPING(CONVERT(VARCHAR(20), TimeAdded, 102)) = 1)    &lt;br /&gt;THEN 'All Days'     &lt;br /&gt;ELSE CONVERT(VARCHAR(20), TimeAdded, 102) END AS DayAdded,     &lt;br /&gt;COUNT(*) AS EventsPerDay     &lt;br /&gt;FROM EventAllView     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), TimeAdded, 102) WITH ROLLUP     &lt;br /&gt;ORDER BY DayAdded DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Most Common Events by event number:&lt;/strong&gt;&amp;#160; &lt;em&gt;(This helps us know which event ID's are the most common in the database)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 20 Number as EventID, COUNT(*) AS TotalEvents    &lt;br /&gt;FROM EventView with (NOLOCK)     &lt;br /&gt;GROUP BY Number     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Most common events by event number and event publishername: &lt;/strong&gt;&lt;em&gt;(This gives us the event source name to help see what is raising these events)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 20 Number as EventID, COUNT(*) AS TotalEvents, Publishername as EventSource    &lt;br /&gt;FROM EventAllView eav with (nolock)     &lt;br /&gt;GROUP BY Number, Publishername     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Most common events, grouped by identical event number, publishername, and event parameters:&lt;/strong&gt; (&lt;em&gt;This shows use completely redundant events with identical data - but might be different than the above queries... you need to see both data outputs to fully tune)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 100 Number as EventID, COUNT(*) AS TotalEvents, Publishername as EventSource, EventParameters    &lt;br /&gt;FROM EventAllView with (NOLOCK)     &lt;br /&gt;GROUP BY Number, Publishername, EventParameters     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Computers generating the most events:&lt;/strong&gt;&amp;#160;&lt;em&gt;(This shows us which computers create the most event traffic and use the most database space)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 20 LoggingComputer as ComputerName, COUNT(*) AS TotalEvents    &lt;br /&gt;FROM EventallView with (NOLOCK)     &lt;br /&gt;GROUP BY LoggingComputer     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Computers generating the most events, by event number:&lt;/strong&gt;&amp;#160;&lt;em&gt;(This shows the noisiest computers, group by unique event numbers)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;SELECT top 20 LoggingComputer as ComputerName, COUNT(*) AS TotalEvents, Number as EventID    &lt;br /&gt;FROM EventallView with (NOLOCK)     &lt;br /&gt;GROUP BY LoggingComputer, Number     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Computers generating the most events, grouped by identical event number and publishername:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SELECT top 20 LoggingComputer as ComputerName, COUNT(*) AS TotalEvents, PublisherName as EventSource, Number as EventID    &lt;br /&gt;FROM EventallView with (NOLOCK)     &lt;br /&gt;GROUP BY LoggingComputer, PublisherName, Number     &lt;br /&gt;ORDER BY TotalEvents DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;font size="4"&gt;&lt;font color="#000080"&gt;&lt;strong&gt;P&lt;/strong&gt;&lt;strong&gt;erformance Section:&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Performance insertions per day:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SELECT CASE WHEN(GROUPING(CONVERT(VARCHAR(20), TimeSampled, 102)) = 1)    &lt;br /&gt;THEN 'All Days' ELSE CONVERT(VARCHAR(20), TimeSampled, 102)     &lt;br /&gt;END AS DaySampled, COUNT(*) AS PerfInsertPerDay     &lt;br /&gt;FROM PerformanceDataAllView with (NOLOCK)     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), TimeSampled, 102) WITH ROLLUP     &lt;br /&gt;ORDER BY DaySampled DESC&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Top 20 performance insertions by perf object and counter name:&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;select top 20 pcv.ObjectName, pcv.CounterName, count (pcv.countername) as Total    &lt;br /&gt;from performancedataallview as pdv, performancecounterview as pcv     &lt;br /&gt;where (pdv.performancesourceinternalid = pcv.performancesourceinternalid)     &lt;br /&gt;group by pcv.objectname, pcv.countername     &lt;br /&gt;order by count (pcv.countername) desc&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view all performance insertions for a given computer:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select Path, ObjectName, CounterName, InstanceName, SampleValue, TimeSampled    &lt;br /&gt;from PerformanceDataAllView pdv with (NOLOCK)     &lt;br /&gt;inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid     &lt;br /&gt;inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId     &lt;br /&gt;where path = 'omterm.opsmgr.net'     &lt;br /&gt;order by countername, timesampled&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To refine a the above query to pull all perf data for a given computer, object, counter, and instance:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select Path, ObjectName, CounterName, InstanceName, SampleValue, TimeSampled    &lt;br /&gt;from PerformanceDataAllView pdv with (NOLOCK)     &lt;br /&gt;inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid     &lt;br /&gt;inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId     &lt;br /&gt;where path = 'omterm.opsmgr.net' AND     &lt;br /&gt;objectname = 'LogicalDisk' AND     &lt;br /&gt;countername = 'Free Megabytes'     &lt;br /&gt;order by timesampled&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;font size="4"&gt;&lt;font color="#000080"&gt;&lt;strong&gt;State &lt;/strong&gt;&lt;strong&gt;Section:&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;State changes per day:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SELECT CASE WHEN(GROUPING(CONVERT(VARCHAR(20), TimeGenerated, 102)) = 1)    &lt;br /&gt;THEN 'All Days' ELSE CONVERT(VARCHAR(20), TimeGenerated, 102)     &lt;br /&gt;END AS DayGenerated, COUNT(*) AS StateChangesPerDay     &lt;br /&gt;FROM StateChangeEvent WITH (NOLOCK)     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), TimeGenerated, 102) WITH ROLLUP     &lt;br /&gt;ORDER BY DayGenerated DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Noisiest monitors in the database: (Note – these will include old state changes – might not be current)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct top 50 count(sce.StateId) as NumStateChanges, m.MonitorName, mt.typename AS TargetClass    &lt;br /&gt;from StateChangeEvent sce with (nolock)     &lt;br /&gt;join state s with (nolock) on sce.StateId = s.StateId     &lt;br /&gt;join monitor m with (nolock) on s.MonitorId = m.MonitorId     &lt;br /&gt;join managedtype mt with (nolock) on m.TargetManagedEntityType = mt.ManagedTypeId     &lt;br /&gt;where m.IsUnitMonitor = 1     &lt;br /&gt;group by m.MonitorName,mt.typename     &lt;br /&gt;order by NumStateChanges desc&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Noisiest Monitor in the database – PER Object/Computer : (Note – these will include old state changes – might not be current)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct top 50 count(sce.StateId) as NumStateChanges, bme.DisplayName AS ObjectName, bme.Path, m.MonitorName, mt.typename AS TargetClass    &lt;br /&gt;from StateChangeEvent sce with (nolock)     &lt;br /&gt;join state s with (nolock) on sce.StateId = s.StateId     &lt;br /&gt;join BaseManagedEntity bme with (nolock) on s.BasemanagedEntityId = bme.BasemanagedEntityId     &lt;br /&gt;join monitor m with (nolock) on s.MonitorId = m.MonitorId     &lt;br /&gt;join managedtype mt with (nolock) on m.TargetManagedEntityType = mt.ManagedTypeId     &lt;br /&gt;where m.IsUnitMonitor = 1     &lt;br /&gt;group by s.BasemanagedEntityId,bme.DisplayName,bme.Path,m.MonitorName,mt.typename     &lt;br /&gt;order by NumStateChanges desc&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Noisiest Monitor in the database by total (Note the DATE – might be very old data)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select    &lt;br /&gt;datepart(year, timegenerated) AS Year, datepart(month, timegenerated) AS Month, datepart(day, timegenerated) AS Day, MonitorName, count(*) AS TotalStateChanges     &lt;br /&gt;from statechangeevent with(nolock)     &lt;br /&gt;inner join state with(nolock) on statechangeevent.stateid = state.stateid     &lt;br /&gt;inner join basemanagedentity with(nolock) on state.basemanagedentityid = basemanagedentity.basemanagedentityid     &lt;br /&gt;inner join managedtype with(nolock) on basemanagedentity.basemanagedtypeid = managedtype.managedtypeid     &lt;br /&gt;inner join monitor with(nolock)     &lt;br /&gt;on monitor.monitorid = state.monitorid and monitor.IsUnitMonitor = '1'     &lt;br /&gt;group by datepart(year, timegenerated), datepart(month, timegenerated), datepart(day, timegenerated), monitorname     &lt;br /&gt;order by TotalStateChanges DESC&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Historical list of state changes by Monitor, by Day: (will show current state changes happening)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select    &lt;br /&gt;datepart(year, timegenerated) AS Year, datepart(month, timegenerated) AS Month, datepart(day, timegenerated) AS Day, MonitorName, count(*) AS TotalStateChanges     &lt;br /&gt;from statechangeevent with(nolock)     &lt;br /&gt;inner join state with(nolock) on statechangeevent.stateid = state.stateid     &lt;br /&gt;inner join basemanagedentity with(nolock) on state.basemanagedentityid = basemanagedentity.basemanagedentityid     &lt;br /&gt;inner join managedtype with(nolock) on basemanagedentity.basemanagedtypeid = managedtype.managedtypeid     &lt;br /&gt;inner join monitor with(nolock)     &lt;br /&gt;on monitor.monitorid = state.monitorid and monitor.IsUnitMonitor = '1'     &lt;br /&gt;group by datepart(year, timegenerated), datepart(month, timegenerated), datepart(day, timegenerated), monitorname     &lt;br /&gt;order by datepart(year, timegenerated) DESC, datepart(month, timegenerated) DESC, datepart(day, timegenerated) DESC &lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;font size="4"&gt;&lt;font color="#000080"&gt;&lt;strong&gt;P&lt;/strong&gt;&lt;strong&gt;erformance Signature Section:&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find the rules collecting the most Performance Signature data in the database:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;select managementpack.MPName, ruleview.DisplayName,    &lt;br /&gt;count(*) AS TotalPerfSig     &lt;br /&gt;from performancesignaturedata with (nolock)     &lt;br /&gt;inner join performancesignaturehistory with (nolock)     &lt;br /&gt;on performancesignaturedata.performancesignaturehistoryid = performancesignaturehistory.performancesignaturehistoryid     &lt;br /&gt;inner join performancesignature with (nolock)     &lt;br /&gt;on performancesignaturehistory.performancesignatureid = performancesignature.performancesignatureid     &lt;br /&gt;inner join ruleview with (nolock)     &lt;br /&gt;on ruleview.id = performancesignature.learningruleid     &lt;br /&gt;inner join managementpack with(nolock)     &lt;br /&gt;on ruleview.managementpackid = managementpack.managementpackid     &lt;br /&gt;group by managementpack.mpname, ruleview.Displayname     &lt;br /&gt;order by TotalPerfSig DESC, managementpack.mpname, ruleview.DisplayName&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all Performance Signature Collection rules:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;select managementpack.mpname, rules.rulename    &lt;br /&gt;from performancesignature with (nolock)     &lt;br /&gt;inner join rules with (nolock)     &lt;br /&gt;on rules.ruleid = performancesignature.learningruleid     &lt;br /&gt;inner join managementpack with(nolock)     &lt;br /&gt;on rules.managementpackid = managementpack.managementpackid     &lt;br /&gt;group by managementpack.mpname, rules.rulename     &lt;br /&gt;order by managementpack.mpname, rules.rulename&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;Management Pack info:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;Rules section:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find a common rule name given a Rule ID name:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT DisplayName from RuleView    &lt;br /&gt;where name = 'Microsoft.SystemCenter.GenericNTPerfMapperModule.FailedExecution.Alert'     &lt;br /&gt;-- change the 'name' value above to the Rule ID shown in an alert&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rules per MP:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT mp.MPName, COUNT(*) As RulesPerMP    &lt;br /&gt;FROM Rules r     &lt;br /&gt;INNER JOIN ManagementPack mp ON mp.ManagementPackID = r.ManagementPackID     &lt;br /&gt;GROUP BY mp.MPName     &lt;br /&gt;ORDER BY RulesPerMP DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Rules per MP by category:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT mp.MPName, r.RuleCategory, COUNT(*) As RulesPerMPPerCategory    &lt;br /&gt;FROM Rules r     &lt;br /&gt;INNER JOIN ManagementPack mp ON mp.ManagementPackID = r.ManagementPackID     &lt;br /&gt;GROUP BY mp.MPName, r.RuleCategory     &lt;br /&gt;ORDER BY RulesPerMPPerCategory DESC&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all Rules per MP that generate an alert:&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;declare @mpid as varchar(50)    &lt;br /&gt;select @mpid= managementpackid from managementpack where     &lt;br /&gt;mpName='Microsoft.Exchange.2007'     &lt;br /&gt;select rl.rulename,rl.ruleid,md.modulename from rules rl, module md     &lt;br /&gt;where md.managementpackid = @mpid     &lt;br /&gt;and rl.ruleid=md.parentid     &lt;br /&gt;and moduleconfiguration like '%&amp;lt;AlertLevel&amp;gt;50&amp;lt;/AlertLevel&amp;gt;%'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all rules per MP with a given alert severity:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;declare @mpid as varchar(50)    &lt;br /&gt;select @mpid= managementpackid from managementpack where     &lt;br /&gt;mpName='Microsoft.Exchange.Server.2003.Monitoring'     &lt;br /&gt;select rl.rulename,rl.ruleid,md.modulename from rules rl, module md     &lt;br /&gt;where md.managementpackid = @mpid     &lt;br /&gt;and rl.ruleid=md.parentid     &lt;br /&gt;and moduleconfiguration like '%&amp;lt;Severity&amp;gt;2&amp;lt;/Severity&amp;gt;%' &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Rules are stored in a table named Rules. This table has columns linking rules to classes and Management Packs. To find all rules in a Management Pack use the following query and substitute in the required Management Pack name: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM Rules WHERE ManagementPackID = (SELECT ManagementPackID from ManagementPack WHERE MPName = 'Microsoft.Windows.Server.2003')&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all rules targeted at a given class use the following query and substitute in the required class name: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM Rules WHERE TargetManagedEntityType = (SELECT ManagedTypeId FROM ManagedType WHERE TypeName = 'Microsoft.Windows.Computer')&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;Monitors Section:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Monitors Per MP:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT mp.MPName, COUNT(*) As MonitorsPerMPPerCategory    &lt;br /&gt;FROM Monitor m     &lt;br /&gt;INNER JOIN ManagementPack mp ON mp.ManagementPackID = m.ManagementPackID     &lt;br /&gt;GROUP BY mp.MPName     &lt;br /&gt;ORDER BY COUNT(*) Desc&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find your Monitor by common name:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select * from Monitor m    &lt;br /&gt;Inner join LocalizedText LT on LT.ElementName = m.MonitorName     &lt;br /&gt;where LTValue = 'Monitor Common Name'&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To find your Monitor by ID name:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select * from Monitor m    &lt;br /&gt;Inner join LocalizedText LT on LT.ElementName = m.MonitorName     &lt;br /&gt;where m.monitorname = 'Monitor ID name'&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To find all monitors targeted at a specific class:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT * FROM monitor WHERE TargetManagedEntityType = (SELECT ManagedTypeId FROM ManagedType WHERE TypeName = 'Microsoft.Windows.Computer') &lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;Groups Section:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all groups for a given computer/object (change “computername” in the query below):&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SELECT SourceMonitoringObjectDisplayName AS 'Group'    &lt;br /&gt;FROM RelationshipGenericView     &lt;br /&gt;WHERE TargetMonitoringObjectDisplayName like ('%&lt;font color="#ff0000"&gt;&lt;strong&gt;computername&lt;/strong&gt;&lt;/font&gt;%')     &lt;br /&gt;AND (SourceMonitoringObjectDisplayName IN     &lt;br /&gt;(SELECT ManagedEntityGenericView.DisplayName     &lt;br /&gt;FROM ManagedEntityGenericView INNER JOIN     &lt;br /&gt;(SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; BaseManagedEntityId     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BaseManagedEntity WITH (NOLOCK)     &lt;br /&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (BaseManagedEntityId = TopLevelHostEntityId) AND (BaseManagedEntityId NOT IN     &lt;br /&gt;(SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; R.TargetEntityId     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Relationship AS R WITH (NOLOCK) INNER JOIN     &lt;br /&gt;dbo.fn_ContainmentRelationshipTypes() AS CRT ON R.RelationshipTypeId = CRT.RelationshipTypeId     &lt;br /&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (R.IsDeleted = 0)))) AS GetTopLevelEntities ON     &lt;br /&gt;GetTopLevelEntities.BaseManagedEntityId = ManagedEntityGenericView.Id INNER JOIN     &lt;br /&gt;(SELECT DISTINCT BaseManagedEntityId     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TypedManagedEntity WITH (NOLOCK)     &lt;br /&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (ManagedTypeId IN     &lt;br /&gt;(SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; DerivedManagedTypeId     &lt;br /&gt;FROM dbo.fn_DerivedManagedTypes(dbo.fn_ManagedTypeId_Group()) AS fn_DerivedManagedTypes_1))) AS GetOnlyGroups ON     &lt;br /&gt;GetOnlyGroups.BaseManagedEntityId = ManagedEntityGenericView.Id))     &lt;br /&gt;ORDER BY 'Group'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;Management Pack general:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all installed Management Packs and their version:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT MPName, MPFriendlyName, MPVersion, MPIsSealed    &lt;br /&gt;FROM ManagementPack WITH(NOLOCK)     &lt;br /&gt;ORDER BY MPName&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Number of Views per Management Pack:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT mp.MPName, v.ViewVisible, COUNT(*) As ViewsPerMP    &lt;br /&gt;FROM [Views] v     &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; INNER JOIN ManagementPack mp ON mp.ManagementPackID = v.ManagementPackID     &lt;br /&gt;GROUP BY&amp;#160; mp.MPName, v.ViewVisible     &lt;br /&gt;ORDER BY v.ViewVisible DESC, COUNT(*) Desc&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;How to gather all the views in the database, their ID, MP location, and view type:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select vv.id as 'View Id',    &lt;br /&gt;vv.displayname as 'View DisplayName',     &lt;br /&gt;vv.name as 'View Name',     &lt;br /&gt;vtv.DisplayName as 'ViewType',     &lt;br /&gt;mpv.FriendlyName as 'MP Name'     &lt;br /&gt;from ViewsView vv     &lt;br /&gt;inner join managementpackview mpv on mpv.id = vv.managementpackid     &lt;br /&gt;inner join viewtypeview vtv on vtv.id = vv.monitoringviewtypeid     &lt;br /&gt;--where mpv.FriendlyName like '%default%'     &lt;br /&gt;--where vv.displayname like '%operating%'     &lt;br /&gt;order by mpv.FriendlyName, vv.displayname&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Classes available in the DB:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM ManagedType&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Classes available in the DB for Microsoft Windows type:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM ManagedType WHERE TypeName LIKE 'Microsoft.Windows.%' &lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Every property of every class:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM MT_Computer&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;All instances of all types once discovered&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM BaseManagedEntity&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To get the state of every instance of a particular monitor the following query can be run, (replace &amp;lt;MonitorName&amp;gt; with the name of the monitor):&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT bme.FullName, bme.DisplayName, s.HealthState FROM state AS s, BaseManagedEntity as bme WHERE s.basemanagedentityid = bme.basemanagedentityid AND s.monitorid IN (SELECT MonitorId FROM Monitor WHERE MonitorName = =&amp;lt;MonitorName&amp;gt;‘)&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;For example, this gets the state of the Microsoft.SQLServer.2005.DBEngine.ServiceMonitor for each instance of the SQL 2005 Database Engine class. &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT bme.FullName, bme.DisplayName, s.HealthState FROM state AS s, BaseManagedEntity as bme WHERE s.basemanagedentityid = bme.basemanagedentityid AND s.monitorid IN (SELECT MonitorId FROM Monitor WHERE MonitorName = 'Microsoft.SQLServer.2005.DBEngine.ServiceMonitor')&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find the overall state of any object in OpsMgr the following query should be used to return the state of the System.EntityState monitor: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT bme.FullName, bme.DisplayName, s.HealthState FROM state AS s, mt_managedcomputer AS mt, BaseManagedEntity as bme WHERE s.basemanagedentityid = bme.basemanagedentityid AND s.monitorid IN (SELECT MonitorId FROM Monitor WHERE MonitorName = 'System.Health.EntityState')&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;The Alert table contains all alerts currently open in OpsMgr. This includes resolved alerts until they are groomed out of the database. To get all alerts across all instances of a given monitor use the following query and substitute in the required monitor name: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM Alert WHERE ProblemID IN (SELECT MonitorId FROM Monitor WHERE MonitorName = 'Microsoft.SQLServer.2005.DBEngine.ServiceMonitor') &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To retrieve all alerts for all instances of a specific class use the following query and substitute in the required table name, in this example MT_DBEngine is used to look for SQL alerts: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM Alert WHERE BaseManagedEntityID IN (SELECT BaseManagedEntityID from MT_DBEngine)&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To determine which table is currently being written to for event and performance data use the following query: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM PartitionTables WHERE IsCurrent = 1&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To retrieve events generated by a specific rule use the following query and substitute in the required rule ID: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM Event_00 WHERE RuleId = (SELECT RuleId FROM Rules WHERE RuleName = 'Microsoft.Windows.Server.2003.OperatingSystem.CleanShutdown.Collection ') &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To retrieve all events generated by rules in a specific Management Pack the following query can be used where the Management Pack name is substituted with the required value: &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM EventAllView WHERE RuleID IN (SELECT RuleId FROM Rules WHERE ManagementPackId = (SELECT ManagementPackId FROM ManagementPack WHERE MPName = 'Microsoft.Windows.Server.2003'))&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Number of instances of a type:&amp;#160; (Number of disks, computers, databases, etc that OpsMgr has discovered)&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT mt.ManagedTypeID, mt.TypeName, COUNT(*) AS NumEntitiesByType    &lt;br /&gt;FROM BaseManagedEntity bme WITH(NOLOCK)     &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; LEFT JOIN ManagedType mt WITH(NOLOCK) ON mt.ManagedTypeID = bme.BaseManagedTypeID     &lt;br /&gt;WHERE bme.IsDeleted = 0     &lt;br /&gt;GROUP BY mt.ManagedTypeID, mt.TypeName     &lt;br /&gt;ORDER BY COUNT(*) DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To retrieve all performance data for a given rule in a readable format use the following query: &lt;/strong&gt;(change the r.RuleName value – get list from Rules Table)&lt;/p&gt;  &lt;p&gt;SELECT bme.Path, pc.ObjectName, pc.CounterName, ps.PerfmonInstanceName, pdav.SampleValue, pdav.TimeSampled    &lt;br /&gt;FROM PerformanceDataAllView AS pdav with (NOLOCK)     &lt;br /&gt;INNER JOIN PerformanceSource ps on pdav.PerformanceSourceInternalId = ps.PerformanceSourceInternalId     &lt;br /&gt;INNER JOIN PerformanceCounter pc on ps.PerformanceCounterId = pc.PerformanceCounterId     &lt;br /&gt;INNER JOIN Rules r on ps.RuleId = r.RuleId     &lt;br /&gt;INNER JOIN BaseManagedEntity bme on ps.BaseManagedEntityID = bme.BaseManagedEntityID     &lt;br /&gt;WHERE r.RuleName = 'Microsoft.Windows.Server.2003.LogicalDisk.FreeSpace.Collection'     &lt;br /&gt;GROUP BY PerfmonInstanceName, ObjectName, CounterName, SampleValue, TimeSampled, bme.path     &lt;br /&gt;ORDER BY bme.path, PerfmonInstanceName, TimeSampled&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To determine what discoveries are still associated with a computer – helpful in finding old stale computer objects in the console that are no longer agent managed, or desired.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select BME.FullName, DS.DiscoveryRuleID, D.DiscoveryName from typedmanagedentity TME    &lt;br /&gt;Join BaseManagedEntity BME ON TME.BaseManagedEntityId = BME.BaseManagedEntityId     &lt;br /&gt;JOIN DiscoverySourceToTypedManagedEntity DSTME ON TME.TypedManagedEntityID = DSTME.TypedManagedEntityID     &lt;br /&gt;JOIN DiscoverySource DS ON DS.DiscoverySourceID = DSTME.DiscoverySourceID     &lt;br /&gt;JOIN Discovery D ON DS.DiscoveryRuleID=D.DiscoveryID     &lt;br /&gt;Where BME.Fullname like '%ComputerName%'&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To dump out all the rules and monitors that have overrides, and display the context and instance of the override:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;select rv.DisplayName as WorkFlowName, OverrideName, mo.Value as OverrideValue,    &lt;br /&gt;mt.TypeName as OverrideScope, bme.DisplayName as InstanceName, bme.Path as InstancePath,     &lt;br /&gt;mpv.DisplayName as ORMPName, mo.LastModified as LastModified     &lt;br /&gt;from ModuleOverride mo     &lt;br /&gt;inner join managementpackview mpv on mpv.Id = mo.ManagementPackId     &lt;br /&gt;inner join ruleview rv on rv.Id = mo.ParentId     &lt;br /&gt;inner join ManagedType mt on mt.managedtypeid = mo.TypeContext     &lt;br /&gt;left join BaseManagedEntity bme on bme.BaseManagedEntityId = mo.InstanceContext     &lt;br /&gt;Where mpv.Sealed = 0     &lt;br /&gt;UNION ALL     &lt;br /&gt;select mv.DisplayName as WorkFlowName, OverrideName, mto.Value as OverrideValue,     &lt;br /&gt;mt.TypeName as OverrideScope, bme.DisplayName as InstanceName, bme.Path as InstancePath,     &lt;br /&gt;mpv.DisplayName as ORMPName, mto.LastModified as LastModified     &lt;br /&gt;from MonitorOverride mto     &lt;br /&gt;inner join managementpackview mpv on mpv.Id = mto.ManagementPackId     &lt;br /&gt;inner join monitorview mv on mv.Id = mto.MonitorId     &lt;br /&gt;inner join ManagedType mt on mt.managedtypeid = mto.TypeContext     &lt;br /&gt;left join BaseManagedEntity bme on bme.BaseManagedEntityId = mto.InstanceContext     &lt;br /&gt;Where mpv.Sealed = 0     &lt;br /&gt;Order By mpv.DisplayName&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;Agent Info:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find all managed computers that are currently down and not pingable:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT bme.DisplayName,s.LastModified as LastModifiedUTC, dateadd(hh,-5,s.LastModified) as 'LastModifiedCST (GMT-5)'    &lt;br /&gt;FROM state AS s, BaseManagedEntity AS bme     &lt;br /&gt;WHERE s.basemanagedentityid = bme.basemanagedentityid     &lt;br /&gt;AND s.monitorid     &lt;br /&gt;IN (SELECT MonitorId FROM Monitor WHERE MonitorName = 'Microsoft.SystemCenter.HealthService.ComputerDown')     &lt;br /&gt;AND s.Healthstate = '3' AND bme.IsDeleted = '0'     &lt;br /&gt;ORDER BY s.Lastmodified DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;All managed computers count:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT COUNT(*) AS NumManagedComps FROM (    &lt;br /&gt;SELECT bme2.BaseManagedEntityID     &lt;br /&gt;FROM BaseManagedEntity bme WITH (NOLOCK)     &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; INNER JOIN BaseManagedEntity bme2 WITH (NOLOCK) ON bme2.BaseManagedEntityID = bme.TopLevelHostEntityID     &lt;br /&gt;WHERE bme2.IsDeleted = 0     &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; AND bme2.IsDeleted = 0     &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; AND bme2.BaseManagedTypeID = (SELECT TOP 1 ManagedTypeID FROM ManagedType WHERE TypeName = 'microsoft.windows.computer')     &lt;br /&gt;GROUP BY bme2.BaseManagedEntityID     &lt;br /&gt;) AS Comps&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To find a computer name from a HealthServiceID (guid from the Agent proxy alerts)&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select DisplayName, Path, basemanagedentityid from basemanagedentity where basemanagedentityid = 'guid'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view the agent patch list (all hotfixes applied to all agents)&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select bme.path AS 'Agent Name', hs.patchlist AS 'Patch List' from MT_HealthService hs    &lt;br /&gt;inner join BaseManagedEntity bme on hs.BaseManagedEntityId = bme.BaseManagedEntityId     &lt;br /&gt;order by path&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To view all agents missing a specific hotfix (change the KB number below to the one you are looking for):&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;select bme.path AS 'Agent Name', hs.patchlist AS 'Patch List' from MT_HealthService hs    &lt;br /&gt;inner join BaseManagedEntity bme on hs.BaseManagedEntityId = bme.BaseManagedEntityId     &lt;br /&gt;where hs.patchlist not like '%951380%'     &lt;br /&gt;order by path&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;Misc OpsDB:&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view grooming info:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT * FROM PartitionAndGroomingSettings WITH (NOLOCK)&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Information on existing User Roles:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT UserRoleName, IsSystem from userrole&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Operational DB version:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select DBVersion from __MOMManagementGroupInfo__&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view all Run-As Profiles, their associated Run-As account, and associated agent name:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select srv.displayname as 'RunAs Profile Name',    &lt;br /&gt;srv.description as 'RunAs Profile Description',     &lt;br /&gt;cmss.name as 'RunAs Account Name',     &lt;br /&gt;cmss.description as 'RunAs Account Description',     &lt;br /&gt;cmss.username as 'RunAs Account Username',     &lt;br /&gt;cmss.domain as 'RunAs Account Domain',     &lt;br /&gt;mp.FriendlyName as 'RunAs Profile MP',     &lt;br /&gt;bme.displayname as 'HealthService'     &lt;br /&gt;from dbo.SecureStorageSecureReference sssr     &lt;br /&gt;inner join SecureReferenceView srv on srv.id = sssr.securereferenceID     &lt;br /&gt;inner join CredentialManagerSecureStorage cmss on cmss.securestorageelementID = sssr.securestorageelementID     &lt;br /&gt;inner join managementpackview mp on srv.ManagementPackId = mp.Id     &lt;br /&gt;inner join BaseManagedEntity bme on bme.basemanagedentityID = sssr.healthserviceid     &lt;br /&gt;order by srv.displayname&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To clean up old StateChangeEvent data for state changes that are older than the defined grooming period, such as monitors currently in a disabled, warning, or critical state.&amp;#160; By default we only groom monitor statechangeevents where the monitor is enabled and healthy at the time of grooming.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;USE [OperationsManager]    &lt;br /&gt;GO     &lt;br /&gt;SET ANSI_NULLS ON     &lt;br /&gt;GO     &lt;br /&gt;SET QUOTED_IDENTIFIER ON     &lt;br /&gt;GO     &lt;br /&gt;BEGIN &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET NOCOUNT ON &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @Err int    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @Ret int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @DaysToKeep tinyint     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @GroomingThresholdLocal datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @GroomingThresholdUTC datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @TimeGroomingRan datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @MaxTimeGroomed datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @RowCount int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @TimeGroomingRan = getutcdate() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @GroomingThresholdLocal = dbo.fn_GroomingThreshold(DaysToKeep, getdate())    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM dbo.PartitionAndGroomingSettings     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE ObjectName = 'StateChangeEvent' &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; EXEC dbo.p_ConvertLocalTimeToUTC @GroomingThresholdLocal, @GroomingThresholdUTC OUT    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @Err = @@ERROR &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; IF (@Err &amp;lt;&amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GOTO Error_Exit     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @RowCount = 1&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; -- This is to update the settings table    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; -- with the max groomed data     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @MaxTimeGroomed = MAX(TimeGenerated)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM dbo.StateChangeEvent     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE TimeGenerated &amp;lt; @GroomingThresholdUTC &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; IF @MaxTimeGroomed IS NULL    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GOTO Success_Exit &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; -- Instead of the FK DELETE CASCADE handling the deletion of the rows from    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; -- the MJS table, do it explicitly. Performance is much better this way.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DELETE MJS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM dbo.MonitoringJobStatus MJS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; JOIN dbo.StateChangeEvent SCE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON SCE.StateChangeEventId = MJS.StateChangeEventId     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; JOIN dbo.State S WITH(NOLOCK)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON SCE.[StateId] = S.[StateId]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SCE.TimeGenerated &amp;lt; @GroomingThresholdUTC     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; AND S.[HealthState] in (0,1,2,3) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @Err = @@ERROR    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IF (@Err &amp;lt;&amp;gt; 0)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GOTO Error_Exit     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; WHILE (@RowCount &amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -- Delete StateChangeEvents that are older than @GroomingThresholdUTC     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -- We are doing this in chunks in separate transactions on     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -- purpose: to avoid the transaction log to grow too large.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DELETE TOP (10000) SCE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM dbo.StateChangeEvent SCE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; JOIN dbo.State S WITH(NOLOCK)     &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; ON SCE.[StateId] = S.[StateId]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE TimeGenerated &amp;lt; @GroomingThresholdUTC     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND S.[HealthState] in (0,1,2,3) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SELECT @Err = @@ERROR, @RowCount = @@ROWCOUNT &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IF (@Err &amp;lt;&amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BEGIN     &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; GOTO Error_Exit     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE dbo.PartitionAndGroomingSettings    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET GroomingRunTime = @TimeGroomingRan,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataGroomedMaxTime = @MaxTimeGroomed     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE ObjectName = 'StateChangeEvent' &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @Err = @@ERROR, @RowCount = @@ROWCOUNT &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; IF (@Err &amp;lt;&amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GOTO Error_Exit     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END&amp;#160; &lt;br /&gt;Success_Exit:     &lt;br /&gt;Error_Exit:&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;END&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="5"&gt;Data Warehouse Database Section:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;Alerts Section:&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To get all raw alert data from the data warehouse to build reports from:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select * from Alert.vAlertResolutionState ars    &lt;br /&gt;inner join Alert.vAlertDetail adt on ars.alertguid = adt.alertguid     &lt;br /&gt;inner join Alert.vAlert alt on ars.alertguid = alt.alertguid&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view data on all alerts modified by a specific user:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select ars.alertguid, alertname, alertdescription, statesetbyuserid, resolutionstate, statesetdatetime, severity, priority, managedentityrowID, repeatcount    &lt;br /&gt;from Alert.vAlertResolutionState ars     &lt;br /&gt;inner join Alert.vAlert alt on ars.alertguid = alt.alertguid     &lt;br /&gt;where statesetbyuserid like '%username%'     &lt;br /&gt;order by statesetdatetime&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view a count of all alerts closed by all users:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select statesetbyuserid, count(*) as 'Number of Alerts'    &lt;br /&gt;from Alert.vAlertResolutionState ars     &lt;br /&gt;where resolutionstate = '255'     &lt;br /&gt;group by statesetbyuserid     &lt;br /&gt;order by 'Number of Alerts' DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;Events Section:&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To inspect total events in DW, and then break it down per day:&amp;#160; (this helps us know what we will be grooming out, and look for partitcular day event storms)&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SELECT CASE WHEN(GROUPING(CONVERT(VARCHAR(20), DateTime, 101)) = 1)    &lt;br /&gt;THEN 'All Days'     &lt;br /&gt;ELSE CONVERT(VARCHAR(20), DateTime, 101) END AS DayAdded,     &lt;br /&gt;COUNT(*) AS NumEventsPerDay     &lt;br /&gt;FROM Event.vEvent     &lt;br /&gt;GROUP BY CONVERT(VARCHAR(20), DateTime, 101) WITH ROLLUP     &lt;br /&gt;ORDER BY DayAdded DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Most Common Events by event number:&amp;#160; (This helps us know which event ID's are the most common in the database)&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SELECT top 50 EventDisplayNumber, COUNT(*) AS TotalEvents    &lt;br /&gt;FROM Event.vEvent     &lt;br /&gt;GROUP BY EventDisplayNumber     &lt;br /&gt;ORDER BY TotalEvents DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Most common events by event number and raw event description (this will take a very long time to run but it shows us not only event ID - but a description of the event to help understand which MP is the generating the noise)&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;SELECT top 50 EventDisplayNumber, Rawdescription, COUNT(*) AS TotalEvents    &lt;br /&gt;FROM Event.vEvent evt     &lt;br /&gt;inner join Event.vEventDetail evtd on evt.eventoriginid = evtd.eventoriginid     &lt;br /&gt;GROUP BY EventDisplayNumber, Rawdescription     &lt;br /&gt;ORDER BY TotalEvents DESC &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view all event data in the DW for a given Event ID:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select * from Event.vEvent ev    &lt;br /&gt;inner join Event.vEventDetail evd on ev.eventoriginid = evd.eventoriginid     &lt;br /&gt;inner join Event.vEventParameter evp on ev.eventoriginid = evp.eventoriginid     &lt;br /&gt;where eventdisplaynumber = '528'&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To search for all computers who have NOT logged a specific event in the DW:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select distinct elc.computername from Event.vEvent ev    &lt;br /&gt;inner join vEventLoggingComputer elc on elc.eventloggingcomputerrowid = ev.loggingcomputerrowid     &lt;br /&gt;where NOT eventdisplaynumber = '223'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;Performance Section:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data – core query:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 *    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;More selective of “interesting” output data:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, DateTime    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;Scoped to a ComputerName (FQDN)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, DateTime    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId     &lt;br /&gt;WHERE Path = 'OMDB.opsmgr.net' &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;Scoped to a Counter:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, DateTime    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId     &lt;br /&gt;WHERE CounterName = 'Private Bytes' &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;Scoped to a Computer and Counter:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, DateTime    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId     &lt;br /&gt;WHERE CounterName = 'Private Bytes'     &lt;br /&gt;AND Path = 'OMDB.OPSMGR.NET' &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;Ordered By DateTime:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, DateTime    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId     &lt;br /&gt;WHERE CounterName = 'Private Bytes'     &lt;br /&gt;AND Path = 'OMDB.OPSMGR.NET'     &lt;br /&gt;Order By DateTime DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;Modified DateTime relative to Central Time zone:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;select top 10 Path, FullName, ObjectName, CounterName, InstanceName, SampleValue, dateadd(hh,-5,DateTime) as 'DateTime (GMT-5)'    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId     &lt;br /&gt;WHERE CounterName = 'Private Bytes'     &lt;br /&gt;AND Path = 'OMDB.OPSMGR.NET'     &lt;br /&gt;Order By DateTime DESC &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw data - &lt;/strong&gt;&lt;strong&gt;How to get all the possible optional data to modify these queries above, in a list:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select Distinct Path    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;Select Distinct Fullname    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;Select Distinct ObjectName    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;Select Distinct CounterName    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId &lt;/p&gt;  &lt;p&gt;Select Distinct InstanceName    &lt;br /&gt;from Perf.vPerfRaw pvpr     &lt;br /&gt;inner join vManagedEntity vme on pvpr.ManagedEntityRowId = vme.ManagedEntityRowId     &lt;br /&gt;inner join vPerformanceRuleInstance vpri on pvpr.PerformanceRuleInstanceRowId = vpri.PerformanceRuleInstanceRowId     &lt;br /&gt;inner join vPerformanceRule vpr on vpr.RuleRowId = vpri.RuleRowId&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000080" size="4"&gt;&lt;em&gt;Grooming in the DataWarehouse:&lt;/em&gt;&lt;/font&gt;&amp;#160; &lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;Grooming no longer uses SQL agent jobs.&amp;#160; Grooming is handled by scheduled stored procedures, that run much more frequently, which provides less impact than in the previous version.&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Default grooming for the DW for each dataset, to examine Data Warehouse grooming settings:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT AggregationIntervalDurationMinutes, BuildAggregationStoredProcedureName, GroomStoredProcedureName, MaxDataAgeDays, GroomingIntervalMinutes FROM StandardDatasetAggregation&lt;/p&gt;  &lt;p mce_keep="true"&gt;The first row is the interval in minutes.    &lt;br /&gt;NULL is raw data, 60 is hourly, and 1440 is daily.     &lt;br /&gt;The second and third row shows what data it is     &lt;br /&gt;MaxDataAgeDays has the retention period in days - this is the field to update if the administrator wants to lower the days of retention.     &lt;br /&gt;RAW alert – 400 days     &lt;br /&gt;RAW event – 100 days     &lt;br /&gt;RAW perf – 10 days (hourly and daily perf = 400 days)     &lt;br /&gt;RAW state – 180 days&amp;#160; (hourly and daily state = 400 days)&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Here is a better view of the current data retention in your data warehouse:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select ds.datasetDefaultName AS 'Dataset Name', sda.AggregationTypeId AS 'Agg Type 0=raw, 20=Hourly, 30=Daily', sda.MaxDataAgeDays AS 'Retention Time in Days'    &lt;br /&gt;from dataset ds, StandardDatasetAggregation sda     &lt;br /&gt;WHERE ds.datasetid = sda.datasetid     &lt;br /&gt;ORDER by ds.datasetDefaultName&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view the number of days of total data of each type in the DW:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT DATEDIFF(d, MIN(DWCreatedDateTime), GETDATE()) AS [Current] FROM Alert.vAlert    &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM Event.vEvent     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM Perf.vPerfRaw     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM Perf.vPerfHourly     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM Perf.vPerfDaily     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM State.vStateRaw     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM State.vStateHourly     &lt;br /&gt;SELECT DATEDIFF(d, MIN(DateTime), GETDATE()) AS [Current] FROM State.vStateDaily&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;To view the oldest and newest recorded timestamps of each data type in the DW:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select min(DateTime) from Event.vEvent    &lt;br /&gt;select max(DateTime) from Event.vEvent     &lt;br /&gt;select min(DateTime) from Perf.vPerfRaw     &lt;br /&gt;select max(DateTime) from Perf.vPerfRaw     &lt;br /&gt;select min(DWCreatedDateTime) from Alert.vAlert     &lt;br /&gt;select max(DWCreatedDateTime) from Alert.vAlert&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#000080" size="4"&gt;AEM Queries (Data Warehouse):&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Default query to return all RAW AEM data:&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;select * from [CM].[vCMAemRaw] Rw    &lt;br /&gt;inner join dbo.AemComputer Computer on Computer.AemComputerRowID = Rw.AemComputerRowID     &lt;br /&gt;inner join dbo.AemUser Usr on Usr.AemUserRowId = Rw.AemUserRowId     &lt;br /&gt;inner join dbo.AemErrorGroup EGrp on Egrp.ErrorGroupRowId = Rw.ErrorGroupRowId     &lt;br /&gt;Inner join dbo.AemApplication App on App.ApplicationRowId = Egrp.ApplicationRowId&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Count the raw crashes per day:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT CONVERT(char(10), DateTime, 101) AS &amp;quot;Crash Date (by Day)&amp;quot;, COUNT(*) AS &amp;quot;Number of Crashes&amp;quot;    &lt;br /&gt;FROM [CM].[vCMAemRaw]     &lt;br /&gt;GROUP BY CONVERT(char(10), DateTime, 101)     &lt;br /&gt;ORDER BY &amp;quot;Crash Date (by Day)&amp;quot; DESC&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;Count the total number of raw crashes in the DW database:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="GramE"&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;select count(*) from CM.vCMAemRaw&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;&lt;span class="SpellE"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Default grooming for the DW for the AEM dataset:&amp;#160; (Aggregated data kept for 400 days, RAW 30 days by default)&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT AggregationTypeID, BuildAggregationStoredProcedureName, GroomStoredProcedureName, MaxDataAgeDays, GroomingIntervalMinutes    &lt;br /&gt;FROM StandardDatasetAggregation WHERE BuildAggregationStoredProcedureName = 'AemAggregate'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&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;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p mce_keep="true"&gt;   &lt;br /&gt;&lt;/p&gt; &lt;strong&gt;&lt;/strong&gt;  &lt;p mce_keep="true"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;font color="#000000" size="5"&gt;Misc Section:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Simple query to display large tables, to determine what is taking up space in the database:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT 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 mce_keep="true"&gt;&lt;strong&gt;Is SQL broker enabled?&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT is_broker_enabled FROM sys.databases WHERE name = 'OperationsManager'&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;How to identify your version of SQL server:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;SELECT&amp;#160; SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')&lt;/p&gt;  &lt;p mce_keep="true"&gt;SQL 2005:    &lt;br /&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; 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; 2005.90.2047     &lt;br /&gt;SQL Server 2005 SP1 plus 918222&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; 2005.90.3042&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;How to identify your version of OpsMgr 2007:&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;RTM:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6.0.5000.0&lt;/p&gt;  &lt;p mce_keep="true"&gt;SP1-RC:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6.0.6246.0&lt;/p&gt;  &lt;p mce_keep="true"&gt;SP1:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6.0.6278.0&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;b&gt;&lt;em&gt;To get better performance manually:&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Update Statistics (will help speed up reports and takes less time than a full reindex):&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;EXEC sp_updatestats&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Show index fragmentation (to determine how badly you need a reindex – logical scan frag &amp;gt; 10% = bad. Scan density below 80 = bad):&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;DBCC SHOWCONTIG&lt;/p&gt;  &lt;p&gt;DBCC SHOWCONTIG WITH FAST (less data than above – in case you don’t have time)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Reindex the database:&lt;/b&gt;&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;&lt;strong&gt;Table by table:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;DBCC DBREINDEX (‘TableName’)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Query to view the index job history on domain tables in the databases:&lt;/strong&gt;&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;&lt;strong&gt;Query to view the update statistics job history on domain tables in the databases:&lt;/strong&gt;&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;Data Warehouse query to examine the index and statistics history - run the following query for the Alert, Event, Perf, and State tables (these are non-domain tables):&lt;/strong&gt;&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;img src="http://blogs.technet.com/aggbug.aspx?PostID=2199747" width="1" height="1"&gt;</description><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>