Microsoft.SystemCenter.PowerManagement.Report.Script (DataWarehouseScript)

Element properties:

Install ScriptRes.Microsoft.SystemCenter.PowerManagement.Report.Script.Install
Uninstall ScriptRes.Microsoft.SystemCenter.PowerManagement.Report.Script.Uninstall
Upgrade ScriptRes.Microsoft.SystemCenter.PowerManagement.Report.Script.Upgrade
Upgrade UnsupportedFalse
AccessibilityPublic

Source Code:

<DataWarehouseScript ID="Microsoft.SystemCenter.PowerManagement.Report.Script" Accessibility="Public">
<Install>
IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse] AS RETURN 1')
END
GO

ALTER PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@ContainmentLevelCount int = 0,
@ContainmentStartLevel int = 0
AS
BEGIN
SET NOCOUNT ON

DECLARE @Error int
DECLARE @ExecError int
DECLARE @RowCount int

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

IF (OBJECT_ID('tempdb..#ContainmentObjectList') IS NOT NULL)
DROP TABLE #ContainmentObjectList

CREATE TABLE #ContainmentObjectList(
ManagedEntityRowId int,
Position int,
[Level] int)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

IF (OBJECT_ID('tempdb..#RelationshipType') IS NOT NULL)
DROP TABLE #RelationshipType

CREATE TABLE #RelationshipType(
RelationshipTypeRowId int,
[Level] int)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #ContainmentObjectList (ManagedEntityRowId, Position, [Level])
SELECT ObjectList.ManagedEntityRowId.value('.', 'int'), ObjectList.ManagedEntityRowId.value('.', 'int'), 0
FROM @ObjectList.nodes('/Data/Objects/Object') AS ObjectList(ManagedEntityRowId)
WHERE ISNULL(ObjectList.ManagedEntityRowId.value('@Use', 'nvarchar(255)'), 'Self') = 'Self' -- applies 'Containment' even if it is 'Self' since PowerSet is not a group but contains devices
OR ISNULL(ObjectList.ManagedEntityRowId.value('@Use', 'nvarchar(255)'), 'Self') = 'Containment'

SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
IF @Error &lt;&gt; 0 GOTO QuitError

IF @RowCount &gt; 0
BEGIN
DECLARE @ContainmentRelationshipTypeRowId int
SELECT @ContainmentRelationshipTypeRowId = RelationshipTypeRowId FROM vRelationshipType WHERE RelationshipTypeSystemName = 'System.Containment'

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT #RelationshipType(RelationshipTypeRowId, [Level])
SELECT RelationshipTypeRowId, [Level]
FROM dbo.RelationshipDerivedTypeHierarchy(@ContainmentRelationshipTypeRowId, 0)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

DECLARE @CurrentLevel int
SET @CurrentLevel = 1

WHILE (((@ContainmentLevelCount &gt;= @CurrentLevel) OR (@ContainmentLevelCount = 0)) AND (@RowCount &gt; 0))
BEGIN
INSERT INTO #ContainmentObjectList (ManagedEntityRowId, Position, [Level])
SELECT DISTINCT r.TargetManagedEntityRowId, me.Position, @CurrentLevel
FROM Relationship r
JOIN RelationshipManagementGroup rmg ON (r.RelationshipRowId = rmg.RelationshipRowId)
JOIN #RelationshipType rt ON (r.RelationshipTypeRowId = rt.RelationshipTypeRowId)
JOIN #ContainmentObjectList me ON (me.ManagedEntityRowId = r.SourceManagedEntityRowId) AND (me.[Level] = @CurrentLevel - 1)
WHERE (rmg.FromDateTime &lt;= @EndDate) AND (ISNULL(rmg.ToDateTime, '99991231') &gt;= @StartDate)

SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
SET @CurrentLevel = @CurrentLevel + 1

IF @Error &lt;&gt; 0 OR @ExecError &lt;&gt; 0 GOTO QuitError
END
END

/* ------------------------------ */

