Tuesday, January 31, 2012

Step by step guide for the error ‘…too many arguments specified…’ for the report ‘Performance By Utilization’

Important to know
This posting is based on this article Kevin Holman posted. Based on the information provided in that article I wrote this step by step guide.

Issue
When one has imported the latest version of the Server OS MP (version 6.0.6958.0) with the additional Reports MP (Microsoft.Windows.Server.Reports.mp) one can bump into a nagging error when running the Report Performance By Utilization.
image

I ran the Report and all i got was: ‘An error has occurred during report processing. Query execution failed for dataset 'PerfDS'.’:
image

How to solve it
And this puzzled me since the related SQL Server is based on SQL Server 2008 R2 SP1. So no issues there. So it was time for some Bing actions (no more Google for me since Google has decided to wreck the search results with Google+ information…). And soon I found this posting written by Kevin Holman.

Item 4 in the Known Issues section of his posting told all I needed to know:
image

But first I needed to enable Remote Errors on the related SSRS instance in order to make sure I experience the issue described in the posting. How? Easy and also to be found here: http://technet.microsoft.com/en-us/library/aa337165.aspx.

  1. Start a RDP session with the SSRS server;
  2. Log on and start SQL Server Management Studio and logon to the SSRS instance (NOT the DB engine!);
  3. Right click on the SSRS instance, select Properties and go to Advanced and set EnableRemoteErrors item to True. No restart needed. Just click OK and close SQL Server Management Studio.
    image
  4. When you run the problematic report again, you’ll get more information about the CAUSE of the error and BINGO! Exact the same error as described: Procedure or function Microsoft_SystemCenter_Report_Performance_By_Utilization has too many arguments specified.
    image

OK, so now I know this issue matches exactly the one Kevin has described.  Now it’s time for some action in order to restore the functionality of this Report. In this case I have decided to run the procedure high lighted in purple since that one is straight forward and easy to do:
image

Let’s start:

  1. Download the MP for the server OS and unzip it by either installing it on your workstation or running the QWERTY.msi tool;
  2. Make sure the MP Authoring Console is installed on the same workstation, start this tool and open the file Microsoft.Windows.Server.Reports.mp;
  3. Go to Reporting > Data Warehouse Scripts;
  4. Select the Data Warehouse script Microsoft.Windows.Server.Reports.PerformancebyUtilization.Script and select in the left pane the option Properties;
    image
  5. Go to the Install tab and select the WHOLE SQL script and copy it:
    image
  6. Backup the Data Warehouse database before you run this SQL script!!!
    image
  7. Right click the Data Warehouse database (OperationsManagerDW) and select the option New Query;
    image
  8. Paste the query which you copied in Step 5:
    image
  9. Run the query. It will run fast:
    image
  10. Close SQL Server Management Studio. Go to the SCOM R2 Console and run the Report again. BINGO!
    image

So within a few minutes a nagging problem was solved! Nice one!

Fast Track
Here is the required SQL script which you must run against the Data Warehouse database when you have above mentioned issues. If not, contact CSS!

Now you can start from Step 6 :).

IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_Report_Performace_By_Utilization')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[Microsoft_SystemCenter_Report_Performace_By_Utilization] AS RETURN 1')
END
GO

ALTER PROCEDURE [dbo].[Microsoft_SystemCenter_Report_Performace_By_Utilization]
    @DataAggregation INT,
    @StartDate DATETIME,
    @EndDate DATETIME,
    @GroupManagedEntityID INT,
    @Top INT,
    @OrderType BIT,
    @ManagementGroupsCsv NVARCHAR(MAX),
    @PerfObjectCounterListXml XML,
    @MPListXml XML
AS
BEGIN

    SET NOCOUNT ON

    DECLARE @ExecError INT
    DECLARE @Error INT
    DECLARE @xmlDoc INT   
    -- build a list of all relationship
-- types derived from "System.Containment"
-- get row id of the "containment" relationship type
DECLARE @ContainmentRelationshipTypeRowId int

SELECT @ContainmentRelationshipTypeRowId = RelationshipTypeRowId
FROM vRelationshipType
WHERE (RelationshipTypeSystemName = 'System.Containment')

-- create table to hold all relationship types found
IF (OBJECT_ID('tempdb..#RelationshipType') IS NOT NULL)
  DROP TABLE #RelationshipType

CREATE TABLE #RelationshipType (
   RelationshipTypeRowId int
)

-- use table-valued function to build relationship list
INSERT #RelationshipType (RelationshipTypeRowId)
SELECT RelationshipTypeRowId
FROM dbo.RelationshipDerivedTypeHierarchy(@ContainmentRelationshipTypeRowId, 0)

-- *********************************************
-- *  STEP I: Get member computers
--
--     In this step we're going to figure out
--     which objects are currently members
--     of the group specified for report
-- *********************************************

-- create table to hold all contained objects
IF (OBJECT_ID('tempdb..#ContainedManagedEntity') IS NOT NULL)
  DROP TABLE #ContainedManagedEntity
CREATE TABLE #ContainedManagedEntity (
   ManagedEntityRowId    int
  ,[Level]                int
)

-- prepare recursion: put group into contained objects
INSERT #ContainedManagedEntity(ManagedEntityRowId, [Level])
  VALUES (@GroupManagedEntityID, 0)
DECLARE @CurrentLevel int
SET @CurrentLevel = 1

DECLARE @RowCount int
SET @RowCount = 1

-- recursively walk down containment hierarchy
WHILE (@RowCount > 0)
BEGIN
  INSERT #ContainedManagedEntity(ManagedEntityRowId, [Level])
  SELECT r.TargetManagedEntityRowId, @CurrentLevel
  FROM vRelationship r
          JOIN #RelationshipType rt ON (r.RelationshipTypeRowId = rt.RelationshipTypeRowId)
          JOIN #ContainedManagedEntity c ON (r.SourceManagedEntityRowId = c.ManagedEntityRowId) AND (c.[Level] = @CurrentLevel - 1)
  WHERE EXISTS (SELECT *
                FROM vRelationshipManagementGroup rmg
                WHERE (rmg.RelationshipRowId = r.RelationshipRowId)
                  AND (GETUTCDATE() BETWEEN rmg.FromDateTime AND ISNULL(rmg.ToDateTime, '99991231'))
               ) -- membership relationship exists as of NOW
  SELECT @RowCount = @@ROWCOUNT
  SET @CurrentLevel = @CurrentLevel + 1
