<?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 : Reporting</title><link>http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx</link><description>Tags: Reporting</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Writing reports against RAW Perf data in the Data Warehouse</title><link>http://blogs.technet.com/kevinholman/archive/2009/07/24/writing-reports-against-raw-perf-data-in-the-data-warehouse.aspx</link><pubDate>Fri, 24 Jul 2009 22:51:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3267911</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3267911.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3267911</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3267911</wfw:comment><description>&lt;p&gt;By default – our generic reports access *aggregated* data in the warehouse… either daily or hourly.&amp;#160; These contain information like number of data points, avg, min, max, and std. deviation data.&amp;#160; However, sometimes users will want access to the RAW, individual data points.&lt;/p&gt;  &lt;p&gt;This is kept in the warehouse – and you can see it in the Perf.vPerfRaw view in the DB.&amp;#160; By default – we keep this data for 10 days, and in general – we do NOT recommend that you extend this to any longer retention.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will add these to my mega-query list… &lt;a href="http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx"&gt;HERE&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here are some core query examples/samples for RAW perf data – which you can use to write reports against this output:&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;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;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;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;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;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;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;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;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;img src="http://blogs.technet.com/aggbug.aspx?PostID=3267911" width="1" height="1"&gt;</description><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>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>Running reports – how can I run historical reports on agents that have been decommissioned?</title><link>http://blogs.technet.com/kevinholman/archive/2009/04/01/running-reports-how-can-i-run-historical-reports-on-agents-that-have-been-decommissioned.aspx</link><pubDate>Wed, 01 Apr 2009 18:22:54 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3221073</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3221073.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3221073</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3221073</wfw:comment><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When we delete an agent from monitoring, we do NOT delete the agent data from the Data Warehouse – by design of course.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;However – when running a report, the deleted agent was not showing up.&amp;#160; For instance – I am running the &lt;strong&gt;&lt;em&gt;Windows Server 2003 Operating System – Operating System Performance&lt;/em&gt;&lt;/strong&gt; report.&lt;/p&gt;  &lt;p&gt;When I try and search for the old machine, “&lt;strong&gt;DMZDC&lt;/strong&gt;” nothing comes up!&amp;#160; Is the agent data gone from the warehouse?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/RunningreportshowcanIrunhistoricalreport_91FC/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="341" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/RunningreportshowcanIrunhistoricalreport_91FC/image_thumb.png" width="621" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Nope.&amp;#160; I have to click the “Options” button, and change the search time, to a start date that would include this agent.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/RunningreportshowcanIrunhistoricalreport_91FC/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="391" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/RunningreportshowcanIrunhistoricalreport_91FC/image_thumb_1.png" width="627" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now – I can run reports on the old data, that is still in the warehouse.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3221073" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>A cool way to use a web page view in the console - run a report!</title><link>http://blogs.technet.com/kevinholman/archive/2008/11/07/a-cool-way-to-use-a-web-page-view-in-the-console-run-a-report.aspx</link><pubDate>Sat, 08 Nov 2008 01:14:28 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3149381</guid><dc:creator>kevinhol</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3149381.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3149381</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3149381</wfw:comment><description>&lt;p&gt;Here is a unique way to use web page views in the OpsMgr console.&lt;/p&gt;  &lt;p&gt;You can create a web page view in the Ops Console for pretty much any HTML - whether local to your hard drive - or a real web page.&lt;/p&gt;  &lt;p&gt;When you run an SRS based report, you can drop this link into a web page view.&lt;/p&gt;  &lt;p&gt;Here is an example:&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will use a generic report that I wrote to show all servers that are currently not pingable - that I posted &lt;a href="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"&gt;HERE&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is just a simple SRS report, that runs a query and returns all servers that are currently not pingable...&amp;#160; if you look at the URL when you run the report - it actually calls out the specific report to run:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="84" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_thumb.png" width="634" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So - lets copy this URL, and we will paste it into our new web page view, in the console.&lt;/p&gt;  &lt;p&gt;Go to the console, and create a new managemwent pack for your custom views, or create the view in an existing MP you already have.&amp;#160; Mine is called &amp;quot;Demo&amp;quot;.&lt;/p&gt;  &lt;p&gt;Then, create a new web page view.&lt;/p&gt;  &lt;p&gt;Paste in the URL for the report as such:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="246" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_thumb_1.png" width="431" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hit ok.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now - this new web page view will execute this report, on demand, right from the main view of a console....&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="442" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Acoolwaytouseawebpageviewintheconsolerun_E45E/image_thumb_2.png" width="607" border="0" /&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;For another REALLY cool use of the web page view - check out my co-workers blog - Steve Rachui - he has written a cool maintenance mode web page, and uses this same web page view to add it to the console:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/steverac/archive/2008/11/07/maintenance-mode-in-the-console.aspx" href="http://blogs.msdn.com/steverac/archive/2008/11/07/maintenance-mode-in-the-console.aspx"&gt;http://blogs.msdn.com/steverac/archive/2008/11/07/maintenance-mode-in-the-console.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Get the maint mode website tool here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/steverac/archive/2008/10/27/enough-with-the-maintenance-mode-tools.aspx" href="http://blogs.msdn.com/steverac/archive/2008/10/27/enough-with-the-maintenance-mode-tools.aspx"&gt;http://blogs.msdn.com/steverac/archive/2008/10/27/enough-with-the-maintenance-mode-tools.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3149381" width="1" height="1"&gt;</description><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>How many consoles are connected to my RMS?</title><link>http://blogs.technet.com/kevinholman/archive/2008/10/27/how-many-consoles-are-connected-to-my-rms.aspx</link><pubDate>Mon, 27 Oct 2008 19:59:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3142642</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3142642.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3142642</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3142642</wfw:comment><description>&lt;p&gt;This discussion comes up quite a bit.&lt;/p&gt;  &lt;p&gt;There are a couple ways to track this data....&amp;#160; even to alert us if it breaches a threshold.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;One way to look at the number of connected consoles, is to examine the number of users that are connected to the SDK service.&amp;#160; We can do this via powershell, and perfmon:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In powershell, this will show each connection to the SDK &amp;#8211; whether it be a console session, or powershell session, or some other SDK connection, like managed code running:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;$mgc=get-managementgroupconnection       &lt;br /&gt;$mgc.ManagementGroup.GetConnectedUserNames()&lt;/strong&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is a one liner version: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Get-ManagementGroupConnection | foreach-object {$_.ManagementGroup.getConnectedUserNames()} &lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you&amp;#8217;re looking for the actual NUMBER of users connected &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Get-ManagementGroupConnection | foreach-object {$_.ManagementGroup.getConnectedUserNames()} | Measure-Object&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That is great.... however, as stated, this shows SDK connections.... not specific to the console.&amp;#160; I dont know of a way offhand to demonstrate which are true CONSOLE connections... but unless you run a lot of SDK processes like timed scripts against the SDK... most will be consoles in a typical environment.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Another way to view connections is via Perfmon.&amp;#160; The perf object &amp;quot;OpsMgr SDK Service\Client Connections&amp;quot; and &amp;quot;OpsMgr SDK Service\Client Connections using cache&amp;quot;&amp;#160; From what I can tell offhand, the &amp;quot;using cache&amp;quot; counter is the same as connected clients, minus the 2 default SDK connections from the service account.&lt;/p&gt;  &lt;p&gt;We don't have a rule collecting this by default.&amp;#160; However, you can create a collection rule, or even a performance threshold rule to alert you when this count goes above what you feel is supportable in your environment.&amp;#160; Here is an example:&amp;#160; (Note - &lt;strong&gt;&lt;em&gt;Root Management Server&lt;/em&gt;&lt;/strong&gt; is a good target for these rules/monitors... since it will be the only role with the SDK service running)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/HowmanyconsolesareconnectedtomyRMS_A8AD/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="378" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/HowmanyconsolesareconnectedtomyRMS_A8AD/image_thumb.png" width="597" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And the output of a monitoring view you can create:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/HowmanyconsolesareconnectedtomyRMS_A8AD/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="349" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/HowmanyconsolesareconnectedtomyRMS_A8AD/image_thumb_1.png" width="648" border="0" /&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;&amp;#160;&lt;/p&gt;  &lt;p&gt;For reporting purposes &amp;#8211; you can see &amp;#8220;&lt;strong&gt;connections&lt;/strong&gt;&amp;#8221; to the SDK &amp;#8211; by writing an event collections rule for the following events, which is logged on each console session or powershell session that connects to the SDK:&amp;#160; (this is logged on the RMS only) &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Information   &lt;br /&gt;Event Source:&amp;#160;&amp;#160; OpsMgr SDK Service    &lt;br /&gt;Event Category:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; None    &lt;br /&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 26328    &lt;br /&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10/16/2008    &lt;br /&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9:23:01 AM    &lt;br /&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A    &lt;br /&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OMRMS    &lt;br /&gt;Description:    &lt;br /&gt;A new client has connected.&amp;#160; &lt;br /&gt;UserName: OPSMGR\adadmin     &lt;br /&gt;SessionId: uuid:12e8d840-9cca-45df-b889-db39203136e0;id=15 &lt;/p&gt;  &lt;p&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Information   &lt;br /&gt;Event Source:&amp;#160;&amp;#160; OpsMgr SDK Service    &lt;br /&gt;Event Category:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; None    &lt;br /&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 26329    &lt;br /&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10/16/2008    &lt;br /&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9:24:04 AM    &lt;br /&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A    &lt;br /&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OMRMS    &lt;br /&gt;Description:    &lt;br /&gt;A client has disconnected.&amp;#160; &lt;br /&gt;UserName: OPSMGR\adadmin     &lt;br /&gt;SessionId: uuid:12e8d840-9cca-45df-b889-db39203136e0;id=15 &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;However &amp;#8211; this won&amp;#8217;t show you good concurrence&amp;#8230;. just &amp;#8220;who&amp;#8221; is using the console&amp;#8230;. and how often connections are made and disconnected.&amp;#160; Since the username is a parameter..... you could potentially write reports and examine your most common console users, etc.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So - we have the ability to:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1.&amp;#160; See &amp;quot;who is connected right now&amp;quot;&amp;#160; - Powershell &lt;/p&gt;  &lt;p&gt;2.&amp;#160; Count the client connections right now - Powershell and Perfmon.&lt;/p&gt;  &lt;p&gt;3.&amp;#160; Collect the client count from the RMS - Perfmon rule&lt;/p&gt;  &lt;p&gt;4.&amp;#160; Alert when it reaches a threshold we set - Perfmon Monitor&lt;/p&gt;  &lt;p&gt;5.&amp;#160; Collect and report on actual user connections - Event rule and report.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3142642" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Using OpsMgr to see which servers have not been logged on to via RDP</title><link>http://blogs.technet.com/kevinholman/archive/2008/09/03/using-opsmgr-to-see-which-servers-have-not-been-logged-on-to-via-rdp.aspx</link><pubDate>Thu, 04 Sep 2008 00:46:36 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3117841</guid><dc:creator>kevinhol</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3117841.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3117841</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3117841</wfw:comment><description>&lt;p&gt;&lt;strong&gt;This came up in a discussion group.... and while it maybe not be all that interesting of a topic.... it is interesting to see the kinds of reports you can write with OpsMgr and look for unique scenarios.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The question was - &lt;strong&gt;&lt;em&gt;&amp;quot;How can I run a report - and see all my servers that have NOT been logged onto via RDP in the last 30 days?&amp;quot;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First - we need to find out what events are logged, so we can capture which servers ARE being logged on to via RDP.&amp;#160; If you have an audit policy that logs successfull logons, we will log an event 528 in the security event log, and the &amp;quot;LogonType&amp;quot; for a RDP logon is &amp;quot;10&amp;quot;.&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is a link which describes these logon types and what they mean:&amp;#160; &lt;a href="http://www.windowsecurity.com/articles/Logon-Types.html"&gt;http://www.windowsecurity.com/articles/Logon-Types.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So - we want to collect event 528&lt;/strong&gt;.... but ONLY those events that are RDP... or logon type 10.... so we need to know which Event Parameter that logontype corresponds to, so we can write a rule which will ONLY collect these events.&amp;#160; You can use the logparser tool I mentioned here:&amp;#160; &lt;a title="http://blogs.technet.com/kevinholman/archive/2008/04/22/using-event-description-as-criteria-for-a-rule.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/04/22/using-event-description-as-criteria-for-a-rule.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/04/22/using-event-description-as-criteria-for-a-rule.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As an alternative - if you don't want to use LogParser for some crazy reason... you can create an alert generating event rule for all event 528's, and then in the alert description, simply paste the following - to show you what each parameter in an event equals:&lt;/p&gt;  &lt;p&gt;Parameter 1:&amp;#160; $Data/Params/Param[1]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;Parameter 2:&amp;#160; $Data/Params/Param[2]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;Parameter 3:&amp;#160; $Data/Params/Param[3]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;Parameter 4:&amp;#160; $Data/Params/Param[4]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;Parameter 5:&amp;#160; $Data/Params/Param[5]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;Parameter 6:&amp;#160; $Data/Params/Param[6]$ &amp;lt;BR /&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ok.... so now.... we need to write our event collection rule.&lt;/strong&gt;&amp;#160; It should look something like this:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="134" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb.png" width="435" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At this point.... we can run a simple generic &amp;quot;Event Analysis&amp;quot; Report and look for all event 528's in the Data Warehouse in a given time period.&amp;#160; Any servers that DONT show up.... haven't logged this event.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="561" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_1.png" width="987" border="0" /&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;However, what we REALLY want is something that just shows me the list of all machines in the data warehouse that HAVE NOT generated this event.... for that, we can use a custom query:&lt;/p&gt;  &lt;p&gt;&amp;#160;&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 = '528'    &lt;br /&gt;order by elc.computername&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Just paste this into a simple visual studio report, add some time/data parameters, and there you have it.&amp;#160; In fact - lets walk through that.&amp;#160; You can use the copy if Visual Studio that gets installed with the SQL 2005 client tools.&lt;/p&gt;  &lt;p&gt;1.&amp;#160; Start up visual studio.&lt;/p&gt;  &lt;p&gt;2.&amp;#160; File, New Project.&amp;#160; Choose the Report Server Project Wizard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="464" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_2.png" width="684" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3.&amp;#160; Click Next to start the Report Wizard.&lt;/p&gt;  &lt;p&gt;4.&amp;#160; Create a new Data Source (we will swithc our report to use an existing one later)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="490" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_3.png" width="522" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;5.&amp;#160; Click Edit, and put in the server\instance, and then choose the data warehouse database.&amp;#160; Choose Test Connection to make sure it's all good:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="542" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_4.png" width="531" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;6.&amp;#160; Click OK, then Next.&amp;#160; Paste in your query that gives you the output you want... from the query I listed above:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="486" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_5.png" width="523" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7.&amp;#160; Click Next, and Finish on Report type.&lt;/p&gt;  &lt;p&gt;8.&amp;#160; Type a name for the report, such as &amp;quot;Inactive RDP Servers&amp;quot;&amp;#160; Check the box to Preview the report.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="487" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_6.png" width="523" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;9.&amp;#160; Click Finish.&amp;#160; The preview comes up.&amp;#160; This is a pretty inefficient query, so it might take some time to run in a big datawarehouse.&amp;#160; We will need to adjust some of the column widths using a drag and drop function on the layout tab.... the initial formatting is bad.&amp;#160; Click the Layout tab, and you can drag the column headers to make the report look good:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="229" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_7.png" width="380" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;10.&amp;#160; Now my report looks good.... but I need to add some date/time parameters....&amp;#160; Click the &amp;quot;Data&amp;quot; tab now.&amp;#160; From the top menu, choose Report, Report Parameters.&amp;#160; Click Add.&amp;#160; Add a StartDate and EndDate paramter, and choose DateTime as the data type, exactly as shown:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="518" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_8.png" width="666" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;11.&amp;#160; Choose OK, and now when you preview your report, you will have some nice date pickers.&lt;/p&gt;  &lt;p&gt;12.&amp;#160; From the top menu, choose build, build report project.&amp;#160; Then browse to your user profile, and find the RDL file we created under \Documents\VisualStudio.&lt;/p&gt;  &lt;p&gt;13.&amp;#160; You can take this RDL and import it into your reporting website.&amp;#160; &lt;a title="http://omdw/Reports" href="http://servername/Reports"&gt;http://servername/Reports&lt;/a&gt;&amp;#160; You should create a custom folder there for custom reports.&amp;#160; They will automatically show up in the SCOM console.&lt;/p&gt;  &lt;p&gt;14.&amp;#160; Once you import this file, we need to select it in the reporting website, and update the Data Source.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="366" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_9.png" width="595" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;15.&amp;#160; Browse the shared data sources, and select the Data Warehouse Main.&amp;#160; Click OK, and make sure you click APPLY on the next screen.&lt;/p&gt;  &lt;p&gt;16.&amp;#160; Now run your report.&amp;#160; Pick a start and end time, and run it - here is mine:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_22.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="721" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrtoseewhichservershavenotbeenl_EBE7/image_thumb_10.png" width="624" border="0" /&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;You can repeat the above process using this wizard for any query that you want to turn into a report.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3117841" width="1" height="1"&gt;</description><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>Auditing on Alerts from the Data Warehouse</title><link>http://blogs.technet.com/kevinholman/archive/2008/07/21/auditing-on-alerts-from-the-data-warehouse.aspx</link><pubDate>Tue, 22 Jul 2008 00:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3092141</guid><dc:creator>kevinhol</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3092141.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3092141</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3092141</wfw:comment><description>&lt;P&gt;Do you want auditing information on how many alerts are being closed or modified by your OpsMgr users?&lt;/P&gt;
&lt;P&gt;You can use the following queries to get this information from the data warehouse, and I have attached some reports below as well:&lt;/P&gt;
&lt;P&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&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&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&gt;In the reports I have attached, you can pick a date and a time window, and run these same basic queries&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=298 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_thumb.png" width=650 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=558 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_thumb_1.png" width=712 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AuditingonAlertsfromtheDataWarehouse_E636/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=4&gt;&lt;STRONG&gt;Files attached below:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3092141" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3092141.ashx" length="4139" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>The Exchange Server Configuration report doesn't return any data</title><link>http://blogs.technet.com/kevinholman/archive/2008/07/15/the-exchange-server-configuration-report-doesn-t-return-any-data.aspx</link><pubDate>Tue, 15 Jul 2008 21:34:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3089174</guid><dc:creator>kevinhol</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3089174.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3089174</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3089174</wfw:comment><description>&lt;P&gt;I figured out why - and instead of just posting about the workaround... I thought I'd take a moment and post on the process I used to determine the how and the why:&lt;/P&gt;
&lt;P&gt;When you run the "Exchange Configuration Report" per the guide, you are supposed to add objects of type "Exchange 2003 Role".&amp;nbsp; Well, if you do this - the reports will never return any data.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_6.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=484 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_2.png" width=798 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;So - to try and look at the SQL code... I went to the RDL file in the reporting website....&amp;nbsp; &lt;A href="http://reportingservername/reports" mce_href="http://reportingservername/reports"&gt;http://reportingservername/reports&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I browsed over to the report - which I found at:&amp;nbsp; Home &amp;gt; Microsoft.Exchange.Server.2003.Monitoring &amp;gt; Report.Exchange.ExchangeServerConfiguration.&amp;nbsp; Select the "Properties" link.... and normally there would be an "Edit" button here... where I could download the RDL (report definition) file.... but instead - I see this is a linked report:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=438 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb.png" width=575 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Aha!&amp;nbsp; It is linked to: /Microsoft.SystemCenter.DataWarehouse.Report.Library/Microsoft.SystemCenter.DataWarehouse.Report.CustomConfiguration&lt;/P&gt;
&lt;P&gt;Microsoft.SystemCenter.DataWarehouse.Report.Library is the Generic Report library.... so off I go looking for a generic report.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Found it:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=259 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_1.png" width=595 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;So - I simply run this report.... and immediately I can see something different... I am now offered a new parameter area... called Report Fields.&amp;nbsp; So, I add the Exchange 2003 Roles instance to the report as an object.... and now I can pick and choose from a whole list of discovered attribute data.... and customize the order I want it to show up in:&lt;/P&gt;
&lt;P&gt;Here I am running the report for the same object... and now I get to pick the cool things I want to see:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_10.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_10.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=644 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_4.png" width=896 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/TheExchangeServerConfigurationreportdoes_BEE1/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Now.... if I want to run this report in the future... and add more servers, etc... I simply save it to my favorites.&amp;nbsp; Then - on future runs of the report, I can drop the parameter header back down and make any changes I want.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3089174" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Exchange+MP/default.aspx">Exchange MP</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>A report to show all agents missing a specific hotfix</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/27/a-report-to-show-all-agents-missing-a-specific-hotfix.aspx</link><pubDate>Sat, 28 Jun 2008 01:11:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079710</guid><dc:creator>kevinhol</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3079710.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3079710</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3079710</wfw:comment><description>&lt;p&gt;This is a continuation of my previous post on determining which agents are missing a hot-fix:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="How do I know which hotfixes have been applied to which agents-" href="http://blogs.technet.com/kevinholman/archive/2008/06/24/how-do-i-know-which-hotfixes-have-been-applied-to-which-agents.aspx" mce_href="http://blogs.technet.com/kevinholman/archive/2008/06/24/how-do-i-know-which-hotfixes-have-been-applied-to-which-agents.aspx"&gt;How do I know which hotfixes have been applied to which agents-&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I wrote up a report that allows you to paste in a KB article number into the report as a parameter, and then it will show all agents that are potentially missing that hotfix.&amp;#160; This will help you easily find agent which need to be patched and got missed for some reason.&lt;/p&gt;  &lt;p&gt;You can run this report if you create the SQL reporting data source as specified in my previous post: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="Creating a new data source for reporting against the Operational Database" 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;Creating a new data source for reporting against the Operational Database&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Once imported - it will show up in the console.&amp;#160; Open the report, and paste in any KB article number for a OpsMgr hotfix you have applied.&amp;#160; The number MUST begin and end with &amp;quot;%&amp;quot;.... such as %951380% as shown:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Areporttoshowallagentsmissingaspecificho_F1C7/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Areporttoshowallagentsmissingaspecificho_F1C7/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="392" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Areporttoshowallagentsmissingaspecificho_F1C7/image_thumb.png" width="770" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Areporttoshowallagentsmissingaspecificho_F1C7/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;The report is attached below:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079710" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3079710.ashx" length="8255" type="application/octet-stream" /><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/Hotfix/default.aspx">Hotfix</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>Agent Proxy alerts - finding the right machine to enable agent proxy on using a custom report</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/27/agent-proxy-alerts-finding-the-right-machine-to-enable-agent-proxy-on-using-a-custom-report.aspx</link><pubDate>Sat, 28 Jun 2008 00:04:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079695</guid><dc:creator>kevinhol</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3079695.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3079695</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3079695</wfw:comment><description>&lt;p&gt;Certain types of agents need the agent proxy setting enabled.&amp;#160; These are documented in various guides... such as Exchange Active Directory, Cluster nodes, etc...&lt;/p&gt;  &lt;p&gt;However, sometimes, we still get alerts that Agent Proxy needs to be enabled for a HealthService.&amp;#160; The problem is... the Alert often doesn't tell us which agent needs this enabled!!!&lt;/p&gt;  &lt;p&gt;Here is an example alert:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="653" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb.png" width="593" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The alert context tab is telling us about something called &amp;quot;SQLCLUSTER&amp;quot;.... but I know that is a virtual cluster instance name... not the name of a real agent.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="336" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_1.png" width="556" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Marius blogged about a SQL query... that will help us find the agent that needs this turned on:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/mariussutara/archive/2007/11/09/agent-proxying-alert.aspx" href="http://blogs.msdn.com/mariussutara/archive/2007/11/09/agent-proxying-alert.aspx" mce_href="http://blogs.msdn.com/mariussutara/archive/2007/11/09/agent-proxying-alert.aspx"&gt;http://blogs.msdn.com/mariussutara/archive/2007/11/09/agent-proxying-alert.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The sql query I like to use is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;select DisplayName, Path, basemanagedentityid from basemanagedentity where basemanagedentityid = 'guid'&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where &amp;quot;guid&amp;quot; = the GUID of the healthservice in the alert.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So in my example above - the part in bold is the GUID we need.....&amp;#160; the HealthService that is causing the problem....&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Health service ( &lt;strong&gt;&lt;font color="#0000ff"&gt;4F6BCCD4-2A41-1C39-DC50-5CE6CA10E0D3&lt;/font&gt;&lt;/strong&gt; ) should not generate data about this managed object ( A6D9CC33-3EF7-00BF-3E78-B368B32F1486 ).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If we drop this into the query.... it will look like so:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;select DisplayName, Path, basemanagedentityid from basemanagedentity where basemanagedentityid = '&lt;strong&gt;&lt;font color="#0000ff"&gt;4F6BCCD4-2A41-1C39-DC50-5CE6CA10E0D3&lt;/font&gt;&lt;/strong&gt;'&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Which when run in a SQL query returns:&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;table class="" cellspacing="0" cellpadding="2" width="626" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="168"&gt;DisplayName&amp;#160;&amp;#160;&amp;#160; &lt;/td&gt;        &lt;td class="" valign="top" width="152"&gt;Path&amp;#160;&amp;#160;&amp;#160; &lt;/td&gt;        &lt;td class="" valign="top" width="298"&gt;basemanagedentityid&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="" valign="top" width="168"&gt;sqlnode2.opsmgr.net &lt;/td&gt;        &lt;td class="" valign="top" width="152"&gt;sqlnode2.opsmgr.net&lt;/td&gt;        &lt;td class="" valign="top" width="295"&gt;4F6BCCD4-2A41-1C39-DC50-5CE6CA10E0D3&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Aha!&amp;#160; So - SQLNODE2 needs agent proxy enabled.&lt;/p&gt;  &lt;p&gt;Well.... how instead of all this dropping to SQL.... we create a report with the query above, and have an input parameter where you can just paste in the GUID from the alert?&amp;#160; I have created just that, and you can download it below!&lt;/p&gt;  &lt;p&gt;Please see my previous post on creating a data source for the OpsDB here:&amp;#160; &lt;a title="Creating a new data source for reporting against the Operational Database" 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;Creating a new data source for reporting against the Operational Database&lt;/a&gt;&amp;#160; You will need to do that first in order to see this report.... since it runs against the Operational Database, not the Data Warehouse.&lt;/p&gt;  &lt;p&gt;Simply download this RDL file, then browse to your reporting website (&lt;a href="http://reportingservername/reports" mce_href="http://reportingservername/reports"&gt;http://reportingservername/reports&lt;/a&gt;) browse to your new custom folder for reports, and choose &amp;quot;Upload File&amp;quot;.&amp;#160; Your new report is uploaded, and you should be able to see it in the Ops Console under Reporting now:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_8.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="273" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_3.png" width="513" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Open the report.&amp;#160; The report just needs you to paste in the healthservice GUID you saw in the Agent Proxy alert:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_10.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="338" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_4.png" width="635" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This should make it a bit easier and faster to tackle these types of alerts in the future.... for the few agents you are missing this setting on.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A simpler way to do this without running a report.... is to use &amp;quot;Discovered Inventory&amp;quot; in the monitoring console.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="145" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_2.png" width="209" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Select &amp;quot;Change Target Type&amp;quot; from the actions pane, and then choose &amp;quot;View All Targets&amp;quot; and then type &amp;quot;Health Service Watcher&amp;quot; in the &amp;quot;Look For&amp;quot; box.&amp;#160; Select the Health Service Watcher Class and click OK.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="235" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_5.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now paste your GUID into the &amp;quot;FIND&amp;quot; box and click OK.&amp;#160; Make sure you dont have any trainling spaces in the GUID:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="133" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AgentProxyalertsfindingtherightmachineto_E1EF/image_thumb_6.png" width="446" border="0" /&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;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;The Report download is here:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079695" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3079695.ashx" length="10835" type="application/octet-stream" /><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></item><item><title>Creating a new data source for reporting against the Operational Database</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/27/creating-a-new-data-source-for-reporting-against-the-operational-database.aspx</link><pubDate>Fri, 27 Jun 2008 23:39:30 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079685</guid><dc:creator>kevinhol</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3079685.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3079685</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3079685</wfw:comment><description>&lt;p&gt;I am going to be publishing several reports over the next few months, that query the Operational Database instead of the Data warehouse.&amp;#160; We will use these reports for getting all sorts of administrative information... which will allow us to get data without having to launch a SQL query analyzer window all the time.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First thing... we will need to create a new Data Source for the OpsDB.&lt;/p&gt;  &lt;p&gt;Start, by opening a web page, and browsing to &lt;a href="http://SRSServer/Reports"&gt;http://SRSServer/Reports&lt;/a&gt;&amp;#160; where &amp;quot;SRSServer&amp;quot; is the name of your reporting server.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Click &amp;quot;New Data source&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="167" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_thumb_1.png" width="320" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.&amp;#160; For the Name - type &amp;quot;OpsDB&amp;quot;&amp;#160; This will be the data source that I will be using for all my reports.&amp;#160; If you want a different name, thats fine and dandy... you will just have to modify each report to link to your data source name.&amp;#160; Not a big deal.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;2.&amp;#160; In the &amp;quot;Connections String&amp;quot; paste in the following:&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;data source=DBSERVER;initial catalog=OperationsManager;Integrated Security=SSPI&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;DBSERVER&lt;/strong&gt; is the name of the SQL server hosting your operational database.&amp;#160; &lt;strong&gt;Initial Catalog&lt;/strong&gt; is the name of your Operational Database.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;3.&amp;#160; Under &amp;quot;Connect Using&amp;quot; choose &amp;quot;Credentials are not required&amp;quot;&amp;#160; Click OK.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is my example:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="804" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_thumb_2.png" width="784" border="0" /&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;All done with the data source!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now... we need a custom folder to place our custom reports.&amp;#160; Click New Folder:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="146" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_thumb_3.png" width="193" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Give this folder a name.&amp;#160; This name will appear to all reporting users in the OpsMgr console.&amp;#160; I am calling mine &amp;quot;Custom - Reports&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="268" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_thumb_4.png" width="425" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Click OK.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now - in the OpsMgr Console - we can see our new report folder:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="171" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinganewdatasourceforreportingagains_DC1A/image_thumb_5.png" width="268" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When we publish or import new reports in the future, we can use this folder.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079685" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>AD Role Holders Report - how to get data</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/26/ad-role-holders-report-how-to-get-data.aspx</link><pubDate>Thu, 26 Jun 2008 22:37:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3078835</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3078835.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3078835</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3078835</wfw:comment><description>&lt;P&gt;The "AD Role Holders" report has some incorrect description information on how to run the report.&amp;nbsp; If you follow the instructions... adding the "Active Directory Domain Controller Computer Role" you will get no data returned.&amp;nbsp; This will be fixed in an upcoming ADMP update... but in the meantime:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Instead - you need to add the "Forest" object &lt;STRONG&gt;&lt;EM&gt;as a group&lt;/EM&gt;&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;Open the report.&lt;/P&gt;
&lt;P&gt;Select "Add Group"&lt;/P&gt;
&lt;P&gt;Search for a domain name of the forest root.&lt;/P&gt;
&lt;P&gt;Sort by "Type" and add the object for "Active Directory Forest"&lt;/P&gt;
&lt;P&gt;Run the report.&lt;/P&gt;
&lt;P&gt;This will give you the RID Master, Schema Master, and PDC Emulator role information for the forest.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=494 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_thumb.png" width=535 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_4.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=542 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_thumb_1.png" width=738 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ADRoleHoldersReporthowtogetdata_CD7D/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3078835" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>When searching for objects to include in reports - the results are limited to 500 objects</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/25/when-searching-for-objects-to-include-in-reports-the-results-are-limited-to-500-objects.aspx</link><pubDate>Thu, 26 Jun 2008 00:01:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3078074</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3078074.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3078074</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3078074</wfw:comment><description>&lt;p&gt;Keep this in mind when searching for an object when creating a report.&amp;#160; If you don't give very specific search criteria... or if you just select &amp;quot;Add Object&amp;quot; then select &amp;quot;Search&amp;quot; with no criteria.... the result set is limited to 500 objects returned.&amp;#160; Therefore - if the object you are looking for doesn't show up - make sure you are specific enough in your search.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To demonstrate this - I created a performance report, and clicked &amp;quot;Add Object&amp;quot; then hit &amp;quot;Search&amp;quot; and then added all objects to my report....&amp;#160; the report builder will show use the number of objects selected on the right:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Whensearchingforobjectstoincludeinreport_E166/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="470" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Whensearchingforobjectstoincludeinreport_E166/image_thumb.png" width="700" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3078074" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Reporting/default.aspx">Reporting</category></item></channel></rss>