SELECT col.ManagedEntityRowId, Position, me.DisplayName as PositionDisplayName
FROM #ContainmentObjectList col
JOIN vManagedEntity me ON me.ManagedEntityRowId = col.Position
WHERE [Level] &gt;= @ContainmentStartLevel

SET @Error = @@ERROR

QuitError:
IF (OBJECT_ID('tempdb..#ContainmentObjectList') IS NOT NULL)
DROP TABLE #ContainmentObjectList
IF (OBJECT_ID('tempdb..#RelationshipType') IS NOT NULL)
DROP TABLE #RelationshipType

RETURN @Error
END
GO

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

ALTER PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_PerfDataGet]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@LanguageCode varchar(3) = 'ENU'

AS
BEGIN
SET NOCOUNT ON

DECLARE @Error int
DECLARE @ExecError int
DECLARE @PowerConsumption nvarchar(256)
DECLARE @PowerCapacity nvarchar(256)
DECLARE @PowerBudget nvarchar(256)
DECLARE @UnmonitoredPowerConsumption nvarchar(256)

--Gets localized strings of four power management perf counters from the report display strings
IF (OBJECT_ID('tempdb..#CounterDisplayName') IS NOT NULL)
DROP TABLE #CounterDisplayName

CREATE TABLE #CounterDisplayName(CounterName nvarchar(256), DisplayName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #CounterDisplayName (CounterName, DisplayName)
SELECT
CounterName =
CASE vReportDisplayString.ReportDisplayStringSystemName
WHEN 'R.PowerConsumption' THEN 'Power Consumption'
WHEN 'R.PowerCapacity' THEN 'Power Capacity'
WHEN 'R.PowerBudget' THEN 'Power Budget'
WHEN 'R.UnmonitoredPowerConsumption' THEN 'Unmonitored Power Consumption'
END,
ISNULL(vDisplayString.Name, vReportDisplayString.ReportDisplayStringDefaultName) AS DisplayName
FROM vReportDisplayString
INNER JOIN vReport ON vReport.ReportRowId = vReportDisplayString.ReportRowId
LEFT OUTER JOIN vDisplayString ON (vDisplayString.ElementGuid = vReportDisplayString.ReportDisplayStringGuid AND vDisplayString.LanguageCode = @LanguageCode)
WHERE vReport.ReportSystemName = 'Microsoft.SystemCenter.PowerManagement.Report.PowerConsumption'
AND (vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerConsumption'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerCapacity'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerBudget'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.UnmonitoredPowerConsumption')

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

SET @PowerConsumption = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Consumption');
SET @PowerCapacity = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Capacity');
SET @PowerBudget = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Budget');
SET @UnmonitoredPowerConsumption = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Unmonitored Power Consumption');

-- Create a table of perf collection rules being used
IF (OBJECT_ID('tempdb..#PowerManagementRule') IS NOT NULL)
DROP TABLE #PowerManagementRule

CREATE TABLE #PowerManagementRule (RuleRowId int, RuleSystemName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #PowerManagementRule (RuleRowId, RuleSystemName)
SELECT RuleRowId, RuleSystemName
FROM vRule
WHERE
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerConsumption.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerCapacity.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerBudget.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection'

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

-- Position is ManagedEntityRowId of the top level container
IF (OBJECT_ID('tempdb..#ManagedEntity') IS NOT NULL)
DROP TABLE #ManagedEntity

CREATE TABLE #ManagedEntity (ManagedEntityRowId int, Position int, PositionDisplayName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #ManagedEntity
EXECUTE @ExecError = [Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse]
@ObjectList = @ObjectList,
@StartDate = @StartDate ,
@EndDate = @EndDate

SET @Error = @@ERROR
IF @ExecError &lt;&gt; 0 OR @Error &lt;&gt; 0 GOTO QuitError

