IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ComtradeMPXAXD_LogonDuration_DataGet')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[ComtradeMPXAXD_LogonDuration_DataGet] AS RETURN 1')
END
GO
IF @DataAggregation = 0 --HOURLY
BEGIN
IF @BusinessTimeType = 1 --business hours
BEGIN
INSERT INTO #NumberOfLogons(DateTime, LogonSampleCount, LogonAverage, ManagedEntityRowId)
SELECT vPerf.DateTime, vPerf.SampleCount, vPerf.AverageValue,
vManagedEntity.ManagedEntityRowId
FROM Perf.vPerfHourly as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId
WHERE vPerf.DateTime >= @StartDate_BaseValue AND
vPerf.DateTime < @EndDate_BaseValue AND
vRule.RuleSystemName = 'Comtrade.Citrix.XenDesktop.EndUser.DeliveryGroup.Logons.NumberOfLogons.PerfDBDW'
AND vPerf.DateTime - CAST(FLOOR(CAST(vPerf.DateTime AS float)) AS datetime) >= @BH_start --start hours
AND vPerf.DateTime - CAST(FLOOR(CAST(vPerf.DateTime AS float)) AS datetime) < @BH_end --end hours
AND ((DATEPART(WEEKDAY, vPerf.DateTime) = 1 and @BusinessDay1 = 1) --monday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 2 and @BusinessDay2 = 1) --tuesday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 3 and @BusinessDay3 = 1) --wednesday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 4 and @BusinessDay4 = 1) --thursday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 5 and @BusinessDay5 = 1) --friday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 6 and @BusinessDay6 = 1) --saturday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 7 and @BusinessDay7 = 1)) --sunday
END
ELSE
BEGIN
INSERT INTO #NumberOfLogons(DateTime, LogonSampleCount, LogonAverage, ManagedEntityRowId)
SELECT vPerf.DateTime, vPerf.SampleCount, vPerf.AverageValue,
vManagedEntity.ManagedEntityRowId
FROM Perf.vPerfHourly as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId
WHERE vPerf.DateTime >= @StartDate_BaseValue AND
vPerf.DateTime < @EndDate_BaseValue AND
vRule.RuleSystemName = 'Comtrade.Citrix.XenDesktop.EndUser.DeliveryGroup.Logons.NumberOfLogons.PerfDBDW'
END
END
ELSE
BEGIN
IF @BusinessTimeType = 1 --business hours
BEGIN
INSERT INTO #NumberOfLogons(DateTime, LogonSampleCount, LogonAverage, ManagedEntityRowId)
SELECT vPerf.DateTime, vPerf.SampleCount, vPerf.AverageValue,
vManagedEntity.ManagedEntityRowId
FROM Perf.vPerfDaily as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId
WHERE vPerf.DateTime >= @StartDate_BaseValue AND
vPerf.DateTime < @EndDate_BaseValue AND
vRule.RuleSystemName = 'Comtrade.Citrix.XenDesktop.EndUser.DeliveryGroup.Logons.NumberOfLogons.PerfDBDW'
AND vPerf.DateTime - CAST(FLOOR(CAST(vPerf.DateTime AS float)) AS datetime) >= @BH_start --start hours
AND vPerf.DateTime - CAST(FLOOR(CAST(vPerf.DateTime AS float)) AS datetime) < @BH_end --end hours
AND ((DATEPART(WEEKDAY, vPerf.DateTime) = 1 and @BusinessDay1 = 1) --monday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 2 and @BusinessDay2 = 1) --tuesday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 3 and @BusinessDay3 = 1) --wednesday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 4 and @BusinessDay4 = 1) --thursday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 5 and @BusinessDay5 = 1) --friday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 6 and @BusinessDay6 = 1) --saturday
OR (DATEPART(WEEKDAY, vPerf.DateTime) = 7 and @BusinessDay7 = 1)) --sunday
END
ELSE
BEGIN
INSERT INTO #NumberOfLogons(DateTime, LogonSampleCount, LogonAverage, ManagedEntityRowId)
SELECT vPerf.DateTime, vPerf.SampleCount, vPerf.AverageValue,
vManagedEntity.ManagedEntityRowId
FROM Perf.vPerfDaily as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId
WHERE vPerf.DateTime >= @StartDate_BaseValue AND
vPerf.DateTime < @EndDate_BaseValue AND
vRule.RuleSystemName = 'Comtrade.Citrix.XenDesktop.EndUser.DeliveryGroup.Logons.NumberOfLogons.PerfDBDW'
END
END
IF @DataAggregation = 0 --HOURLY
BEGIN
SELECT DATEADD(minute, @GMTDiff, vPerf.DateTime) AS DateTime, vPerf.SampleCount* vPerf.AverageValue AS AverageTime,
vPerformanceRuleInstance.RuleRowId, vPerformanceRuleInstance.InstanceName AS InstanceName,
vRule.RuleSystemName AS RuleSystemName, #DGs.Site_Name,
#NumberOfLogons.LogonAverage*#NumberOfLogons.LogonSampleCount AS LogonCount,
vManagedEntity.ManagedEntityRowId, vManagedEntity.ManagedEntityGuid, vManagedEntity.ManagedEntityDefaultName, vManagedEntity.Path,
ISNULL(vDisplayString.Name,vManagedEntityType.ManagedEntityTypeDefaultName) AS DisplayName,
vManagementGroup.ManagementGroupGuid, vManagementGroup.ManagementGroupDefaultName,
#PerfCounterNames.DisplayName AS RuleDisplayName,#PerfCounterNames.Color AS GraphColor,
DATEPART(wk, vPerf.DateTime) AS WeekNumber
FROM Perf.vPerfHourly as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vManagedEntityType ON vManagedEntityType.ManagedEntityTypeRowId = vManagedEntity.ManagedEntityTypeRowId INNER JOIN
vManagementGroup ON vManagementGroup.ManagementGroupRowId = vManagedEntity.ManagementGroupRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId INNER JOIN
#PerfRules on vRule.RuleSystemName = #PerfRules.RuleSystemName INNER JOIN
vPerformanceRule ON vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId INNER JOIN
#PerfCounterNames ON #PerfCounterNames.CounterName = vPerformanceRule.CounterName INNER JOIN
#NumberOfLogons ON #NumberOfLogons.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId AND
#NumberOfLogons.DateTime = vPerf.DateTime INNER JOIN
#DGs ON #DGs.DG_RowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vDisplayString ON vManagedEntityType.ManagedEntityTypeGuid = vDisplayString.ElementGuid AND
vDisplayString.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString vDisplayStringRule ON vRule.RuleGuid = vDisplayStringRule.ElementGuid AND
vDisplayStringRule.LanguageCode = @LanguageCode
END
ELSE
BEGIN
SELECT DATEADD(minute, @GMTDiff, vPerf.DateTime) AS DateTime, vPerf.SampleCount* vPerf.AverageValue AS AverageTime,
vPerformanceRuleInstance.RuleRowId, vPerformanceRuleInstance.InstanceName AS InstanceName,
vRule.RuleSystemName AS RuleSystemName, #DGs.Site_Name,
#NumberOfLogons.LogonAverage*#NumberOfLogons.LogonSampleCount AS LogonCount,
vManagedEntity.ManagedEntityRowId, vManagedEntity.ManagedEntityGuid, vManagedEntity.ManagedEntityDefaultName, vManagedEntity.Path,
ISNULL(vDisplayString.Name,vManagedEntityType.ManagedEntityTypeDefaultName) AS DisplayName,
vManagementGroup.ManagementGroupGuid, vManagementGroup.ManagementGroupDefaultName,
#PerfCounterNames.DisplayName AS RuleDisplayName,#PerfCounterNames.Color AS GraphColor,
DATEPART(wk, vPerf.DateTime) AS WeekNumber
FROM Perf.vPerfDaily as vPerf INNER JOIN
vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = vPerf.PerformanceRuleInstanceRowId INNER JOIN
vManagedEntity ON vPerf.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vManagedEntityType ON vManagedEntityType.ManagedEntityTypeRowId = vManagedEntity.ManagedEntityTypeRowId INNER JOIN
vManagementGroup ON vManagementGroup.ManagementGroupRowId = vManagedEntity.ManagementGroupRowId INNER JOIN
vRule ON vPerformanceRuleInstance.RuleRowId = vRule.RuleRowId INNER JOIN
#PerfRules on vRule.RuleSystemName = #PerfRules.RuleSystemName INNER JOIN
vPerformanceRule ON vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId INNER JOIN
#PerfCounterNames ON #PerfCounterNames.CounterName = vPerformanceRule.CounterName INNER JOIN
#NumberOfLogons ON #NumberOfLogons.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId AND
#NumberOfLogons.DateTime = vPerf.DateTime INNER JOIN
#DGs ON #DGs.DG_RowId = vManagedEntity.ManagedEntityRowId INNER JOIN
vDisplayString ON vManagedEntityType.ManagedEntityTypeGuid = vDisplayString.ElementGuid AND
vDisplayString.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString vDisplayStringRule ON vRule.RuleGuid = vDisplayStringRule.ElementGuid AND
vDisplayStringRule.LanguageCode = @LanguageCode
END
DROP TABLE #DGs
DROP TABLE #ManagedEntity
DROP TABLE #NumberOfLogons
DROP TABLE #PerfRules
DROP TABLE #PerfCounterNames