<?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>JIMMY HARPER'S OPERATIONS MANAGER BLOG : SQL</title><link>http://blogs.technet.com/jimmyharper/archive/tags/SQL/default.aspx</link><description>Tags: SQL</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Noisy DBCC Rule in the SQL Management Pack</title><link>http://blogs.technet.com/jimmyharper/archive/2009/10/01/noisy-dbcc-rule-in-the-sql-management-pack.aspx</link><pubDate>Thu, 01 Oct 2009 08:39:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3284259</guid><dc:creator>jimmyharper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jimmyharper/comments/3284259.aspx</comments><wfw:commentRss>http://blogs.technet.com/jimmyharper/commentrss.aspx?PostID=3284259</wfw:commentRss><description>&lt;p&gt;The SQL Server Management Pack has a rule, targeted at SQL 2000/2005/2008 DB Engine named “DBCC executed found and repaired errors”.&amp;#160; This rule monitors for Event ID 8957 in the Application Log, logged by the SQL Service.&amp;#160; Here is the criteria for the rule:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/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/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb.png" width="826" height="271" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The problem with this is that you will see this Event logged, even when DBCC did not find or fix any errors…here’s an example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb_1.png" width="389" height="304" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So, this could result in a lot of alerts.&amp;#160; Also, this rule generates an Informational alert by default, so if the event did indicate that errors were found, it would not generate a Warning or Critical alert.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We can change this by disabling the default rule and creating a new one.&amp;#160; The new one should generate a Warning or Critical alert only if the DBCC event indicates that errors were found.&amp;#160; We have two ways that we can do this:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;&lt;font size="4"&gt;The Easy Way&lt;/font&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;SQL 2005/2008:&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div&gt;Set an Override to disable the built-in “DBCC executed found and repaired errors” rules targeted at SQL 2005/2008 DB Engine       &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div&gt;Create two separate rules, one targeted at SQL 2005 DB Engine and one targeted at SQL 2008 DB Engine.&amp;#160; The rule will be exactly the same as the original, but with additional criteria for “Event Description does not contain “found 0 errors””:&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb_2.png" width="936" height="291" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Configure alerting as desired:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_8.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/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb_3.png" width="570" height="510" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="3"&gt;SQL 2000:&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Set an Override to disable the built-in “DBCC executed found and repaired errors” rules targeted at SQL 2000 DB Engine     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Create a new rule, targeted at SQL 2000 DB Engine.&amp;#160; The criteria will be a little different than SQL 2005/2008:&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_10.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/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb_4.png" width="973" height="534" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font size="4"&gt;&lt;strong&gt;The Harder, But Better, Way&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I don’t like using Event Description in criteria if I don’t have to…using Parameters is less of a performance hit on the agent.&amp;#160; So, instead of using the above options with EventDescription, we can use parameters.&amp;#160; The parameters we are concerned with here are Parameter 8 (number of errors found) and Parameter 9 (number of errors repaired).&amp;#160; This is for SQL 2005/2008 only, I haven’t looked at the parameters for SQL 2000.&amp;#160; So, we can use the following criteria:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_12.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/jimmyharper/WindowsLiveWriter/NoisyDBCCRuleintheSQLManagementPack_898/image_thumb_5.png" width="924" height="310" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The reason that this is better is that the Agent doesn’t need to look through the full Event description of every 8957 event, it only needs to look at parameters 8 and 9.&lt;/p&gt;  &lt;p&gt;The reason that is is harder is because we’ll also have to edit the XML of the rule, since we are using Integers in the criteria.&amp;#160; See my previous blog post (from, like, an hour ago) on this &lt;a href="http://blogs.technet.com/jimmyharper/archive/2009/10/01/using-integers-and-other-non-string-data-types-in-rules-and-monitors.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So, we’ll need to export our custom MP, open it in a text editor and find the XML for the OR expression for Parameter 8 and Parameter 9.&amp;#160; Here is the XML:&lt;/p&gt;  &lt;p&gt;&amp;lt;Expression&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;Or&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&amp;quot;String&amp;quot;&amp;gt;Params/Param[8]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&amp;quot;String&amp;quot;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&amp;quot;String&amp;quot;&amp;gt;Params/Param[9]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&amp;quot;String&amp;quot;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/Or&amp;gt;    &lt;br /&gt; &amp;lt;/Expression&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll then need to change the “String” entries to “Integer”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;Before:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Expression&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;Or&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;Params/Param[8]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;Params/Param[9]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/Or&amp;gt;    &lt;br /&gt; &amp;lt;/Expression&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;After:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Expression&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;Or&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;Integer&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;Params/Param[8]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;Integer&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XPathQuery Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;Integer&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;Params/Param[9]&amp;lt;/XPathQuery&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Greater&amp;lt;/Operator&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value Type=&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&amp;quot;Integer&amp;quot;&lt;/font&gt;&lt;/strong&gt;&amp;gt;0&amp;lt;/Value&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Expression&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/Or&amp;gt;    &lt;br /&gt; &amp;lt;/Expression&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Update the version of the MP, re-import it, and you should be good to go.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3284259" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jimmyharper/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Management+Pack/default.aspx">Management Pack</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Rule/default.aspx">Rule</category></item><item><title>SQL Server Full Text Search Service Monitor</title><link>http://blogs.technet.com/jimmyharper/archive/2009/07/02/sql-server-full-text-search-service-monitor.aspx</link><pubDate>Thu, 02 Jul 2009 10:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3260651</guid><dc:creator>jimmyharper</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.technet.com/jimmyharper/comments/3260651.aspx</comments><wfw:commentRss>http://blogs.technet.com/jimmyharper/commentrss.aspx?PostID=3260651</wfw:commentRss><description>&lt;P&gt;This issue is described in the SQL Server Management Pack Guide, but I wanted to blog it since I’ve seen a couple customers hit it.&lt;/P&gt;
&lt;P&gt;In the current version of the SQL Server Management Pack (version 6.0.6559.0), we have a monitor for the SQL Server Full Text Search Service which is targeted at the SQL 2005/2008 DB Engine classes.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_2.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/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/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb.png" width=833 height=496 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The problem is, this is an optional component in SQL Server and is not always installed.&amp;nbsp; So, for servers where this service is not installed, we will see a lot of the following alerts:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Alert Name:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Service Check Probe Module Failed Execution&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;or&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Service Check Data Source Module Failed Execution&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Alert Description:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Error getting state of service Error: 0x8007007b Details: The filename, directory name, or volume label syntax is incorrect. One or more workflows were affected by this. Workflow name: Microsoft.SQLServer.2005.DBEngine.FullTextSearchServiceMonitor Instance name: MSSQLSERVER Instance ID: {625091EA-A1D9-1857-802C-0D908C93A5BB} Management group: jimmyh_mg1 &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_10.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_10.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/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_4.png" width=836 height=348 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To fix this, all we need to do is disable this monitor on any SQL Server that does not have the Full Text Search Service installed.&amp;nbsp; The easiest way to do this is to create a group for all of the SQL Instances that do not have the service installed.&amp;nbsp; The Full Text Search Service name is one of the discovered properties for the DB Engine class and will be blank if the service is not installed:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_4.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_1.png" width=708 height=321 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To create a group of SQL instances that do not have it installed, we can just use the criteria “Does not match regular expression . (dot)”, like this:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_6.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_2.png" width=588 height=701 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then, just set an “Enabled=False” override on the monitor, targeted at this group:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_8.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_8.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/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_3.png" width=702 height=500 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Repeat the same steps to create the group and override for SQL 2008 DB Engines.&lt;/P&gt;
&lt;P&gt;One more thing that you’ll want to do with this monitor is set the “Alert only if startup type is automatic” override to False for clustered SQL Instances…..since the service will always be in a Manual startup mode.&lt;/P&gt;
&lt;P&gt;To do this, I create a group of Cluster SQL Instances where Full Text Search Service IS Installed:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_12.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_12.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/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_5.png" width=580 height=699 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And target the override at this group:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_14.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_14.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/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_6.png" width=699 height=503 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/f32844acbbb8_1F9C/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Again, repeat for SQL 2008 DB Engines.&lt;/P&gt;
&lt;P&gt;Attached is a sample MP that contains the above groups and overrides for SQL 2005 DB Engines.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;UPDATED:&lt;/P&gt;
&lt;P&gt;I've removed the original attachment and attached a .zip file that contains these MPs for both SQL 2005 and SQL 2008.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3260651" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/jimmyharper/attachment/3260651.ashx" length="3857" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Monitor/default.aspx">Monitor</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Service/default.aspx">Service</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Service+Monitor+SQL+Cluster/default.aspx">Service Monitor SQL Cluster</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Management+Pack/default.aspx">Management Pack</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Full+Text+Search/default.aspx">Full Text Search</category></item><item><title>SQL Database Properties Not Discovered</title><link>http://blogs.technet.com/jimmyharper/archive/2009/06/11/sql-database-properties-not-discovered.aspx</link><pubDate>Thu, 11 Jun 2009 20:26:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3253623</guid><dc:creator>jimmyharper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jimmyharper/comments/3253623.aspx</comments><wfw:commentRss>http://blogs.technet.com/jimmyharper/commentrss.aspx?PostID=3253623</wfw:commentRss><description>&lt;P&gt;I ran into an issue recently where some SQL Databases were not showing any properties in OpsMgr, other than the database name:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_2.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/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/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb.png" width=470 height=340 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To get these properties, the database discovery script runs the “sp_helpdb” stored procedure against the database.&amp;nbsp; To test this, open SQL Server Managment Studio, connect to the SQL Instance in question, open a new query window and run “sp_helpdb &amp;lt;database name&amp;gt;”":&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_4.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb_1.png" width=1115 height=335 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;NOTE: You should run this under the same account that is used for the “SQL Server Discovery Account” RunAs Profile….if you haven’t defined an account for this profile, then use the Action Account.&lt;/P&gt;
&lt;P&gt;If this doesn’t return any results (as shown below), then the problem is likely due to permissions.&amp;nbsp; From the SQL MP guide, the requirements for DB discovery are:&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=295&gt;
&lt;P&gt;· EXEC permissions for (sp_helpdb)&lt;/P&gt;
&lt;P&gt;· Select from sys.databases table in the master database&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_8.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_8.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/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb_3.png" width=824 height=306 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLDatabasePropertiesNotDiscovered_ABB3/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Also, before running sp_helpdb, the discovery script will query to get a list of databases.&amp;nbsp; In SQL 2005/2008, the query is:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;SELECT name, state_desc FROM sys.databases WHERE source_database_id IS NULL&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;In SQL 2000, the query is:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;SELECT name FROM sysdatabases&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The difference is that in SQL 2005/2008, we have the “WHERE source_database_id IS NULL“ clause, which will eliminate snapshot databases…..so if the SQL instance has any snapshot databases, they will not be discovered.&amp;nbsp; We also select the “state” column from sys.databases in SQL 2005/2008 DB discovery, and if the state is not “ONLINE”, then the discovery ends there….so this would be another reason why the database properties do not show up in OpsMgr.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Attached to this blog are debug version of the database discovery script:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DiscoverSQL2005DB_debug.txt – Use this for SQL 2005/2008&lt;/P&gt;
&lt;P&gt;DiscoverSQL2000DB_debug.txt – Use this for SQL 2000&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;To run the script:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Rename to .vbs&lt;/LI&gt;
&lt;LI&gt;Run the following command: &lt;/LI&gt;&lt;/OL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;cscript DiscoverSQL2005DB_debug.vbs &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;&amp;lt;fqdn&amp;gt;&lt;/STRONG&gt; &lt;STRONG&gt;&amp;lt;Server\instance&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt; "exclude:"&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Replace the bold items with:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;&amp;lt;fqdn&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; = Full Qualified Domain Name of the SQL Server (server.domain.com)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;&amp;lt;Server\instance&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt; = SQL Server instance that we want to discover DBs on.&amp;nbsp; If it is the default instance, it will just be the server name (SERVER), otherwise it will be SERVER\INSTANCE&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Sample output from my server:&lt;/P&gt;
&lt;P&gt;Server name is jimmyhsql1.jimmyhdom.com&lt;/P&gt;
&lt;P&gt;SQL instance is OpsDB&lt;/P&gt;
&lt;P&gt;Command line is &lt;STRONG&gt;cscript discoversql2005db_debug.vbs jimmyhsql1.jimmyhdom.com jimmyhsql1\opsdb "exclude:"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Output (I only copied the output for the first couple DBs):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Entering DoDatabaseDiscovery function... &lt;BR&gt;Connection string is Server=jimmyhsql1\opsdb;Database=master;Trusted_Connection= &lt;BR&gt;yes &lt;BR&gt;Error number is 0 &lt;BR&gt;Querying for list of non-snapshot databases... &lt;BR&gt;Error number is 0 &lt;BR&gt;================================== &lt;BR&gt;DatabaseName: master &lt;BR&gt;DatabaseState ONLINE &lt;/P&gt;
&lt;P&gt;Runing sp_helpdb master &lt;BR&gt;ErrorNumber: 0 &lt;BR&gt;If no results are listed below, then sp_helpdb did not return anything....check &lt;BR&gt;permissions &lt;/P&gt;
&lt;P&gt;DatabaseSize: 4 &lt;BR&gt;DatabaseSizeNumeric: 4 &lt;BR&gt;LogSize: 0.5 &lt;BR&gt;LogSizeNumeric: 0 &lt;BR&gt;RecoveryModel: SIMPLE &lt;BR&gt;Updateability: READ_WRITE &lt;BR&gt;UserAccess: MULTI_USER &lt;BR&gt;Collation: SQL_Latin1_General_CP1_CI_AS &lt;BR&gt;DatabaseAutogrow: True &lt;BR&gt;LogAutogrow: True &lt;BR&gt;Owner: sa &lt;BR&gt;================================== &lt;/P&gt;
&lt;P&gt;================================== &lt;BR&gt;DatabaseName: tempdb &lt;BR&gt;DatabaseState ONLINE &lt;/P&gt;
&lt;P&gt;Runing sp_helpdb tempdb &lt;BR&gt;ErrorNumber: 0 &lt;BR&gt;If no results are listed below, then sp_helpdb did not return anything....check &lt;BR&gt;permissions &lt;/P&gt;
&lt;P&gt;DatabaseSize: 23.0625 &lt;BR&gt;DatabaseSizeNumeric: 23 &lt;BR&gt;LogSize: 1 &lt;BR&gt;LogSizeNumeric: 1 &lt;BR&gt;RecoveryModel: SIMPLE &lt;BR&gt;Updateability: READ_WRITE &lt;BR&gt;UserAccess: MULTI_USER &lt;BR&gt;Collation: SQL_Latin1_General_CP1_CI_AS &lt;BR&gt;DatabaseAutogrow: True &lt;BR&gt;LogAutogrow: True &lt;BR&gt;Owner: sa &lt;BR&gt;==================================&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3253623" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/jimmyharper/attachment/3253623.ashx" length="9129" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Discovery/default.aspx">Discovery</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/database/default.aspx">database</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/script/default.aspx">script</category></item><item><title>SQL Agent Job Discovery not working?</title><link>http://blogs.technet.com/jimmyharper/archive/2009/06/05/sql-agent-job-discovery-not-working.aspx</link><pubDate>Fri, 05 Jun 2009 05:36:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3250573</guid><dc:creator>jimmyharper</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.technet.com/jimmyharper/comments/3250573.aspx</comments><wfw:commentRss>http://blogs.technet.com/jimmyharper/commentrss.aspx?PostID=3250573</wfw:commentRss><description>&lt;P&gt;The SQL Server Management Pack includes an option to discover and monitor SQL Server Agent Jobs for SQL 2000/2005/2008.&amp;nbsp; The Discovery for this is disabled by default:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_2.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/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/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb.png" width=697 height=240 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I ran into an issue recently where all Agent Jobs for specific SQL Servers were not being discovered.&amp;nbsp; Examining the event logs on the SQL Server, we see the following in the OpsMgr Event Log:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;Log Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Operations Manager &lt;BR&gt;Source:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Health Service Modules &lt;BR&gt;Date:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/4/2009 8:36:19 PM &lt;BR&gt;Event ID:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21406 &lt;BR&gt;Task Category: None &lt;BR&gt;Level:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Warning &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; OMDW.opsmgr.net &lt;BR&gt;Description: &lt;BR&gt;The process started at 8:36:18 PM failed to create System.Discovery.Data. Errors found in output: &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 1\4595\SQLAgentJobDiscovery.vbs(106, 5) Microsoft VBScript runtime error: Type mismatch &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;Command executed:&amp;nbsp;&amp;nbsp;&amp;nbsp; "C:\Windows\system32\cscript.exe" /nologo "SQLAgentJobDiscovery.vbs" {974F57A5-5705-B6B2-B8DC-1CA0B433DCD4} {46913442-CAC1-7E38-89B4-1A6B462ED0D0} OMDW.opsmgr.net OMDW.opsmgr.net&amp;nbsp; OMDW\I01 I01 SQLAgent$I01" &lt;BR&gt;Working Directory:&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 1\4595\ &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;One or more workflows were affected by this.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;Workflow name: Microsoft.SQLServer.2008.AgentJobDiscoveryRule &lt;BR&gt;Instance name: SQLAgent$I01 &lt;BR&gt;Instance ID: {46913442-CAC1-7E38-89B4-1A6B462ED0D0} &lt;BR&gt;Management group: PROD1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The “Type mismatch” error typically means that some variable in the script is returning with an incorrect data type.&amp;nbsp; After examining the Discovery script and doing to troubleshooting, we determined that the problem was happening because the “Description” field for the Agent Job was NULL.&amp;nbsp; This can be confirmed by running the “sp_help_job” Stored Procedure against the MSDB database on the SQL Instance (which is exactly what the Discovery script does:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_4.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_1.png" width=913 height=307 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will also happen if any of the following properties of the job are NULL:&lt;/P&gt;
&lt;P&gt;job_id &lt;BR&gt;originating_server &lt;BR&gt;name &lt;BR&gt;description &lt;BR&gt;category &lt;BR&gt;owner &lt;/P&gt;
&lt;P&gt;We probably won't ever see this with the job_id, originating_server, category or name properties, but we've seen it with the description and owner properties.&lt;/P&gt;
&lt;P&gt;To correct this, we can simply enter some text in the description field of the Agent Job:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_6.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_2.png" width=945 height=658 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note that the problem described above (Agent Job discovery failing when properties are NULL) happens on SQL 2005 and 2008 Agent Jobs.&amp;nbsp; SQL 2000 Agent Job Discovery does not use the VBScript, and does seem to work in this scenario, but the NULL values are populated with the values of other Agent Jobs, so it is not accurate.&lt;/P&gt;
&lt;P&gt;So, what if you have a very large number of SQL Servers and Agent Jobs and do not want to worry about making sure that all of them have text in the Description field?&amp;nbsp; To take care of this, I created a “workaround” version of the SQL Agent Job Discoveries that will discover these jobs and enters NULL for the NULL propeerty.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Import the “Microsoft.SQLServer.200x.Discovery.CustomAgentJobDiscovery.xml” management pack &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Disable the original Agent Job Discovery and enable the new one (“SQL Server 200x Custom Agent Job Discovery”):&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_8.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_8.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/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_3.png" width=750 height=184 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Verify that the Agent Jobs are discovered:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_10.png" mce_href="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_10.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/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_4.png" width=663 height=376 mce_src="http://blogs.technet.com/blogfiles/jimmyharper/WindowsLiveWriter/SQLAgentJobDiscoverynotworking_13BF7/image_thumb_4.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3250573" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/jimmyharper/attachment/3250573.ashx" length="11913" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Discovery/default.aspx">Discovery</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Type+Mismatch/default.aspx">Type Mismatch</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Agent+Job/default.aspx">Agent Job</category><category domain="http://blogs.technet.com/jimmyharper/archive/tags/Management+Pack/default.aspx">Management Pack</category></item></channel></rss>