SELECT
#ManagedEntity.Position,
#ManagedEntity.PositionDisplayName,
vPerf.DateTime,
vPerf.SampleCount,
vPerf.AverageValue,
vPerf.MinValue,
vPerf.MaxValue,
vPerf.StandardDeviation,
vManagedEntity.ManagedEntityRowId,
CASE WHEN #PowerManagementRule.RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection'
THEN @UnmonitoredPowerConsumption
ELSE ISNULL(vManagedEntity.DisplayName, vManagedEntity.ManagedEntityDefaultName)
END AS DeviceDisplayName,
ChartCounterName =
CASE #PowerManagementRule.RuleSystemName
WHEN 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection' THEN @PowerConsumption -- To add to Power Consumption
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerConsumption.Collection' THEN @PowerConsumption
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerCapacity.Collection' THEN @PowerCapacity
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerBudget.Collection' THEN @PowerBudget
END,
vPerformanceRule.ObjectName,
vPerformanceRule.CounterName
FROM Perf.vPerfHourly AS vPerf
INNER JOIN vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId
INNER JOIN #PowerManagementRule ON #PowerManagementRule.RuleRowId = vPerformanceRuleInstance.RuleRowId
INNER JOIN vPerformanceRule ON vPerformanceRule.RuleRowId = #PowerManagementRule.RuleRowId
INNER JOIN vManagedEntity ON vManagedEntity.ManagedEntityRowId = vPerf.ManagedEntityRowId
INNER JOIN #ManagedEntity ON #ManagedEntity.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
WHERE
vPerf.DateTime &gt;= @StartDate AND vPerf.DateTime &lt; @EndDate

SET @Error = @@ERROR

QuitError:
IF ((@Error = 0) AND (@ExecError &lt;&gt; 0)) SET @Error = @ExecError
IF (OBJECT_ID('tempdb..#CounterDisplayName') IS NOT NULL)
DROP TABLE #CounterDisplayName
IF (OBJECT_ID('tempdb..#PowerManagementRule') IS NOT NULL)
DROP TABLE #PowerManagementRule
IF (OBJECT_ID('tempdb..#ManagedEntity') IS NOT NULL)
DROP TABLE #ManagedEntity

RETURN @Error
END
GO

</Install>
<Uninstall>
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse')
BEGIN
DROP PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse]
END
GO

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_PowerManagement_Library_PerfDataGet')
BEGIN
DROP PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_PerfDataGet]
END
GO

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

ALTER PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@ContainmentLevelCount int = 0,
@ContainmentStartLevel int = 0
AS
BEGIN
SET NOCOUNT ON

DECLARE @Error int
DECLARE @ExecError int
DECLARE @RowCount int

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

IF (OBJECT_ID('tempdb..#ContainmentObjectList') IS NOT NULL)
DROP TABLE #ContainmentObjectList

CREATE TABLE #ContainmentObjectList(
ManagedEntityRowId int,
Position int,
[Level] int)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

IF (OBJECT_ID('tempdb..#RelationshipType') IS NOT NULL)
DROP TABLE #RelationshipType

CREATE TABLE #RelationshipType(
RelationshipTypeRowId int,
[Level] int)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #ContainmentObjectList (ManagedEntityRowId, Position, [Level])
SELECT ObjectList.ManagedEntityRowId.value('.', 'int'), ObjectList.ManagedEntityRowId.value('.', 'int'), 0
FROM @ObjectList.nodes('/Data/Objects/Object') AS ObjectList(ManagedEntityRowId)
WHERE ISNULL(ObjectList.ManagedEntityRowId.value('@Use', 'nvarchar(255)'), 'Self') = 'Self' -- applies 'Containment' even if it is 'Self' since PowerSet is not a group but contains devices
OR ISNULL(ObjectList.ManagedEntityRowId.value('@Use', 'nvarchar(255)'), 'Self') = 'Containment'

SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
IF @Error &lt;&gt; 0 GOTO QuitError

IF @RowCount &gt; 0
BEGIN
DECLARE @ContainmentRelationshipTypeRowId int
SELECT @ContainmentRelationshipTypeRowId = RelationshipTypeRowId FROM vRelationshipType WHERE RelationshipTypeSystemName = 'System.Containment'

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT #RelationshipType(RelationshipTypeRowId, [Level])
SELECT RelationshipTypeRowId, [Level]
FROM dbo.RelationshipDerivedTypeHierarchy(@ContainmentRelationshipTypeRowId, 0)

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