END

    CREATE TABLE #PerfObjectCounters (
        PerfObject VARCHAR(MAX),
        PerfCounter VARCHAR(MAX),
        PerInstance BIT
        )

    SET @Error = @@ERROR
    IF @Error <> 0 GOTO QuitError

    CREATE TABLE #ManagementGroups(ManagementGroupGuid UNIQUEIDENTIFIER)
    SET @Error = @@ERROR
    IF @Error <> 0 GOTO QuitError

    EXEC @ExecError = sp_xml_preparedocument @xmlDoc OUTPUT, @PerfObjectCounterListXml
    SET @Error = @@ERROR
    IF @ExecError <> 0 OR @Error <> 0 GOTO QuitError

    INSERT INTO #PerfObjectCounters (PerfObject, PerfCounter, PerInstance)
    SELECT PerfObject, PerfCounter, PerInstance
    FROM OPENXML(@xmlDoc,'/Data/Objects/Object',2) WITH
        (PerfObject VARCHAR(MAX) '@Name',
         PerfCounter VARCHAR(MAX) '@Counter',
         PerInstance BIT '@PerInstance'
         )

    DECLARE @Pos        INT,
            @NextPos    INT,
            @ValueLen   INT,
            @MGList        NVARCHAR(MAX)

    SET @Pos = 0
    SET @NextPos = 1

    WHILE @NextPos > 0
        BEGIN
            SET @NextPos = CHARINDEX(',', @ManagementGroupsCsv, @Pos + 1)
            SET @ValueLen = (CASE WHEN @NextPos > 0
                                  THEN @NextPos
                                  ELSE LEN(@ManagementGroupsCsv) + 1
                             END) - @Pos - 1
            INSERT #ManagementGroups (ManagementGroupGuid)
             VALUES (CONVERT(UNIQUEIDENTIFIER, SUBSTRING(REPLACE(@ManagementGroupsCsv,' ',''), @Pos + 1, @ValueLen)))
            SET @Pos = @NextPos
        END

    IF @ExecError <> 0 GOTO QuitError
    CREATE TABLE #ManagementPacks (
    ManagementPackSysName VARCHAR(MAX),
    ManagementPackId INT
    )
    EXEC @ExecError = sp_xml_preparedocument @xmlDoc OUTPUT, @MPListXml
        SET @Error = @@ERROR
        IF @ExecError <> 0 OR @Error <> 0 GOTO QuitError

    INSERT INTO #ManagementPacks(ManagementPackSysName, ManagementPackId)
        SELECT ManagementPackSysName, MP.ManagementPackRowId
        FROM OPENXML(@xmlDoc,'/ManagementPacks/ManagementPack',2) WITH
            (ManagementPackSysName VARCHAR(MAX) '@Name')
        INNER JOIN
            ManagementPack MP ON MP.ManagementPackSystemName = ManagementPackSysName

