<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Lukasz Rutkowski on Operations Manager</title><subtitle type="html">A PFE point of view on System Center Operations Manager</subtitle><id>http://blogs.technet.com/b/lukaszr/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/b/lukaszr/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2012-10-09T05:04:00Z</updated><entry><title>KB2790831 - SCOM Hotfix for Windows Server 2012</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/archive/2013/02/14/kb2790831-scom-hotfix-for-windows-server-2012.aspx" /><id>http://blogs.technet.com/b/lukaszr/archive/2013/02/14/kb2790831-scom-hotfix-for-windows-server-2012.aspx</id><published>2013-02-14T10:52:41Z</published><updated>2013-02-14T10:52:41Z</updated><content type="html">&lt;p&gt;Just a short notice to all people who are using or monitoring Windows Server 2012 with System Center Operations Manager 2012 (both RTM and SP1), or managing those with SCVMM 2012 or SCDPM 2012. There is a very important hotfix which fixes a handle leak in WMI. Extract from KB:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This issue occurs because, when Performance Data Helper log files are opened, Pdh.dll creates a new thread by using the &lt;b&gt;CreateThread()&lt;/b&gt; API to process the log files. The &lt;b&gt;CreateThread()&lt;/b&gt; API then returns a handle to the newly created thread. The handle remains open after these log files are closed, causing a handle leak.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To download the hotfix, go to download location: &lt;a title="http://support.microsoft.com/kb/2790831/en-us" href="http://support.microsoft.com/kb/2790831/en-us"&gt;http://support.microsoft.com/kb/2790831/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Happy monitoring!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552459" width="1" height="1"&gt;</content><author><name>Łukasz Rutkowski MSFT</name><uri>http://blogs.technet.com/rem8_4000_wp.pl/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>How to Reset the Administrators Group in Operations Manager 2012 – Working</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/archive/2012/11/29/how-to-reset-the-administrators-group-in-operations-manager-2012-working.aspx" /><id>http://blogs.technet.com/b/lukaszr/archive/2012/11/29/how-to-reset-the-administrators-group-in-operations-manager-2012-working.aspx</id><published>2012-11-29T21:20:44Z</published><updated>2012-11-29T21:20:44Z</updated><content type="html">&lt;p&gt;Scenario – imagine a quick hit on Delete button while standing on BUILTIN\Administrators entry in Operations Manager Administrators user role window. What happens few hours later? If this was a default setting and no-one was later added to OM Admins group – oh well – no-one is an administrator. That happens. There should be a fix.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0601.image_5F00_0A1DAEB2.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3817.image_5F00_thumb_5F00_086CE2DE.png" width="505" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; – You can delete BUILTIN\Administrators only, if you added second entry as a member. You can’t be left without any group there (through console of course).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE 2&lt;/strong&gt; – To this group you can add only domain groups, not local, so BUILTIN\Administrators are unable to be added.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;&lt;strong&gt;Step 1&lt;/strong&gt; – Go to your favourite search engine and look for the topic above. You will be redirected to TechNet page - &lt;a title="http://technet.microsoft.com/en-us/library/hh456441.aspx" href="http://technet.microsoft.com/en-us/library/hh456441.aspx"&gt;http://technet.microsoft.com/en-us/library/hh456441.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; – You go step-by-step through the guide. You go to paragraph 2, point 2. You go into &lt;strong&gt;&amp;lt;drive letter&amp;gt;:\Program Files\System Center Operations Manager 2012\SDK Service State&lt;/strong&gt;… wait a minute. There no such folder! Default path is &lt;strong&gt;&amp;lt;drive letter&amp;gt;:\Program Files\System Center 2012\Operations Manager\Server &lt;/strong&gt;and even there there is no &lt;strong&gt;momauth.xml&lt;/strong&gt; file. You hit search – it has to be somewhere – and you are punished by your naivety… &lt;/p&gt;  &lt;p&gt;Just to be clear – as per &lt;strong&gt;Mihai Sarbulescu blog &lt;/strong&gt;and post on missing &lt;a href="http://blogs.technet.com/b/mihai/archive/2012/07/23/build-in-user-role-missing-from-operations-manager-2012.aspx" target="_blank"&gt;Built-In User Roles&lt;/a&gt;, the MomAuth.xml is not there anymore.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; &lt;em&gt;In OM &lt;strong&gt;2007&lt;/strong&gt; the user roles and their permissions, roles, etc. were managed through &lt;a href="http://technet.microsoft.com/en-us/library/cc757023(v=ws.10)"&gt;Authorization Manager&lt;/a&gt; which is an OS component and the data was stored in an XML file called &lt;strong&gt;MomAuth.xml&lt;/strong&gt; which could be found on the &lt;strong&gt;RMS&lt;/strong&gt;. Now, in OM &lt;strong&gt;2012&lt;/strong&gt;, this has been changed and &lt;strong&gt;AzMan&lt;/strong&gt; is no longer used - the user roles and security checks, permissionsm information, etc. about the OM Management Group is stored and checked directly in the OM operational database.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Now what? Now let’s go into SQL Server Management Studio and let’s play a bit. There are few new tables there which gives you an idea how the authorization works in OM12 and where to find specific data.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0272.image_5F00_6DC046C4.png"&gt;&lt;img title="image" style="margin: 0px; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0513.image_5F00_thumb_5F00_6C0F7AF0.png" width="244" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;If you are familiar with &lt;strong&gt;AzMan &lt;/strong&gt;and you created a totally custom user role, you now need to familiarize with those most important tables.&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;AzMan_AzOperation&lt;/strong&gt; – list of all operations, which can be scoped (i.e. Agent__Deploy, Agent__Get, Agent__Set etc.)&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;AzMan_AzRoleAssignment&lt;/strong&gt; – connects User Roles to AzMan profiles&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;AzMan_AzTask&lt;/strong&gt; – list of User Roles with their descriptions&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;AzMan_Role_SIDMember&lt;/strong&gt; – list of SIDs (stored in DB as varbinary(85) connected to Roles&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;And the last one is what we want. When you have a deleted an account from OM Admins you will have a table like this (fresh install, in your environment there can be lots of them)&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2262.image_5F00_035A7F62.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2350.image_5F00_thumb_5F00_169B3601.png" width="463" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;Well, there is something here, so why I don’t see it in console? Because the first one is a default entry for LocalSystem, which is always an OM Admin member, but hidden from list. So how can we add a member here? Well, that’s a bit nasty, but just creating a simple INSERT. But what to insert? A varbinary value for BUILTIN\Administrators is:&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;0x01020000000000052000000020020000&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So just copy the SQL query from below to your Query Window:&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;INSERT INTO [OperationsManager].[dbo].[AzMan_Role_SIDMember]&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;([RoleID]&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;,[MemberSID])&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;VALUES&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;(1, 0x01020000000000052000000020020000)&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7633.image_5F00_7FF8E7B9.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2671.image_5F00_thumb_5F00_7E481BE5.png" width="447" height="218" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now re-run the SELECT query.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2678.image_5F00_5CE87649.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7043.image_5F00_thumb_5F00_0924FD2E.png" width="439" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;And let’s check the console too.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3240.image_5F00_0774315A.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/4745.image_5F00_thumb_5F00_785D527F.png" width="363" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;OH NO! Aaaah, wait, let’s use /clearcache&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3252.image_5F00_0C0A3C14.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/6153.image_5F00_thumb_5F00_360A3A3C.png" width="367" height="102" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hope this will help anyone when falling into trouble of need to recreate Operations Manager Administration User Role.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;DISCLAIMER: THIS SOLUTION IS PROVIDED &amp;quot;AS IS&amp;quot;. YOU ARE RUNNING IN ON YOUR OWN RISK AS THIS IS NOT MICROSOFT’S SUPPORTED SOLUTION AT THE DATE OF POSTING.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3535571" width="1" height="1"&gt;</content><author><name>Łukasz Rutkowski MSFT</name><uri>http://blogs.technet.com/rem8_4000_wp.pl/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Where is my SCOM installed?</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/archive/2012/11/15/where-is-my-scom-installed.aspx" /><id>http://blogs.technet.com/b/lukaszr/archive/2012/11/15/where-is-my-scom-installed.aspx</id><published>2012-11-15T07:22:06Z</published><updated>2012-11-15T07:22:06Z</updated><content type="html">&lt;p&gt;This will be a short tip on how to get something really useful, especially if you have many OM environment to work with regardless its version. Recently there was a question internally how to run a script or a command and pass SCOM installation directory within XML tag. This was normal in OM07, but install directory has changed in OM12 from&lt;/p&gt;  &lt;p&gt;%ProgramFiles%\System Center Operations Manager 2007&lt;/p&gt;  &lt;p&gt;to&lt;/p&gt;  &lt;p&gt;%ProgramFiles%\System Center 2012\Operations Manager\Server&lt;/p&gt;  &lt;p&gt;If you migrated to OM12, you have a mixture of OM07 and OM12, you don’t want to change your management packs &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Method #1:&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;You can create a junction to this new folder on every OM12 server:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;mklink /J “C:\Program Files\System Center Operations Manager 2007” “C:\Program Files\System Center 2012\Operations Manager\Server”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So now everytime something points to first folder it will be really pointing to new one, but will never know about it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5611.image_5F00_2CEA8E2A.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5621.image_5F00_thumb_5F00_64509F58.png" width="477" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Method #2:&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you can’t make any modifications to folder structure or it is easier to create a global solution, you can populate environmental variable with installation directory from registry, but this will enforce you to change your MPs to reflect your new environmental variable too. If you are writing a new MP – this is probably better solution.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;$scomdir = (New-Object –ComObject Wscript.Shell).RegRead(&amp;quot;HKLM\SOFTWARE\Microsoft Operations Manager\3.0\Setup\InstallDirectory&amp;quot;)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[Environment]::SetEnvironmentVariable(&amp;quot;SCOMDir&amp;quot;, $scomdir, &amp;quot;Machine&amp;quot;)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;And then you can use it as:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;OpsMgrInstallPath&amp;gt;&amp;quot;%SCOMDir%&amp;quot;&amp;lt;/OpsMgrInstallPath&amp;gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5224.image_5F00_375B3C7D.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/6607.image_5F00_thumb_5F00_55C57D66.png" width="474" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3532669" width="1" height="1"&gt;</content><author><name>Łukasz Rutkowski MSFT</name><uri>http://blogs.technet.com/rem8_4000_wp.pl/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Discovery never stops… but tried everything!</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/archive/2012/10/24/discovery-never-stops-but-tried-everything.aspx" /><id>http://blogs.technet.com/b/lukaszr/archive/2012/10/24/discovery-never-stops-but-tried-everything.aspx</id><published>2012-10-24T20:05:00Z</published><updated>2012-10-24T20:05:00Z</updated><content type="html">&lt;p&gt;So have you ever been in situation where everything you did just didn&amp;rsquo;t help and every blog post, every forum entry and every link in search engine provided an information which you tried three times or more? Such things happen and then you have to fight on your own (or with little help from Support Escalation Engineers).&lt;/p&gt;
&lt;p&gt;Whenever you see a blue bar just going from left to right for ages on discovery wizard, your mind starts to refresh every blog post you&amp;rsquo;ve seen and remind yourself of three things you have to check before going wild. First thing is a &lt;strong&gt;Microsoft SQL Server Service Broker&lt;/strong&gt; (which was discussed thousand Times). In Operations Manager 2012 SQL Server Broker is enabled on OperationsManager database from default, which eases your pain (&lt;a title="http://support.microsoft.com/kb/941409" href="http://support.microsoft.com/kb/941409"&gt;http://support.microsoft.com/kb/941409&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Second thing will be great, old Health Service State folder, which can be stale after many operations and this will prevent showing results in discovery pane. Third option &amp;ndash; you didn&amp;rsquo;t specify SPNs for SDK Service correctly. Good blog post and nice bunch of links can be found in Marnix Wolf&amp;rsquo;s post from two years ago (&lt;a title="http://thoughtsonopsmgr.blogspot.gr/2010/08/discovery-wizard-is-running-for-ever.html" href="http://thoughtsonopsmgr.blogspot.gr/2010/08/discovery-wizard-is-running-for-ever.html"&gt;http://thoughtsonopsmgr.blogspot.gr/2010/08/discovery-wizard-is-running-for-ever.html&lt;/a&gt;). What if there&amp;rsquo;s no luck? What if all of those options fail?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Mystery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If everything works fine, but one thing doesn&amp;rsquo;t and you don&amp;rsquo;t know why &amp;ndash; it has to be a permission, as old legends say. But what, why, when? Let&amp;rsquo;s see exactly how the discovery proces works (from &lt;a title="http://blogs.technet.com/b/momteam/archive/2007/12/10/how-does-computer-discovery-work-in-opsmgr-2007.aspx" href="http://blogs.technet.com/b/momteam/archive/2007/12/10/how-does-computer-discovery-work-in-opsmgr-2007.aspx"&gt;http://blogs.technet.com/b/momteam/archive/2007/12/10/how-does-computer-discovery-work-in-opsmgr-2007.aspx&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img width="522" height="556" title="Computer Discovery" style="display: inline;" alt="Computer Discovery" src="http://blogs.technet.com/photos/deploymentman/images/2632320/original.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;Since I&amp;rsquo;ve been discovering servers only, the option to check if they are accessible is enabled by default, in Alert View I saw multiple entries on no connection to remote host. That means that steps 8 to 10 went through, but returning results didn&amp;rsquo;t finish. Since step 11 didn&amp;rsquo;t show proper results and there&amp;rsquo;s no connection with permissions and returning results from discovery engine, something had to happen before step 8.&lt;/p&gt;
&lt;p&gt;One of the steps which are not documented in this list is when SQL Server checks if SDK Account is in the proper group to use OperationsManager&amp;rsquo;s SQL Server Broker. This is done somewhere between steps 5 and 7.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What was the turning point? It was the Application log in SQL Machine which showed such entry:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/8664.image_5F00_28A88919.png"&gt;&lt;img width="694" height="188" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/4540.image_5F00_thumb_5F00_26F7BD45.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Log Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application &lt;br /&gt;Source:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MSSQLSERVER &lt;br /&gt;Date:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10/24/2012 4:55:48 PM &lt;br /&gt;Event ID:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28005 &lt;br /&gt;Task Category: Server &lt;br /&gt;Level:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error &lt;br /&gt;Keywords:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Classic &lt;br /&gt;User:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N/A &lt;br /&gt;Computer:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; omdb.om.domain &lt;br /&gt;Description: &lt;br /&gt;An exception occurred while enqueueing a message in the target queue. Error: 15404, State: 19. Could not obtain information about Windows NT group/user 'domain\OmSDK', error code 0x5.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So it turns out that SQL Server service account should be able to check attributes of OMSDK service account. Normally you should see permissions like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/6014.image_5F00_037B18E0.png"&gt;&lt;img width="385" height="325" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7673.image_5F00_thumb_5F00_68CE7CC6.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The real life shows something different. &lt;strong&gt;Authenticated Users&lt;/strong&gt; on the new OU for SCOM accounts didn&amp;rsquo;t have this entry. In fact it was totally missing. Didn&amp;rsquo;t want to break anything, maybe it was on purpose, maybe not. Adding &lt;strong&gt;Read&lt;/strong&gt; right to &lt;strong&gt;SQL Server account&lt;/strong&gt; resolved the hanging discovery process.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7266.image_5F00_34F660A8.png"&gt;&lt;img width="386" height="327" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7144.image_5F00_thumb_5F00_1A49C48F.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hope you can add it to the list of possible solutions of hanging discovery problem.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3528480" width="1" height="1"&gt;</content><author><name>Łukasz Rutkowski MSFT</name><uri>http://blogs.technet.com/rem8_4000_wp.pl/ProfileUrlRedirect.ashx</uri></author><category term="discovery" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/discovery/" /><category term="SDK" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/SDK/" /><category term="SQL Server" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/SQL+Server/" /></entry><entry><title>A nice report on Distributed Application component state</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/lukaszr/archive/2012/10/09/a-nice-report-on-distributed-application-component-state.aspx" /><id>http://blogs.technet.com/b/lukaszr/archive/2012/10/09/a-nice-report-on-distributed-application-component-state.aspx</id><published>2012-10-09T04:04:00Z</published><updated>2012-10-09T04:04:00Z</updated><content type="html">&lt;p&gt;When you need a report and you suddenly see that it&amp;rsquo;s impossible (or possible, but there are easier ways to accomplish this) via standard reports in Operations Manager, you first starting to fight with a tool that comes in handy on ACS &amp;ndash; Report Builder. Well, maybe that&amp;rsquo;s just me, but playing with RB on standard reporting OM playground is like trying to fish a shark with a jelly bait.&lt;/p&gt;
&lt;p&gt;When I was young and full of grace&amp;hellip; I tried not to anything which had a bit of Visual part in its name. For me Visual Studio = programming and boring typing of code blocks. That may be true for 90% of work, but fortunately writing (that&amp;rsquo;s a tough word, composing is more accurate) reports in Visual Studio is a really piece of cake. That&amp;rsquo;s what I found out lately when pushed to the wall was given a task &amp;ndash; report which shows live state of objects which are bits of custom Distributed Application.&lt;/p&gt;
&lt;p&gt;Before I go into this task step-by-step, I will confess myself. I tried to do that by copying Kevin Holman&amp;rsquo;s custom stuff, some example reports, I&amp;rsquo;ve read few posts on this &amp;ndash; nothing lit a candle in my dark space of brain. I&amp;rsquo;m a type of person who loves two things &amp;ndash; getting it done by myself and&amp;hellip; wizards. All types of wizards are having +1 for my happiness.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before you start&amp;hellip; &lt;/strong&gt;make sure you follow few steps, which are needed to be done on Business Intelligence 2008 and 2008 R2 Studio from SQL Server installation (yes, you need to install that to start work &amp;ndash; just launch setup and from Shared Features choose that BI one). All necessary steps are available on &lt;a href="http://ok-sandbox.com/2012/06/configure-sql-server-business-intelligence-development-studio-2008-to-support-opsmgr-reports-development/" target="_blank"&gt;Oleg Kapustin&amp;rsquo;s blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Let&amp;rsquo;s start&amp;hellip;&lt;/strong&gt; and to do that we need to prepare a plan. This plan would contain vision, materials and data to work with. Let&amp;rsquo;s begin with vision.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Vision&lt;strong&gt;: &lt;/strong&gt;&lt;/em&gt;A tabular report on main DA part and Level 1 containers which we create in Distributed Application designer. Level 2 report can also be available as a detailed version of our report (&lt;em&gt;real world scenario: business wants less data, administrators &amp;ndash; more of it&lt;/em&gt;). The report should show graphical indicator of healthy, warning or critical state, not only numeric or word entries. This would be fun!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Materials:&lt;/em&gt; This should be prepared basing of our vision. So graphical indicators&amp;hellip; will be icons from OM or any other icons you can find for &lt;strong&gt;ok&lt;/strong&gt;, &lt;strong&gt;warning &lt;/strong&gt;or &lt;strong&gt;critical&lt;/strong&gt; values. Best ones would be max 20x20 px. Also we will make use of SQL Server Management Studio to connect to the database, so you can start opening this one right now, as we will need&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Data to work with&lt;/em&gt;: I&amp;rsquo;ve had a discussion whether to work on OperationsManagerDW or OperationsManager database for this report. It&amp;rsquo;s easier to find all the data in OM live database but there&amp;rsquo;s one point you should be aware of. Live data is live data &amp;ndash; it changes a lot. When you create a small report from one table and this is a state change for example which doesn&amp;rsquo;t flicker a lot, it&amp;rsquo;s rather safe. Be sure to use WITH (NOLOCK) clause on SQL queries as this won&amp;rsquo;t lock tables for query and will allow other queries to run against it without waiting for your process to finish.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;How to query an OperationsManager database for health state of components of distributed application? Good question. You can do it in two ways &amp;ndash; like a robot or like a brain. Robot method would be to query BaseManagedEntity table for known part names of application. This however is causing a need to rewrite dataset if your DA will change in future. So second method is much nicer. We can use in-built procedure to query for all predecessors of any object. In our case those would be kids of our DA.&lt;/p&gt;
&lt;p&gt;------&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;select s.HealthState, b.DisplayName, UPPER(SUBSTRING(b.FullName, CHARINDEX(':', b.FullName)+1, 50)) as CompService&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;from dbo.fn_ContainedBaseEntitiesFromList('84BB11C7-29D1-DD9C-C228-3FEC82533499', 2) a &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;left join dbo.BaseManagedEntity b on&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;a.BaseManagedEntityId = b.BaseManagedEntityId&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;inner join dbo.State s on&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;a.BaseManagedEntityId = s.BaseManagedEntityId&lt;/em&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;where Depth &amp;lt;= 2 and s.MonitorId = 'E3AB86A1-34FA-35B5-B864-DA4DB993C0F5'&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;order by b.DisplayName, CompService asc&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;-------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s explain a bit. dbo.fn_ContainedBaseEntitiesFromList is an in-built procedure which retrieves contained items from specific object (represented as a GUID here) and we can but how many levels down it should return. Funny thing is that every number below 1 returns all contained objects, so when I put two, it gave up to level 6. That is why I restricted values only to level 2 (for admin report) and we can do it also only for level 1. When you want to return only level 1 items (LOB App &amp;ndash;&amp;gt; Databases, LOB App &amp;ndash;&amp;gt; Web Servers, LOB App &amp;ndash;&amp;gt; Services), you don&amp;rsquo;t need that CompService column as this part trims down those long values which are seen as path in return from query (it cuts it just to have computer FQDN name of instance). So for Level 1 items it would be like this:&lt;/p&gt;
&lt;p&gt;------&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;select s.HealthState, b.DisplayName&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;from dbo.fn_ContainedBaseEntitiesFromList('84BB11C7-29D1-DD9C-C228-3FEC82533499', 1) a &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;left join dbo.BaseManagedEntity b on&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;a.BaseManagedEntityId = b.BaseManagedEntityId&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;inner join dbo.State s on&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;a.BaseManagedEntityId = s.BaseManagedEntityId&lt;/em&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;where Depth = 1 and s.MonitorId = 'E3AB86A1-34FA-35B5-B864-DA4DB993C0F5'&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;order by b.DisplayName asc&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;-------&lt;/p&gt;
&lt;p&gt;Order by clause is just for fun and to be sure everything is properly arranged. '84BB11C7-29D1-DD9C-C228-3FEC82533499' GUID is my DA main application (like LOB App) and 'E3AB86A1-34FA-35B5-B864-DA4DB993C0F5' GUID is a monitor ID for Entity (so top one). That way I represented in numeric value (s.HealthState) a state of all main parts of DA. The first GUID you should search in BaseManagedEntiity table by your app name.&lt;/p&gt;
&lt;p&gt;Having those queries we can then do our first report. Let&amp;rsquo;s start then. Open Business Intelligence (properly configured).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/7674.clip_5F00_image001_5F00_60E91AC7.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/8737.clip_5F00_image001_5F00_thumb_5F00_23984033.png" width="233" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first screen allow you to choose from variety of Visual Studio templates. Choose Report Server Project.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/8345.clip_5F00_image002_5F00_61350222.jpg"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3108.clip_5F00_image002_5F00_thumb_5F00_4A726841.jpg" width="588" height="401" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In new project window on the right side you will see small box called Solution Explorer. From there right click Reports and choose Add New Report.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5228.clip_5F00_image0014_5F00_766F1998.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5417.clip_5F00_image0014_5F00_thumb_5F00_52761C71.png" width="225" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;My beloved wizard opens :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5025.clip_5F00_image0016_5F00_157BEFD8.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[6]" border="0" alt="clip_image001[6]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0310.clip_5F00_image0016_5F00_thumb_5F00_23F6EBFD.png" width="476" height="443" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On the next screen we will create a data source to our main OperationsManager database (not Warehouse!). In the Select Data Source window click New Data Source and Edit. This will pop-up Properties window which you can intuitively fill in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0726.clip_5F00_image0018_5F00_3A5964B7.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[8]" border="0" alt="clip_image001[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0724.clip_5F00_image0018_5F00_thumb_5F00_05D8926F.png" width="389" height="528" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can Test Connection is everything is ok. After accept you can mark this data source as a shared one for future references which is a good idea.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/6165.clip_5F00_image00110_5F00_070D0581.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[10]" border="0" alt="clip_image001[10]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3823.clip_5F00_image00110_5F00_thumb_5F00_0BA3103B.png" width="586" height="545" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On the next screen paste your query from Management Studio. For our demonstration I will use level 1 query.&lt;/p&gt;
&lt;p&gt;Next select Tabular report type.&lt;/p&gt;
&lt;p&gt;On Design Table do not drag any fields, just hit Next.&lt;/p&gt;
&lt;p&gt;Then choose your layout and complete the wizard. You should see something similar to mine.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/1778.image_5F00_27E02C8E.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0602.image_5F00_thumb_5F00_185D1ABF.png" width="593" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now for some tweaking. As you see my report name will only be about Level 1 items. Let&amp;rsquo;s hide the Health State column first and then add second one as just State for future images. Click the Health State column and then right click it and choose Column Visibility.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2437.clip_5F00_image00112_5F00_21893033.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[12]" border="0" alt="clip_image001[12]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/2450.clip_5F00_image00112_5F00_thumb_5F00_1FA8B49F.png" width="333" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Change the value to Hide.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0383.clip_5F00_image00114_5F00_30603980.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[14]" border="0" alt="clip_image001[14]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/1351.clip_5F00_image00114_5F00_thumb_5F00_2F1BA0A1.png" width="468" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now add new column. Again right click Health State column and choose Add New Column to the left. Click a header, then double click and enter State name.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5732.clip_5F00_image00116_5F00_1402D193.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[16]" border="0" alt="clip_image001[16]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/1832.clip_5F00_image00116_5F00_thumb_5F00_36E39343.png" width="467" height="124" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now for the best part. We need to put images somehow here and change them basing on values of HealthState field (1 is healthy, 2 is warning, 3 is critical, 0 will be uninitialized, so if you want to show this one too, prepare 4th icon for this one).&lt;/p&gt;
&lt;p&gt;On the left side click Images and from right click menu choose Add Image.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/5557.clip_5F00_image00118_5F00_28587151.png"&gt;&lt;img style="margin: 0px; display: inline; background-image: none;" title="clip_image001[18]" border="0" alt="clip_image001[18]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/1030.clip_5F00_image00118_5F00_thumb_5F00_4E4E21A7.png" width="208" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/4075.clip_5F00_image00120_5F00_33355299.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[20]" border="0" alt="clip_image001[20]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/4087.clip_5F00_image00120_5F00_thumb_5F00_7C0BC49F.png" width="565" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After you finish you should see your items.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/6644.clip_5F00_image00122_5F00_76F96123.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[22]" border="0" alt="clip_image001[22]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0777.clip_5F00_image00122_5F00_thumb_5F00_14F76F18.png" width="214" height="152" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now drag one of the images from this list into empty field below State. Right click this field then and open Properties.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3808.clip_5F00_image00124_5F00_635BDBB5.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[24]" border="0" alt="clip_image001[24]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/3580.clip_5F00_image00124_5F00_thumb_5F00_4C4D5A79.png" width="482" height="434" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can see that this field will use &lt;strong&gt;ok &lt;/strong&gt;image every time. We want to change that. Click &lt;strong&gt;&lt;em&gt;fx&lt;/em&gt;&lt;/strong&gt; button. In function field paste this formula:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;=Switch(Fields!HealthState.Value="1","ok",Fields!HealthState.Value="2","warn",Fields!HealthState.Value="3","error")&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This tells the field that basing on HealthState value it needs to get proper image from those three we imported. As I said you can make another switch option to put Uninitialized value there. When you accept and close all windows you should see an image icon in the field.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/4544.clip_5F00_image00126_5F00_04E7DEBA.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001[26]" border="0" alt="clip_image001[26]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24-metablogapi/0334.clip_5F00_image00126_5F00_thumb_5F00_58CAE1C8.png" width="492" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When you click Preview above the design pane, you should see also proper report.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24/6675.untitled.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-24/6675.untitled.jpg" width="346" height="174" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now from the File menu just save this specific report and later import it to you SQL Reporting Server reports website (&lt;a href="http://yourssrs/reports"&gt;http://yourssrs/reports&lt;/a&gt; and choose Import File to a folder you like).&lt;/p&gt;
&lt;p&gt;Happy Reporting! :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3524870" width="1" height="1"&gt;</content><author><name>Łukasz Rutkowski MSFT</name><uri>http://blogs.technet.com/rem8_4000_wp.pl/ProfileUrlRedirect.ashx</uri></author><category term="Reporting" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/Reporting/" /><category term="Authoring" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/Authoring/" /><category term="Visual Studio" scheme="http://blogs.technet.com/b/lukaszr/archive/tags/Visual+Studio/" /></entry></feed>