DECLARE @CurrentLevel int
SET @CurrentLevel = 1

WHILE (((@ContainmentLevelCount &gt;= @CurrentLevel) OR (@ContainmentLevelCount = 0)) AND (@RowCount &gt; 0))
BEGIN
INSERT INTO #ContainmentObjectList (ManagedEntityRowId, Position, [Level])
SELECT DISTINCT r.TargetManagedEntityRowId, me.Position, @CurrentLevel
FROM Relationship r
JOIN RelationshipManagementGroup rmg ON (r.RelationshipRowId = rmg.RelationshipRowId)
JOIN #RelationshipType rt ON (r.RelationshipTypeRowId = rt.RelationshipTypeRowId)
JOIN #ContainmentObjectList me ON (me.ManagedEntityRowId = r.SourceManagedEntityRowId) AND (me.[Level] = @CurrentLevel - 1)
WHERE (rmg.FromDateTime &lt;= @EndDate) AND (ISNULL(rmg.ToDateTime, '99991231') &gt;= @StartDate)

SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
SET @CurrentLevel = @CurrentLevel + 1

IF @Error &lt;&gt; 0 OR @ExecError &lt;&gt; 0 GOTO QuitError
END
END

/* ------------------------------ */

SELECT col.ManagedEntityRowId, Position, me.DisplayName as PositionDisplayName
FROM #ContainmentObjectList col
JOIN vManagedEntity me ON me.ManagedEntityRowId = col.Position
WHERE [Level] &gt;= @ContainmentStartLevel

SET @Error = @@ERROR

QuitError:
IF (OBJECT_ID('tempdb..#ContainmentObjectList') IS NOT NULL)
DROP TABLE #ContainmentObjectList
IF (OBJECT_ID('tempdb..#RelationshipType') IS NOT NULL)
DROP TABLE #RelationshipType

RETURN @Error
END
GO

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

ALTER PROCEDURE dbo.[Microsoft_SystemCenter_PowerManagement_Library_PerfDataGet]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@LanguageCode varchar(3) = 'ENU'

AS
BEGIN
SET NOCOUNT ON

DECLARE @Error int
DECLARE @ExecError int
DECLARE @PowerConsumption nvarchar(256)
DECLARE @PowerCapacity nvarchar(256)
DECLARE @PowerBudget nvarchar(256)
DECLARE @UnmonitoredPowerConsumption nvarchar(256)

--Gets localized strings of four power management perf counters from the report display strings
IF (OBJECT_ID('tempdb..#CounterDisplayName') IS NOT NULL)
DROP TABLE #CounterDisplayName

CREATE TABLE #CounterDisplayName(CounterName nvarchar(256), DisplayName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #CounterDisplayName (CounterName, DisplayName)
SELECT
CounterName =
CASE vReportDisplayString.ReportDisplayStringSystemName
WHEN 'R.PowerConsumption' THEN 'Power Consumption'
WHEN 'R.PowerCapacity' THEN 'Power Capacity'
WHEN 'R.PowerBudget' THEN 'Power Budget'
WHEN 'R.UnmonitoredPowerConsumption' THEN 'Unmonitored Power Consumption'
END,
ISNULL(vDisplayString.Name, vReportDisplayString.ReportDisplayStringDefaultName) AS DisplayName
FROM vReportDisplayString
INNER JOIN vReport ON vReport.ReportRowId = vReportDisplayString.ReportRowId
LEFT OUTER JOIN vDisplayString ON (vDisplayString.ElementGuid = vReportDisplayString.ReportDisplayStringGuid AND vDisplayString.LanguageCode = @LanguageCode)
WHERE vReport.ReportSystemName = 'Microsoft.SystemCenter.PowerManagement.Report.PowerConsumption'
AND (vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerConsumption'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerCapacity'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.PowerBudget'
OR vReportDisplayString.ReportDisplayStringSystemName = 'R.UnmonitoredPowerConsumption')

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