IF @DataAggregation = 1

    WITH ComputerId AS
    (
        SELECT
            MgEntity.ManagedEntityRowId,
            MgEntity.Name
        FROM
            vManagedEntity MgEntity
        INNER JOIN
            vManagedEntityType MgEntityType ON MgEntity.ManagedEntityTypeRowId = MgEntityType.ManagedEntityTypeRowId
            JOIN #ContainedManagedEntity cme ON MgEntity.ManagedEntityRowId = cme.ManagedEntityRowId
        WHERE
            MgEntityType.ManagedEntityTypeSystemName = 'Microsoft.Windows.Computer'
    ),
    PerfTable AS
    (
    SELECT
        MgEntity.[Path] ComputerName,
        SUM(PerfData.SampleCount * PerfData.AverageValue)/(SUM(SUM(PerfData.SampleCount)) OVER(PARTITION BY MgEntity.ManagedEntityRowId, PerfRule.ObjectName, PerfRule.CounterName)) AverageValue,
        PerfRule.ObjectName ObjectName,
        PerfRule.CounterName CounterName,
        PerfRuleInst.InstanceName InstanceName,
        MAX(CAST(#PerfObjectCounters.PerInstance AS INT)) PerInstance,
        ComputerId.ManagedEntityRowId ManagedEntityRowId,
        MAX(PerfRule.RuleRowId) RuleId,
        (SUM(SUM(PerfData.SampleCount)) OVER(PARTITION BY MgEntity.ManagedEntityRowId, PerfRule.ObjectName, PerfRule.CounterName)) RuleSampleCount
    FROM    
        [Perf].vPerfDaily PerfData
        INNER JOIN
            [dbo].vManagedEntity MgEntity ON PerfData.ManagedEntityRowId = 
            MgEntity.ManagedEntityRowId
        INNER JOIN
            [dbo].vManagedEntityType MgEntityType ON MgEntity.ManagedEntityTypeRowId =
            MgEntityType.ManagedEntityTypeRowId
        INNER JOIN
            [dbo].vPerformanceRuleInstance PerfRuleInst ON  
            PerfRuleInst.PerformanceRuleInstanceRowId = 
            PerfData.PerformanceRuleInstanceRowId
        INNER JOIN
            [dbo].vPerformanceRule PerfRule ON PerfRuleInst.RuleRowId =   
            PerfRule.RuleRowId
        INNER JOIN
            [dbo].vManagementGroup MG ON MgEntity.ManagementGroupRowId = MG.ManagementGroupRowId
        INNER JOIN
            #ManagementGroups ON MG.ManagementGroupGuid = #ManagementGroups.ManagementGroupGuid
        INNER JOIN
            #PerfObjectCounters ON PerfRule.ObjectName = PerfObject AND PerfRule.CounterName = PerfCounter
        INNER JOIN
            #ManagementPacks ON MgEntityType.ManagementPackRowId = #ManagementPacks.ManagementPackId
        RIGHT JOIN
            ComputerId ON ComputerId.Name = MgEntity.Path
    WHERE    
          (
            CONVERT(DATETIME, CONVERT(VARCHAR, PerfData.[DateTime], 101))
            BETWEEN
                CONVERT(DATETIME, CONVERT(VARCHAR, @StartDate, 101))
            AND
                CONVERT(DATETIME, CONVERT(VARCHAR, @EndDate, 101))
          )
         AND
          (
            MgEntity.[Path] IS NOT NULL
          )
    GROUP BY
        MgEntity.ManagedEntityRowId, MgEntity.[Path], PerfRule.ObjectName, PerfRule.CounterName, PerfRuleInst.InstanceName, MgEntityType.ManagedEntityTypeSystemName, ComputerId.ManagedEntityRowId
    ),
    InstanceFilteredTable AS
    (
    SELECT
        ComputerName,
        SUM(AverageValue*RuleSampleCount)/ SUM(SUM(RuleSampleCount)) OVER(PARTITION BY ComputerName,ObjectName,CounterName,InstanceName,ManagedEntityRowId)  AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        PerInstance,
        CASE WHEN (@OrderType = 1) THEN
            (CASE WHEN ((PerInstance = 1) AND (AVG(AverageValue) = MAX(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName <> '% Free Space'))
                    OR (PerInstance = 0)
                    OR ((PerInstance = 1) AND (AVG(AverageValue) = MIN(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName = '% Free Space'))
                THEN 1 ELSE 0 END)
        ELSE
            (CASE WHEN ((PerInstance = 1) AND (AVG(AverageValue) = MIN(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName <> '% Free Space'))
                    OR (PerInstance = 0)
                    OR ((PerInstance = 1) AND (AVG(AverageValue) = MAX(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName = '% Free Space'))
                THEN 1 ELSE 0 END)
        END MaxFlag,
        ManagedEntityRowId
    FROM
        PerfTable
    GROUP BY
        ComputerName,
        ObjectName,
        CounterName,
        InstanceName,
        PerInstance,
        ManagedEntityRowId
    ),
    InstanceRankedTable AS
    (
        SELECT
            ComputerName,
            AverageValue,
            ObjectName,
            CounterName,
            InstanceName,
            PerInstance,
            ManagedEntityRowId,
            ROW_NUMBER() OVER(PARTITION BY ComputerName,ObjectName,CounterName ORDER BY MaxFlag DESC) MaxFlag
        FROM
            InstanceFilteredTable
    ),
    OrderedPerfTable AS
    (
    SELECT
        CASE WHEN (@OrderType = 1)THEN
            CASE WHEN (CounterName <> '% Free Space')
            THEN (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue DESC))
            ELSE (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue ASC)) END
        ELSE
            CASE WHEN (CounterName <> '% Free Space')
            THEN (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue ASC))
            ELSE (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue DESC))END 
        END OrderNum,
        ComputerName,
        AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        ManagedEntityRowId
    FROM
        InstanceRankedTable
    WHERE
        MaxFlag = 1
    )
    SELECT
        OrderNum,
        ComputerName,
        AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        ManagedEntityRowId
    FROM
        OrderedPerfTable
    WHERE
        OrderNum <= @Top

ELSE
    WITH ComputerId AS
    (
        SELECT
            MgEntity.ManagedEntityRowId,
            MgEntity.Name
        FROM
            vManagedEntity MgEntity
        INNER JOIN
            vManagedEntityType MgEntityType ON MgEntity.ManagedEntityTypeRowId = MgEntityType.ManagedEntityTypeRowId
            JOIN #ContainedManagedEntity cme ON MgEntity.ManagedEntityRowId = cme.ManagedEntityRowId
        WHERE
            MgEntityType.ManagedEntityTypeSystemName = 'Microsoft.Windows.Computer'
    ),
    PerfTable AS
    (
    SELECT
        MgEntity.[Path] ComputerName,
        SUM(PerfData.SampleCount * PerfData.AverageValue)/(SUM(SUM(PerfData.SampleCount)) OVER(PARTITION BY MgEntity.ManagedEntityRowId, PerfRule.ObjectName, PerfRule.CounterName)) AverageValue,
        PerfRule.ObjectName ObjectName,
        PerfRule.CounterName CounterName,
        PerfRuleInst.InstanceName InstanceName,
        MAX(CAST(#PerfObjectCounters.PerInstance AS INT)) PerInstance,
        ComputerId.ManagedEntityRowId ManagedEntityRowId,
        MAX(PerfRule.RuleRowId) RuleId,
        (SUM(SUM(PerfData.SampleCount)) OVER(PARTITION BY MgEntity.ManagedEntityRowId, PerfRule.ObjectName, PerfRule.CounterName)) RuleSampleCount
    FROM    
        [Perf].vPerfHourly PerfData
        INNER JOIN
            [dbo].vManagedEntity MgEntity ON PerfData.ManagedEntityRowId = 
            MgEntity.ManagedEntityRowId
        INNER JOIN
            [dbo].vManagedEntityType MgEntityType ON MgEntity.ManagedEntityTypeRowId =
            MgEntityType.ManagedEntityTypeRowId
        INNER JOIN
            [dbo].vPerformanceRuleInstance PerfRuleInst ON  
            PerfRuleInst.PerformanceRuleInstanceRowId = 
            PerfData.PerformanceRuleInstanceRowId
        INNER JOIN
            [dbo].vPerformanceRule PerfRule ON PerfRuleInst.RuleRowId =   
            PerfRule.RuleRowId
        INNER JOIN
            [dbo].vManagementGroup MG ON MgEntity.ManagementGroupRowId = MG.ManagementGroupRowId
        INNER JOIN
            #ManagementGroups ON MG.ManagementGroupGuid = #ManagementGroups.ManagementGroupGuid
        INNER JOIN
            #PerfObjectCounters ON PerfRule.ObjectName = PerfObject AND PerfRule.CounterName = PerfCounter
        INNER JOIN
            #ManagementPacks ON MgEntityType.ManagementPackRowId = #ManagementPacks.ManagementPackId
        RIGHT JOIN
            ComputerId ON ComputerId.Name = MgEntity.Path
    WHERE    
          (
            CONVERT(DATETIME, CONVERT(VARCHAR, PerfData.[DateTime], 101))
            BETWEEN
                CONVERT(DATETIME, CONVERT(VARCHAR, @StartDate, 101))
            AND
                CONVERT(DATETIME, CONVERT(VARCHAR, @EndDate, 101))
          )
         AND
          (
            MgEntity.[Path] IS NOT NULL
          )
    GROUP BY
        MgEntity.ManagedEntityRowId, MgEntity.[Path], PerfRule.ObjectName, PerfRule.CounterName, PerfRuleInst.InstanceName, MgEntityType.ManagedEntityTypeSystemName, ComputerId.ManagedEntityRowId
    ),
    InstanceFilteredTable AS
    (
    SELECT
        ComputerName,
        SUM(AverageValue*RuleSampleCount)/ SUM(SUM(RuleSampleCount)) OVER(PARTITION BY ComputerName,ObjectName,CounterName,InstanceName,ManagedEntityRowId)  AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        PerInstance,
        CASE WHEN (@OrderType = 1) THEN
            (CASE WHEN ((PerInstance = 1) AND (AVG(AverageValue) = MAX(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName <> '% Free Space'))
                    OR (PerInstance = 0)
                    OR ((PerInstance = 1) AND (AVG(AverageValue) = MIN(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName = '% Free Space'))
                THEN 1 ELSE 0 END)
        ELSE
            (CASE WHEN ((PerInstance = 1) AND (AVG(AverageValue) = MIN(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName <> '% Free Space'))
                    OR (PerInstance = 0)
                    OR ((PerInstance = 1) AND (AVG(AverageValue) = MAX(AVG(AverageValue)) OVER(PARTITION BY ComputerName,ObjectName,CounterName)) AND (CounterName = '% Free Space'))
                THEN 1 ELSE 0 END)
        END MaxFlag,
        ManagedEntityRowId
    FROM
        PerfTable
    GROUP BY
        ComputerName,
        ObjectName,
        CounterName,
        InstanceName,
        PerInstance,
        ManagedEntityRowId
    ),
    InstanceRankedTable AS
    (
        SELECT
            ComputerName,
            AverageValue,
            ObjectName,
            CounterName,
            InstanceName,
            PerInstance,
            ManagedEntityRowId,
            ROW_NUMBER() OVER(PARTITION BY ComputerName,ObjectName,CounterName ORDER BY MaxFlag DESC) MaxFlag
        FROM
            InstanceFilteredTable
    ),
    OrderedPerfTable AS
    (
    SELECT
        CASE WHEN (@OrderType = 1)THEN
            CASE WHEN (CounterName <> '% Free Space')
            THEN (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue DESC))
            ELSE (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue ASC)) END
        ELSE
            CASE WHEN (CounterName <> '% Free Space')
            THEN (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue ASC))
            ELSE (ROW_NUMBER() OVER(PARTITION BY ObjectName, CounterName ORDER BY AverageValue DESC))END 
        END OrderNum,
        ComputerName,
        AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        ManagedEntityRowId
    FROM
        InstanceRankedTable
    WHERE
        MaxFlag = 1
    )
    SELECT
        OrderNum,
        ComputerName,
        AverageValue,
        ObjectName,
        CounterName,
        InstanceName,
        ManagedEntityRowId
    FROM
        OrderedPerfTable
    WHERE
        OrderNum <= @Top

    QuitError:
    DROP TABLE #PerfObjectCounters
    DROP TABLE #ManagementGroups
    DROP TABLE #ManagementPacks
    IF (@xmlDoc IS NOT NULL)
    EXEC sp_xml_removedocument @xmlDoc
    SET @xmlDoc = NULL

    RETURN @Error

END

GO

GRANT EXECUTE ON dbo.[Microsoft_SystemCenter_Report_Performace_By_Utilization] TO OpsMgrReader
GO

Friday, January 27, 2012

MMS 2012, Session Declined & The Avengers?

Cameron Fuller has posted an excellent posting about declined sessions for MMS 2012.

It isn’t meant as an uproar but more to see whether some of these declined sessions can gain some momentum and enough weight so one or more of these declined sessions is accepted none the less. Wouldn’t that be awesome?

However, in order for this to work, we need YOU! So please leave a comment on his blog so we know what sessions are appreciated by YOU.

Want to know more? Go here: http://blogs.catapultsystems.com/cfuller/archive/2012/01/27/mms-2012-session-declined-amp-the-avengers.aspx

System Center Advisor (SCA) is released

For some time now Microsoft has tested a new cloud product based on Windows Azure which went by the code name Atlanta. In Q1 of 2011 it got it’s official name, System Center Advisor (SCA). After rigorous testing for a long time and many new versions, yesterday SCA is officially launched by Microsoft and became General Available (GA) in 26 countries right away.

Even though SCA uses some of the core components of SCOM (Agents, Gateways and customized Management Packs) it does NOT offer real time monitoring. Instead, it offers advices based on Best Practices and experiences from Microsoft CSS. So SCA can be looked upon as a stand alone complimentary service alongside SCOM.
image

When you have Software Assurance (SA) in place for SQL Server and/or Windows Server. you get the service for FREE! Last but not least, you can sign up for a 60 day free trial as well.

Also good to know, installing SCA is a walk in the park. Almost a Next > Next > Finish experience. No need for deep and detailed knowledge about installing SCA. It’s a walk in the park :).

Some useful Microsoft links about SCA:

  1. SCA Demo: http://www.microsoft.com/en-us/showcase/details.aspx?uuid=32e32209-71c4-43d2-b2ae-015598bf5b7d
  2. SCA blog posting by Microsoft: http://blogs.technet.com/b/server-cloud/archive/2012/01/26/system-center-advisor-released.aspx
  3. SCA website: https://systemcenteradvisor.com/

Some useful community links about SCA:

  1. SCA, how does it work (credits go to Stefan Stranger): http://thoughtsonopsmgr.blogspot.com/2011/03/scom-in-sky.html
  2. SCOM, using the SCA MPs: http://scug.be/blogs/scom/archive/2011/05/02/using-system-center-advisor-management-packs-in-opsmgr.aspx

Monday, January 23, 2012

Authoring custom APM Rules for granular Alerting

Daniele Muscetta has posted an excellent article about writing new APM Rules with an added expression filter. Even though I am not really a MP Author, this posting is easy to understand and to recreate. Awesome!

Thanks Daniele for sharing. Posting to be found here.

SCVMM 2012 and SCOM/OM12 – Potential integration issues

The System Center Operations Manager Support Team has posted an article describing potential integration issues with SCOM / OM12 and System Center 2012 – Virtual Machine Manager (SCVMM 2012).

Per issue, the cause and the recommended action(s) are described. Want to know more? Go here.

Updated KB: How to fight Config Churn

What is it?
Config Churn is for SCOM similar to us processing old news – like the news of some days ago - and never getting into a state where we get to the point to process the latest news from BBC/CNN/Fox News, just because we can’t keep up with all the changes happening around us. Like an overload and never ever reaching a status quo.

For SCOM this situation is just as bad since it never gets into a state where it knows the current status of all monitored servers. The monitored servers themselves are way behind in processing their configuration as well, which may result in running old configurations (Rules/Monitors/Discoveries/Workflows and the lot). All this can lead to the SCOM Management Servers becoming stale, which is noticed by these servers turning gray in the Console. Ouch!

How to fight it?
Since every Management Group differs in size, dimensions (the amount of secondary Management Servers, Gateway servers), imported and tuned MPs (are there any home brewed among them?) it’s hard to tell exactly when Config Churn will take place. Changes are however, at a certain moment in time there will be Config Churn to some degree.

This is also the reason why there aren’t any Monitors/Rules in place which will tell you when Config Churn is taking place. Simply because it can manifest itself in many different ways. Yes, there are certain EventIDs in the OpsMgr event log which point into that direction. True. But per Management Group it really differs.

Therefore it’s important to keep track of the OpsMgr event log of the RMS on a regular basis in order to see all is well. This doesn’t have to take much of your time, ten minutes at the most. Just run the event log once a week and be done with it.

Is there a KB article for it?
But how to recognize Config Churn? And how to fight it? And how to identify the culprits? There are multiple good resources to be found on the internet but on different places. Gladly KB2603913 solves this issue and has grouped them all together. It tells you what Config Churn is, how to recognize it, who the usual suspects are, how to identify them, and what to do about it.

So go check it out this KB article since it’s really a good one with lots of good and solid information.

Friday, January 20, 2012

Please: Don’t use strange characters in the names of Customized Reports…

Bumped into this situation where some Linked Reports had to be exported to another SSRS instance. Huh? That can’t be done? Yes you can!

However, now it didn’t work at all. I just got strange errors referring to non-existing Reports and the lot. It puzzled me for a while and then I found it: the Linked Reports had percentage characters (%) in their names. And batch files (used here for importing the exported Linked Reports) use % signs for defining parameters…

Ouch!

After having renamed those Reports in SSRS and running a new export, the new import run just fine….

Conclusion:
Whenever you export (Linked) Reports using this tool, make sure those Reports don’t have strange characters in their names. Otherwise you bump into the same situation as I did…

New Tools > New Skills > New Certifications > Same Trade

I know that many of us may get tired of the effort keeping up with all the developments. However, as I see it, it’s part of our trade. When one doesn’t learn anymore in the ICT it means no growth. No growth means – sooner or later – no job. Which isn’t fun at all. Also because the younger generation is coming and fast. So in order to differentiate, every single person taking his/her job and responsibilities seriously, should learn new skills and in order to show one masters those new skills, get certified as well. That way one doesn’t become just another ICT employer but gets some name and fame as well.

I know the days where even people delivering pizza’s (don’t get me wrong here, I have nothing against people delivering pizza’s) could easily become MCSE for Windows NT 4 without ever having touched any Windows NT4 server…. We named it certification deflation. Gladly those days are over and nowadays Microsoft Certification really means something. Of course, other skills are required as well. But when one works on it and keep his/her certification in good shape, the more changes one has to get that job one really likes and aims at.

With the launch of the System Center 2012 campaign Microsoft covers every single angle of it. Not only marketing, but also training AND last but not least, CERTIFICATION:
image

And:
image

All you want (and IMO NEED) to know, is to be found here.The sooner you familiarize yourself with it the better since a lot is going to change.

Thursday, January 19, 2012

System Center 2012 Training Buffet now open! All YOU can LEARN for FREE!

Wow! Before the 17th of January it was hard to find good training materials / sessions about the System Center 2012 Suite for FREE on the internet. A lot has changed after that date, the marketing machine of Microsoft is gaining momentum and putting out really good stuff.

Yes, the sessions, trainings, meetings and virtual class rooms will contain marketing messages. But besides that much good solid information about the products themselves will be shared as well. One will have the opportunity to learn a whole deal about the new products before they go RTM.

I am around in IT a long while already but never before I have seen such a huge offering of high quality trainings, meetings, virtual class rooms and the lot. Therefore I have branded it ‘The System Center 2012 Training Buffet’. All you can LEARN and everything for FREE! Awesome!
image

In order to group all the posts containing offerings of the ‘The System Center 2012 Training Buffet’ I have tagged them with the label TRAINING. Click this link or the TRAINING item in the Tag Cloud and all postings containing referrals to the learning material will be shown.

The latest offering right out the SC 2012 kitchen of Microsoft is this one: TechNet Webcast: From Virtualization to Private Cloud with System Center Virtual Machine Manager 2012 (Level 200).

Want to know more? Go here.

Wednesday, January 18, 2012

Jump Start class: Creating and managing a private cloud with System Center 2012

Wow! The free trainings for the new System Center products are really hitting the streets these days! Awesome!

Now you can follow a Jump Start class: Creating and managing a private cloud with System Center 2012.  

Taken directly from the website:

Why is this Jump Start a good time investment? Who should attend?
This accelerated Jump Start is tailored for IT professionals familiar with Windows Server technologies, Hyper-V virtualization, and the System Center management solutions. The course is designed to provide a fast-paced and technical understanding of how and why Microsoft’s approach to the private cloud delivers scalability, security, flexibility and control. Here are few unique benefits of this course:

  • Students have the opportunity to learn from and interact with the industry’s best cloud technologists! Check out the instructor bios below.
  • This high-energy, demo-rich learning experience will help IT Professionals understand why Microsoft private cloud solutions are making a splash in the industry.
  • Students will see with their own eyes how Windows Server 2008 R2 and System Center 2012 work together to provide the best combination of security and scale.
  • Information-packed agenda! Day one of this two-day online course will focus on designing and deploying the right solutions for your organization, while day two will provide an in-depth look at the tools available to help monitor, secure and control the operational aspects of a private cloud.

And:
image

When this training will be given: February 21-22, 2012 from 9:00am – 5:00pm PST.

Want to know more? Go here.

Learning Opalis/Orchestrator in no time and for FREE

System Center Central has posted an excellent article all about learning Opalis/Orchestrator in no time and for free.
image

Posting to be found here.

Thanks to Pete Zerger for sharing!

MVA - Configuring and deploying Microsoft's Private Cloud

Microsoft Virtual Academy (MVA) has released a new track, all about Private Cloud Specialization.
image

Taken directly from the website: ‘…After completing this private cloud specialization, you will have an understanding of Microsoft’s vision for cloud computing, from the business perspective to the technical level…’.

For any one involved with the current set of System Center products I strongly advice to follow this track. Simply because it will enable you not only to understand the new line of System Center 2012 products but also to know the philosophy behind it all, which is just as important.

So go here, sign up and follow this track. Good to know: it’s FREE. It costs some of your time but it well enable you to understand the future of the SC products as a whole.

Modifying SCOM R2 Agent on W2K08 throws error: ‘Microsoft ESENT keys are required to install this application.’

When one runs a W2K08 server with the SCOM R2 Agent installed and want to modify that SCOM R2 Agent, like making it multi-homed, this error might be thrown:
image

And:
image

UAC (User Account Control) is the culprit here. Which is simply solved by running the specific msi command from an elevated cmd-prompt. For SCOM R2 based Agents:
image

Microsoft has also released a KB article about it, KB969569 which tells you what msi command to use for the SCOM and SCOM R2 Agents.

TechNet Virtual Lab: OM12 Infrastructure and Application Performance Monitoring

When you want to get some hands-on experience with infrastructure and application performance monitoring  with OM12, this TechNet Virtual Lab is the one you’re looking for:
image

Go here and register yourself.

System Center 2012 Suite Licensing Datasheet and FAQ

Everything you want to know about the System Center Suite Licensing is to be found in these two PDF files:
  1. Datasheet
  2. FAQ

01-18-2012 Update: Aidin Finn has written a comprehensive posting about the new licensing model for System Center, to be found here.

Tuesday, January 17, 2012

System Center 2012 Release Candidate plus optional Windows Server 2008 R2 SP1 download AVAILABLE!!!

Just some minutes ago Microsoft launched ALL System Center 2012 products in their RC (Release Candidate) status! All these products are FREE for trial download.

Also an additional tool is available enabling an easy installation experience for ALL SC 2012 products: System Center 2012 Unified Installer. As the same website states: ‘…is a utility designed to perform new, clean installations of System Center 2012 for testing and evaluation purposes only…’.

A new System Center product is System Center 2012 App Controller. As the same website states: ‘…provides a common self-service experience across private and public clouds that can help you empower application owners to easily build, configure, deploy, and manage new services…’.

On top of it all, Windows Server 2008 R2 SP1 is available for download as well from the same website.

All this software is presented as Microsoft Private Cloud Evaluation Software. As the same website states: ‘…Microsoft private cloud solutions are built on System Center and Windows Server…’.

image

All I can say: download, install it and be surprised!

Addendum MP for the Active Directory MP, version 6.0.7670.0

Jimmy Harper, a PFE for SCOM has posted on his blog an addendum for the AD MP, version 6.0.7670.0.

As it turns out this version of the AD MP has some broken Rules, that alert on events in the System and Application Event Log on Windows Server 2008 Domain Controllers, and some Rules that alert on events in the Application log on Windows Server 2003 Domain Controllers.

The team responsible for the AD MP are aware of this issue and will fix it in the next version of the AD MP. For now, when you’re running version 6.0.7670.0 of the AD MP you’ll need the addendum as well which can be downloaded from the blog of Jimmy Harper, to be found here.

When you’re running any older version of the AD MP you’ll need ALSO an other addendum, to be found here. Basically meaning you have to install TWO addendums.

Perhaps time to update the MP itself to version 6.0.7670.0 thus requiring only one addendum? Glimlach

Monday, January 16, 2012

OM12 APM (Application Monitoring) – Some very useful posts

With OM12 the AVIcode product is integrated and rebranded as APM (Application Monitoring), enabling OM12 to monitor .NET products. Not just on its surface but deep down in to the nitty gritty details, enabling OM12 operators with ‘a few mouse clicks’ to cover a .NET application completely, without having them to know anything about .NET programming.

On top of it all, the Alerts which are generated by APM are really detailed, delivering experienced .NET developers the information they need to get their job done. Besides these Alerts two new Consoles are added as well, tailored to detailed APM monitoring, tracking and reporting.

(Picture taken from http://blogs.technet.com/b/momteam/archive/2011/07/30/operations-manager-and-application-monitoring.aspx.)

Since AVIcode is a product with so many capabilities, possibilities and therefore items to configure, one could easily say that OM12 is actually two products in one: the successor of SCOM R2 and the successor of AVIcode. On one hand it’s good, since one gets even more bang for the buck, on the other hand it looks like a challenge as well since one has to learn how to run two products instead of one.

However, Microsoft has gone to great lengths not only to integrate these two products but also to lower the learning curve. And they have succeeded very well in it. None the less, for anyone without any experience with AVIcode (like me, I knew about the product but also its price which was really staggering) the APM component of OM12 is something new which requires some new skills. This posting refers to some valuable resources found on the internet all about APM, what it does, how it works and out of what components it’s made off.

Read these postings since they really help you understanding APM quickly, thus enabling one to get the most out of APM.

  1. Configuring APM – Basic overview and guide
    http://blogs.technet.com/b/server-cloud/archive/2011/11/11/application-performance-monitoring-with-operations-manager-2012.aspx

  2. AVIcode vs. APM – High level overview
    http://blogs.msdn.com/b/sergkanz/archive/2011/09/13/cut-the-monitoring-price-application-monitoring-investments.aspx

  3. APM Architecture in OM12 Beta
    http://blogs.technet.com/b/momteam/archive/2011/08/12/application-performance-monitoring-in-opsmgr-2012-beta.aspx
  4. How to use APM in OM12
    http://blogs.technet.com/b/momteam/archive/2011/07/30/operations-manager-and-application-monitoring.aspx

  5. Working with Alerts in APM
    http://blogs.technet.com/b/momteam/archive/2011/08/23/application-monitoring-working-with-alerts.aspx

  6. APM Object Model
    http://blogs.technet.com/b/momteam/archive/2012/01/14/apm-object-model.aspx

  7. Microsoft TechNet – Monitoring .NET applications
    http://technet.microsoft.com/en-us/library/hh212856.aspx

  8. Quick look – APM in OM12
    http://www.viacode.com/blog/blog/2011/12/15/.net-avicode-apm-monitoring-in-scom-2012-rc-quick-look

  9. KB: Steps to import the AVIcode 5.7 templates after upgrading to OM12
    http://support.microsoft.com/kb/2606375

  10. Series of blog postings all about installing APM
    http://www.systemcentersolutions.com/2011/08/installing-avicode-apm-monitoring/

  11. Troubleshooting: Why aren’t my web applications discovered? 
    http://www.systemcentersolutions.com/2011/08/apm-avicode-why-arent-my-web-applications-discovered/

Thursday, January 12, 2012

OM12: What does the RMSE (Root Management Server Emulator) do?

The last few days an intense and very interesting discussion has been going on with the product teams of OM12 and the SCOM MVPs. It all started with this question my fellow (and much respected) MVP Cameron Fuller asked: What does the RSME (Root Management Server Emulator) actually do?

Soon a whole new mail thread came to be where many of us shared their thoughts, insights and (mis)understandings. Gladly the product team of OM12 explained the whole matter, with the backup of some SCOM MVPs who also knew exactly what the RMSE does and doesn’t do.

Cameron Fuller collected all the information, double checked it, rewrote some parts of it and checked the end result with the whole team. When they gave their green light on it, Cameron posted it on his blog.

So for every one who wants to know what the RSME does and doesn’t do, this posting tells you all there is to know.

And this is why I love being an MVP: You have direct contact with the product teams AND the other MVPs who really know so much. No matter how complicated something might seem, there is always somebody with an answer!

Thank you!

Wednesday, January 11, 2012

Management Pack Quality Survey: The Results – Part I: Answers to Questions 2 & 3

----------------------------------------------------------------------------------
Postings in the same series:
The Survey
Part  I – Answers to Question 1
----------------------------------------------------------------------------------

As stated before in total 28 people responded to this survey. Some MPs weren’t used by many of them so I skipped those answers since the foundation would be too small to say anything ‘solid’. As a rule of thumb I only looked at the MPs which were used by 13 people or more. This gave me 20 MPs in total:

  1. SharePoint 2007
  2. SharePoint 2010
  3. Exchange 2007
  4. Exchange 2010
  5. OCS
  6. Forefront TMG
  7. ISA 2004/2006
  8. SCCM
  9. Windows Server Operating System
  10. File Services 2008 R2
  11. Terminal Services
  12. Remote Desktop Services
  13. Hyper-V
  14. SQL
  15. IIS
  16. AD
  17. DNS
  18. DHCP
  19. WINS
  20. Print Server

In this posting I will share the answers given to these two questions:

  1. What do you think of the quality of the guides that are delivered with these Management Packs?
  2. How long did it take to tune these Management Packs?

Let’s start.

Q01: What do you think of the quality of the guides that are delivered with these Management Packs?

Bad rated MP guides
In total three MP guides got the rating bad (outdated, no updates etc):

  1. DHCP
  2. WINS
  3. Print Server

Poor rated MP Guides
In total eight MP guides got the rating poor (not enough information, still some guessing/searching on the internet required etc):

  1. SharePoint 2007
  2. SharePoint 2010
  3. Exchange 2010
  4. OCS
  5. Forefront TMG
  6. ISA 2004/2006
  7. SCCM
  8. Terminal Services

Good rated MP Guides
In total nine MP guides got the rating good (all the information required is provided):

  1. Exchange 2007
  2. Windows Server Operating System
  3. File Services 2008 R2
  4. Remote Desktop Services
  5. Hyper-V
  6. SQL
  7. IIS
  8. AD
  9. DNS

Conclusion
It’s not surprising to see that the MPs which are rated bad (see the first posting) also have issues with the related MP guides. Since the overall quality of a MP is judged upon all of its facets among which the related MP guide is a component to be taken seriously. The eight MP Guides rated poor are way too many. Some of these MPs aren’t properly updated thus contain old information are – even worse – contain contradicting information. Other guides are missing information. The guides which are rated good are nine in total. Which is good but not good enough since eleven other guides aren’t up to specs. So there is still some work to do for the people responsible for the related MP guides.

The raw results for this question can be found here.

Q02: How long did it take to tune these Management Packs?

Hard to tune and is an ongoing process
In total two MPs got this rating:

  1. Exchange 2010;
  2. SCCM (when this survey was launched the new SCCM MP was just life. So the new version of the MP should get a better rating since the most problematic issues with this MP have been addressed in the latest version of this MP).

Some weeks to tune
Four MPs got this rating:

  1. OCS
  2. File Services 2008 R2
  3. AD
  4. DNS

On itself it’s a logical thing since these four MPs cover the more complicated infrastructural/communication services. Therefore it takes some weeks to tweak and tune the related MPs as well.

One week or less to tune
Five MPs got this rating:

  1. SharePoint 2010
  2. Exchange 2007
  3. ForeFront TMG (equal amount of answers ranging from some weeks to one day...)
  4. Windows Server Operating System
  5. SQL

Some days or just one day to tune
Nine MPs got this rating:

  1. SharePoint 2007
  2. ISA 2004/2006
  3. Terminal Services
  4. Remote Desktop Services
  5. Hyper-V
  6. IIS
  7. DHCP
  8. WINS
  9. Print Server

Conclusion
The Hyper-V MP is very basic so there is not much to tune. The Print Server MP is old and hasn’t got an update for a long time, so this MP doesn’t work with Windows Server 2008 (R2) based Print Servers. Therefore there isn’t much to tune either. The DHCP MP isn’t that nice either and very basic so there is much to tune. Basically the real good MPs (like SQL, AD, DNS, Windows Server) take more then a day to tune. So the amount of time required to tune a MP doesn’t necessarily tell the quality of a MP. The only exception here are the MPs which require ongoing tuning. This means something is really amiss with those MPs. Again, the SCCM MP is renewed. Much of the noise is cut down so this version of the SCCM MP should require less effort to tune.

Other MPs require tuning for some time since they monitor complex infrastructures like SharePoint, AD and DNS. Which is acceptable as long as in some point of time the tuning stops and only some maintenance in order to reflect infrastructural changes are required.

The raw results for this question can be found here.

In the next posting of this series I will post and discuss the answers given to the fourth and fifth question in this survey. So stay tuned!

Saturday, January 7, 2012

System Center 2012 & System Center Strategy Event - 17th of January

On the 17th of January Microsoft will broadcast a big System Center 2012 & System Center strategy event, titled: Transforming IT with Microsoft Private Cloud.
image

As Mary JoFoley from ZDNet states about this event: ‘…This could be the day that Microsoft announces the release to manufacturing of the 10 or so products that comprise the System Center 2012 family…

The event will be broadcasted here and also shows the schedule:
image

Translated to Europe/Amsterdam times: The event starts at 17:30 and ends at approx. 19:30.

For all persons involved with any System Center product in any kind of way and interested in the latest cloud developments I strongly advice to join this meeting.

Thursday, January 5, 2012

SCOM R2 doesn’t work: SDK Service isn’t initialized. However, SDK is up & running…

Issue
Bumped into this situation: SCOM R2 didn’t run anymore. When people tried to start the Console the message was shown about the SDK Service not running. But when they checked the status of this service on the RMS, all seemed to be fine. All three SCOM R2 services were in a running state. However, the OpsMgr event log told them a different story: EventID 33333 all over. This events tells SCOM R2 isn’t able to store date in the database. So time for some investigation.

Cause
When one bumps into a situation like this it’s time to investigate the SQL server which hosts the SCOM R2 databases. Here the cause is to be found. These causes can be:

  1. SQL Engine not running;
  2. SCOM database is corrupted (you don’t want to go there…);
  3. SCOM database is running in single-user mode;
  4. SCOM database is full;
  5. SCOM database log file is full.

In this case Option 5 was at play here. The log file was full. Which is strange since by default the Recovery Model for the SCOM R2 databases is set to Simple. So the log file stays small and nothing serious happens to it. But now the log file was totally used (0% space left). And indeed, the Recovery Model for the OpsMgr database AND the OpsMgrDW database was changed to FULL…

Time for some actions.

Solution
In this case I stopped all SCOM R2 services on the RMS and the Health Service on the MS servers. Since SQL wasn’t happy either with the filled log files for the SCOM R2 databases and it’s a dedicated SQL server, I restarted the SQL engine so everything was fresh.

First thing I did was giving more space to the log files of both SCOM R2 databases, just a couple of GBs per log file, but just enough to do the trick:

  1. Open SQL Server Management Studio, log on to the correct instance, select the SCOM R2 database, right click it and select Properties;
  2. Go to the second page on the left (Files) and adjust the file size of the log file by incrementing it with a couple of GBs;
  3. Click OK and the change will be applied right away;
  4. Repeat this action for the other SCOM database as well.

Now the log files have some space again so the can ‘breath’. Now it’s time for the second action, backing up the SCOM R2 databases. Better to be safe than sorry :). When you don’t add space to the log files, you’ll get this error when trying to backup the SCOM R2 databases:
image

In SQL Server Management Studio:

  1. Right click the SCOM R2 database, select Tasks and the option Back Up;
  2. Backup the database to a file location and select the on the page Options under the header Reliability the option Verify backup when finished;
  3. Let the backup job run by clicking OK and wait until it’s finished;
  4. Repeat this action for the other SCOM database as well.

Now we have valid backups of both SCOM R2 databases, so there is a way back when things turn sour. Until now I haven’t seen this happening but better be safe than sorry :).

Since SCOM R2 was installed in such a manner to facilitate the full Recovery Model of both SCOM R2 databases (not enough disk space nor enough I/O power for having a smooth running SCOM R2 environment) I decided to change the Recovery Model back to Simple for both SCOM R2 databases:

In SQL Server Management Studio:

  1. Select the SCOM R2 database, right click it and select Properties;
  2. Go to the fourth page on the left (Options) and adjust the Recovery Model of the database to Simple;
  3. Click OK. Now the Recovery Model will be set back to Simple;
  4. Repeat this action for the other SCOM database as well.

Now the log files of both SCOM R2 databases are still huge but they’re almost empty. Perfect time for some shrinking of the size of the databases! Before that it’s better to run a backup again of the databases. Also to be safe and not sorry but also to make sure the shrink actions will land properly.

In SQL Server Management Studio:

  1. Select the SCOM R2 database, right click it and select Tasks > Shrink > Files;
  2. Make sure for File Type to select Log;
  3. Under the header Shrink Action select the option Reorganize pages before releasing unused space. Shrink File to: xyz MB (minimum is 0 MB);
  4. Select a proper file size (not too big since the Recovery Model is Simple);
  5. And click OK. This can take some minutes, depending on the size and speed of the SQL server;
  6. Repeat this action for the other SCOM database as well.

Now all is well again and SCOM will operate smoothly again AFTER the SCOM R2 services are started of course on the RMS and MS servers :).

Wednesday, January 4, 2012

MMS2012: Here we come!!!

Yeah! Today I have booked for three colleagues and myself the trip to Las Vegas in order to attend MMS2012! Nice!
image

Can’t wait to go there. Hopefully we all meet there! Personally I think this MMS is going to rock and roll since this year is THE year of the new System Center products. So MMS2012 will be too hot to handle!

For everyone involved in any System Center product, MMS2012 is THE place to be. Want to know more and even better, buy yourself entrance tickets? Go here.
image