GetPerformanceSeriesStatisticsAsParameters.SP.sql (Resource)

Element properties:

TypeResource
File NameGetPerformanceSeriesStatisticsAsParameters.SP.sql
AccessibilityInternal

Source Code:

<Resource ID="GetPerformanceSeriesStatisticsAsParameters.SP.sql" Accessibility="Internal" FileName="GetPerformanceSeriesStatisticsAsParameters.SP.sql"/>

File Content: GetPerformanceSeriesStatisticsAsParameters.SP.sql

IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_Visualization_Library_GetPerformanceSeriesStatisticsAsParameters' AND UID = SCHEMA_ID('SDK'))

BEGIN
EXECUTE ('CREATE PROCEDURE SDK.Microsoft_SystemCenter_Visualization_Library_GetPerformanceSeriesStatisticsAsParameters AS RETURN 1')
END
GO

ALTER PROCEDURE [SDK].[Microsoft_SystemCenter_Visualization_Library_GetPerformanceSeriesStatisticsAsParameters]
@ManagedEntityRowId int,
@StartTime datetime,
@EndTime datetime,
@ObjectName nvarchar(max),
@CounterName nvarchar(max),
@InstanceName nvarchar(max) = '',
@AggregationType int,
@AverageValue float OUTPUT,
@MinimumValue float OUTPUT,
@MaximumValue float OUTPUT
AS
BEGIN
SET NOCOUNT ON

DECLARE
@ErrorInd bit
,@ErrorMessage nvarchar(max)
,@ErrorNumber int
,@ErrorSeverity int
,@ErrorState int
,@ErrorLine int
,@ErrorProcedure nvarchar(256)
,@ErrorMessageText nvarchar(max)

SET @ErrorInd = 0

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

BEGIN TRY

DECLARE
@SelectStatement nvarchar(max)
,@WhereStatement nvarchar(max)
,@SqlStatement nvarchar(max)
,@TimeStatement nvarchar(max)
,@ViewName nvarchar(max)
,@AverageColumnName nvarchar(max)
,@MinimumColumnName nvarchar(max)
,@MaximumColumnName nvarchar(max)

IF @AggregationType = 0
BEGIN
SET @ViewName = 'Perf.vPerfRaw'
SET @AverageColumnName = 'SampleValue'
SET @MinimumColumnName = 'SampleValue'
SET @MaximumColumnName = 'SampleValue'
SET @TimeStatement = '
AND vPerf.DateTime >= @StartTime
AND vPerf.DateTime <= @EndTime
'
END
ELSE IF @AggregationType = 20
BEGIN
SET @ViewName = 'Perf.vPerfHourly'
SET @AverageColumnName = 'AverageValue'
SET @MinimumColumnName = 'MinValue'
SET @MaximumColumnName = 'MaxValue'
SET @TimeStatement = '
AND (vPerf.DateTime >= DATEADD(hh, DATEPART(hh, @StartTime), convert(varchar(8), @StartTime, 112)))
AND (vPerf.DateTime < DATEADD(hh, DATEPART(hh, @EndTime), convert(varchar(8), @EndTime, 112)))
'
END
ELSE IF @AggregationType = 30
BEGIN
SET @ViewName = 'Perf.vPerfDaily'
SET @AverageColumnName = 'AverageValue'
SET @MinimumColumnName = 'MinValue'
SET @MaximumColumnName = 'MaxValue'
SET @TimeStatement = '
AND (vPerf.DateTime >= DATEADD(hh, DATEPART(hh, @StartTime), convert(varchar(8), @StartTime, 112)))
AND (vPerf.DateTime < DATEADD(hh, DATEPART(hh, @EndTime), convert(varchar(8), @EndTime, 112)))
'
END
ELSE
BEGIN
RAISERROR (777971002, 16, 1
,0
,0
,0
,N'SDK.GetPerformanceSeriesStatisticsAsParameter'
,0
,N'Invalid AggregationType - only 0, 20, and 30 are supported'
)
END

IF @ObjectName = '' OR @ObjectName IS NULL
BEGIN
RAISERROR (777971002, 16, 1
,0
,0
,0
,N'SDK.GetPerformanceSeriesStatisticsAsParameter'
,0
,N'NULL or empty ObjectName'
)
END

IF @CounterName = '' OR @CounterName IS NULL
BEGIN
RAISERROR (777971002, 16, 1
,0
,0
,0
,N'SDK.GetPerformanceSeriesStatisticsAsParameter'
,0
,N'NULL or empty CounterName'
)
END

SET @SelectStatement = '
SELECT @AverageValue = AVG(' + @AverageColumnName + '), @MinimumValue = MIN(' + @MinimumColumnName + '), @MaximumValue = MAX(' + @MaximumColumnName + ') FROM ' + @ViewName + ' AS vPerf INNER JOIN
vPerformanceRuleInstance AS pRI ON pRI.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vRule AS vR ON vR.RuleRowId = pRI.RuleRowId INNER JOIN
vPerformanceRule AS pR ON pR.RuleRowId = pRI.RuleRowId
'

IF @InstanceName = ''
SET @WhereStatement = '
WHERE vPerf.ManagedEntityRowId = @ManagedEntityRowId AND
pR.ObjectName = @ObjectName AND
pR.CounterName = @CounterName AND
vPerf.DateTime >= @StartTime AND
vPerf.DateTime <= @EndTime
'
ELSE
SET @WhereStatement = '
WHERE vPerf.ManagedEntityRowId = @ManagedEntityRowId AND
pR.ObjectName = @ObjectName AND
pR.CounterName = @CounterName AND
pRI.InstanceName = @InstanceName AND
vPerf.DateTime >= @StartTime AND
vPerf.DateTime <= @EndTime
'

SET @SqlStatement = @SelectStatement + @WhereStatement

EXEC sp_executesql
@stmt = @SqlStatement,
@params = N'
@ManagedEntityRowId int,
@StartTime datetime,
@EndTime datetime,
@ObjectName nvarchar(max),
@CounterName nvarchar(max),
@InstanceName nvarchar(max),
@AverageValue float OUTPUT,
@MinimumValue float OUTPUT,
@MaximumValue float OUTPUT',
@ManagedEntityRowId = @ManagedEntityRowId,
@StartTime = @StartTime,
@EndTime = @EndTime,
@ObjectName = @ObjectName,
@CounterName = @CounterName,
@InstanceName = @InstanceName,
@AverageValue = @AverageValue OUTPUT,
@MinimumValue = @MinimumValue OUTPUT,
@MaximumValue = @MaximumValue OUTPUT
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRAN

SELECT
@ErrorNumber = ERROR_NUMBER()
,@ErrorSeverity = ERROR_SEVERITY()
,@ErrorState = ERROR_STATE()
,@ErrorLine = ERROR_LINE()
,@ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-')
,@ErrorMessageText = ERROR_MESSAGE()

SET @ErrorInd = 1
END CATCH

-- report error if any
IF (@ErrorInd = 1)
BEGIN
DECLARE @AdjustedErrorSeverity int

SET @AdjustedErrorSeverity = CASE
WHEN @ErrorSeverity > 18 THEN 18
ELSE @ErrorSeverity
END

RAISERROR (777971002, @AdjustedErrorSeverity, 1
,@ErrorNumber
,@ErrorSeverity
,@ErrorState
,@ErrorProcedure
,@ErrorLine
,@ErrorMessageText
)
END
END
GO

GRANT EXECUTE ON [SDK].[Microsoft_SystemCenter_Visualization_Library_GetPerformanceSeriesStatisticsAsParameters] TO OpsMgrReader
GO