SET @PowerConsumption = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Consumption');
SET @PowerCapacity = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Capacity');
SET @PowerBudget = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Power Budget');
SET @UnmonitoredPowerConsumption = (SELECT DisplayName FROM #CounterDisplayName WHERE CounterName = 'Unmonitored Power Consumption');

-- Create a table of perf collection rules being used
IF (OBJECT_ID('tempdb..#PowerManagementRule') IS NOT NULL)
DROP TABLE #PowerManagementRule

CREATE TABLE #PowerManagementRule (RuleRowId int, RuleSystemName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #PowerManagementRule (RuleRowId, RuleSystemName)
SELECT RuleRowId, RuleSystemName
FROM vRule
WHERE
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerConsumption.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerCapacity.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.PowerBudget.Collection'
OR
RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection'

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

-- Position is ManagedEntityRowId of the top level container
IF (OBJECT_ID('tempdb..#ManagedEntity') IS NOT NULL)
DROP TABLE #ManagedEntity

CREATE TABLE #ManagedEntity (ManagedEntityRowId int, Position int, PositionDisplayName nvarchar(256))

SET @Error = @@ERROR
IF @Error &lt;&gt; 0 GOTO QuitError

INSERT INTO #ManagedEntity
EXECUTE @ExecError = [Microsoft_SystemCenter_PowerManagement_Library_ReportObjectListParse]
@ObjectList = @ObjectList,
@StartDate = @StartDate ,
@EndDate = @EndDate

SET @Error = @@ERROR
IF @ExecError &lt;&gt; 0 OR @Error &lt;&gt; 0 GOTO QuitError

SELECT
#ManagedEntity.Position,
#ManagedEntity.PositionDisplayName,
vPerf.DateTime,
vPerf.SampleCount,
vPerf.AverageValue,
vPerf.MinValue,
vPerf.MaxValue,
vPerf.StandardDeviation,
vManagedEntity.ManagedEntityRowId,
CASE WHEN #PowerManagementRule.RuleSystemName = 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection'
THEN @UnmonitoredPowerConsumption
ELSE ISNULL(vManagedEntity.DisplayName, vManagedEntity.ManagedEntityDefaultName)
END AS DeviceDisplayName,
ChartCounterName =
CASE #PowerManagementRule.RuleSystemName
WHEN 'Microsoft.SystemCenter.PowerManagement.UnmonitoredPowerConsumption.Collection' THEN @PowerConsumption -- To add to Power Consumption
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerConsumption.Collection' THEN @PowerConsumption
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerCapacity.Collection' THEN @PowerCapacity
WHEN 'Microsoft.SystemCenter.PowerManagement.PowerBudget.Collection' THEN @PowerBudget
END,
vPerformanceRule.ObjectName,
vPerformanceRule.CounterName
FROM Perf.vPerfHourly AS vPerf
INNER JOIN vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId
INNER JOIN #PowerManagementRule ON #PowerManagementRule.RuleRowId = vPerformanceRuleInstance.RuleRowId
INNER JOIN vPerformanceRule ON vPerformanceRule.RuleRowId = #PowerManagementRule.RuleRowId
INNER JOIN vManagedEntity ON vManagedEntity.ManagedEntityRowId = vPerf.ManagedEntityRowId
INNER JOIN #ManagedEntity ON #ManagedEntity.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
WHERE
vPerf.DateTime &gt;= @StartDate AND vPerf.DateTime &lt; @EndDate

SET @Error = @@ERROR

QuitError:
IF ((@Error = 0) AND (@ExecError &lt;&gt; 0)) SET @Error = @ExecError
IF (OBJECT_ID('tempdb..#CounterDisplayName') IS NOT NULL)
DROP TABLE #CounterDisplayName
IF (OBJECT_ID('tempdb..#PowerManagementRule') IS NOT NULL)
DROP TABLE #PowerManagementRule
IF (OBJECT_ID('tempdb..#ManagedEntity') IS NOT NULL)
DROP TABLE #ManagedEntity

RETURN @Error
END
GO

</Upgrade>
</DataWarehouseScript>