SPHealthReportsList.Local Property

Gets an SPHealthReportsList object that represents the SharePoint Health Analyzer Reports list for the farm.

Namespace:  Microsoft.SharePoint.Administration.Health
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Shared ReadOnly Property Local As SPHealthReportsList
    Get
'Usage
Dim value As SPHealthReportsList

value = SPHealthReportsList.Local
public static SPHealthReportsList Local { get; }

Property Value

Type: Microsoft.SharePoint.Administration.Health.SPHealthReportsList
An SPHealthReportsList object that represents the SharePoint Health Analyzer Reports list for the farm.

Exceptions

Exception Condition
InvalidOperationException

The local server is not joined to the farm.

Remarks

The SPHealthReportsList object returned by the Local property uses unmanaged resources. You are responsible for releasing those resources. One way to do that is to call the Dispose() method when you no longer need the SPHealthReportsList object.

Examples

The following example is a console application that queries the health reports list for information about health checks that have failed.

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration.Health;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPHealthReportsList reportsList = SPHealthReportsList.Local)
            {
                if (reportsList != null)
                {
                    // Write a query against the list.
                    SPQuery query = new SPQuery();
                    query.Query = string.Concat(
                                    "<GroupBy>",
                                        "<FieldRef Name=\"HealthReportCategory\" Ascending=\"FALSE\"/>",
                                    "</GroupBy>",
                                    "<OrderBy>",
                                        "<FieldRef Name=\"HealthReportSeverity\" />",
                                    "</OrderBy>",
                                    "<Where>",
                                        "<Neq>",
                                            "<FieldRef Name=\"HealthReportSeverity\" />",
                                            "<Value Type=\"Text\">4 - Success</Value>",
                                        "</Neq>",
                                    "</Where>"
                                    );
                   
                    // Retrieve list items that satisfy the query.
                    SPListItemCollection reports = reportsList.GetItems(query);

                    // Print information from each item.
                    string category = string.Empty;
                    foreach (SPListItem report in reports)
                    {
                        string thisCategory = report[SPBuiltInFieldId.HealthReportCategory].ToString();
                        if (thisCategory != category)
                        {
                            category = thisCategory;
                            Console.WriteLine("\nCategory: {0}", category);
                        } 
                        
                        string title = report[SPBuiltInFieldId.LinkTitleNoMenu].ToString();
                        string errorLevel = report[SPBuiltInFieldId.HealthReportSeverity].ToString();
                            
                        Console.WriteLine("\n- {0}", title);
                        Console.WriteLine("  Severity: {0}", errorLevel);

                        object failingServers = report[SPBuiltInFieldId.HealthReportServers];
                        object failingServices = report[SPBuiltInFieldId.HealthReportServices];

                        if (failingServers != null)
                            Console.WriteLine("  Failing servers: {0}", failingServers.ToString());
                        if (failingServices != null)
                            Console.WriteLine("  Failing services: {0}", failingServices.ToString());
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.Read();
        }
    }
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration.Health

Module Test

    Sub Main()

        Using reportsList As SPHealthReportsList = SPHealthReportsList.Local

            If Not reportsList Is Nothing Then

                ' Write a query against the list.
                Dim query As SPQuery = New SPQuery()
                query.Query = "<GroupBy>" + _
                                    "<FieldRef Name='HealthReportCategory' Ascending='FALSE'/>" + _
                                "</GroupBy>" + _
                                "<OrderBy>" + _
                                    "<FieldRef Name='HealthReportSeverity' />" + _
                                "</OrderBy>" + _
                                "<Where>" + _
                                    "<Neq>" + _
                                        "<FieldRef Name='HealthReportSeverity' />" + _
                                        "<Value Type='Text'>4 - Success</Value>" + _
                                    "</Neq>" + _
                                "</Where>"

                ' Retrieve list items that satisfy the query.
                Dim reports As SPListItemCollection = reportsList.GetItems(query)

                ' Print information from each item.
                Dim category As String = String.Empty
                Dim report As SPListItem
                For Each report In reports

                    Dim thisCategory As String = report(SPBuiltInFieldId.HealthReportCategory).ToString()
                    If thisCategory <> category Then
                        category = thisCategory
                        Console.WriteLine(vbCrLf + "Category: {0}", category)
                    End If

                    Dim title As String = report(SPBuiltInFieldId.LinkTitleNoMenu).ToString()
                    Dim errorLevel As String = report(SPBuiltInFieldId.HealthReportSeverity).ToString()

                    Console.WriteLine(vbCrLf + "- {0}", title)
                    Console.WriteLine("  Severity: {0}", errorLevel)

                    Dim failingServers As Object = report(SPBuiltInFieldId.HealthReportServers)
                    Dim failingServices As Object = report(SPBuiltInFieldId.HealthReportServices)

                    If Not failingServers Is Nothing Then
                        Console.WriteLine("  Failing servers: {0}", failingServers.ToString())
                    End If
                    If Not failingServices Is Nothing Then
                        Console.WriteLine("  Failing services: {0}", failingServices.ToString())
                    End If

                Next
            End If

        End Using
        Console.Write(vbCrLf + "Press ENTER to continue...")
        Console.Read()
    End Sub

End Module

See Also

Reference

SPHealthReportsList Class

SPHealthReportsList Members

Microsoft.SharePoint.Administration.Health Namespace