<DataWarehouseScript ID="Microsoft.SystemCenter.DataWarehouse.Report.Script.EventTemplate" Accessibility="Public"> <Install>
IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet] AS RETURN 1')
END
GO
ALTER PROCEDURE dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@InputXML xml,
@LanguageCode varchar(3) = 'ENU'
AS
BEGIN
SET NOCOUNT ON
DECLARE @Error int
DECLARE @ExecError int
CREATE TABLE #ObjectList (ManagedEntityRowId int)
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
INSERT INTO #ParameterFilter (ParameterIndex, ParameterValue)
SELECT SUBSTRING(PropertyID, LEN('Parameter') + 1, LEN(PropertyID) - LEN('Parameter')),
ParameterValue =
CASE (FilterType)
WHEN('Equals') THEN ('' + REPLACE(FilterValue,'''','''''') + '')
WHEN('Contains')THEN ('%' + REPLACE(FilterValue,'''','''''') + '%')
ELSE ''
END
FROM #ColumnPicker
WHERE PropertyID LIKE 'Parameter%' AND FilterText IS NOT NULL
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
--Build Column CSV List
DECLARE @ColumnList nvarchar(max)
SELECT @ColumnList = COALESCE(@ColumnList + ', ', '')
+ CAST(PropertyID AS nvarchar(100))
FROM #ColumnPicker
WHERE PropertyID NOT LIKE 'Parameter%'
--Get Parameter Column Count
DECLARE @ParameterColumnCount int
SELECT @ParameterColumnCount = Count(*) FROM #ColumnPicker WHERE Visible = 'true' AND PropertyID LIKE 'Parameter%'
-- Get Filter Count
DECLARE @FilterCount int
SELECT @FilterCount = Count(*) FROM #ColumnPicker
WHERE FilterText IS NOT NULL AND PropertyID NOT LIKE 'Parameter%'
-- Build Filter CSV List
DECLARE @FilterList nvarchar(max)
SELECT @FilterList = COALESCE(@FilterList + ' AND ', '')
+ CAST(FilterText AS nvarchar(100))
FROM #ColumnPicker
WHERE FilterText IS NOT NULL AND PropertyID NOT LIKE 'Parameter%'
-- Build Parameter Filter Join
DECLARE @ParameterFilterJoin nvarchar(max)
SELECT @ParameterFilterJoin =
ISNULL(@ParameterFilterJoin, '') + ' INNER JOIN
Event.vEventParameter AS EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + ' ON EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.EventOriginId = Event.vEvent.EventOriginId
AND EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.ParameterIndex = ' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '
AND EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.ParameterValue Like ''' + #ParameterFilter.ParameterValue + '''
'
FROM #ParameterFilter
CREATE TABLE #SelectedSet
(
EventOriginId uniqueidentifier not null
,PropertyID nvarchar(100) COLLATE database_default
,PropertyValue nvarchar(256) COLLATE database_default
,[Position] int
)
DECLARE @EventID uniqueidentifier
SELECT TOP(1) @EventID= #Events.EventOriginId FROM #Events
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
INSERT #SelectedSet
EXECUTE('SELECT
unpvt.EventOriginId
,#ColumnPicker.PropertyID
,PropValue
,#ColumnPicker.Position
FROM
#Events
UNPIVOT
(
PropValue FOR PropertyID IN ('+ @ColumnList +')
) AS unpvt
INNER JOIN
#ColumnPicker ON unpvt.PropertyID = #ColumnPicker.PropertyID
WHERE #ColumnPicker.Visible = ''true''')
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,#SelectedSet.PropertyID
,#SelectedSet.PropertyValue
,#SelectedSet.Position
FROM #Events INNER JOIN
#SelectedSet ON #SelectedSet.EventOriginId = #Events.EventOriginId
UNION
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,#ColumnPicker.PropertyID
,Event.vEventParameter.ParameterValue
,#ColumnPicker.Position
FROM
Event.vEventParameter INNER JOIN
#Events ON Event.vEventParameter.EventOriginId = #Events.EventOriginId INNER JOIN
#ColumnPicker ON Event.vEventParameter.ParameterIndex = CAST(SUBSTRING(#ColumnPicker.PropertyID, LEN('Parameter') + 1, LEN(#ColumnPicker.PropertyID) - LEN('Parameter')) AS int)
WHERE
#ColumnPicker.PropertyID like 'Parameter%' and #ColumnPicker.Visible = 'true'
UNION
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,Properties.PropertyID
,NULL
,Properties.Position
FROM
#Events
CROSS JOIN
( SELECT PropertyID, #ColumnPicker.Position
FROM #ColumnPicker
WHERE #ColumnPicker.PropertyID LIKE 'Parameter%' AND #ColumnPicker.PropertyID NOT IN
(
SELECT 'Parameter' + CONVERT(nvarchar(100),Event.vEventParameter.ParameterIndex)
FROM Event.vEventParameter
INNER JOIN #Events ON Event.vEventParameter.EventOriginId = #Events.EventOriginId
WHERE #Events.EventOriginId = @EventID
)
) AS Properties
WHERE #Events.EventOriginId = @EventID
SET @Error = @@ERROR
IF @Error <> 0 OR @ExecError <> 0 GOTO QuitError
SET @Error = @@ERROR
IF @Error <> 0 OR @ExecError <> 0 GOTO QuitError
/* ------------------------------ */
QuitError:
IF ((@Error = 0) AND (@ExecError <> 0)) SET @Error = @ExecError
/* Clean Up */
-- remove xml document if opened
IF @xmldoc IS NOT NULL EXEC sp_xml_removedocument @xmldoc
DROP TABLE #SelectedSet
DROP TABLE #Events
DROP TABLE #ParameterFilter
DROP TABLE #ColumnPicker
DROP TABLE #ObjectList
RETURN @Error
END
GO
GRANT EXECUTE ON dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet] TO OpsMgrReader
GO
</Install> <Uninstall>
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet')
BEGIN
DROP PROCEDURE dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet]
END
GO
</Uninstall> <Upgrade>
IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet] AS RETURN 1')
END
GO
ALTER PROCEDURE dbo.[Microsoft_SystemCenter_DataWarehouse_Report_Library_EventTemplateReportDataGet]
@StartDate datetime,
@EndDate datetime,
@ObjectList xml,
@InputXML xml,
@LanguageCode varchar(3) = 'ENU'
AS
BEGIN
SET NOCOUNT ON
DECLARE @Error int
DECLARE @ExecError int
CREATE TABLE #ObjectList (ManagedEntityRowId int)
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
INSERT INTO #ParameterFilter (ParameterIndex, ParameterValue)
SELECT SUBSTRING(PropertyID, LEN('Parameter') + 1, LEN(PropertyID) - LEN('Parameter')),
ParameterValue =
CASE (FilterType)
WHEN('Equals') THEN ('' + REPLACE(FilterValue,'''','''''') + '')
WHEN('Contains')THEN ('%' + REPLACE(FilterValue,'''','''''') + '%')
ELSE ''
END
FROM #ColumnPicker
WHERE PropertyID LIKE 'Parameter%' AND FilterText IS NOT NULL
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
--Build Column CSV List
DECLARE @ColumnList nvarchar(max)
SELECT @ColumnList = COALESCE(@ColumnList + ', ', '')
+ CAST(PropertyID AS nvarchar(100))
FROM #ColumnPicker
WHERE PropertyID NOT LIKE 'Parameter%'
--Get Parameter Column Count
DECLARE @ParameterColumnCount int
SELECT @ParameterColumnCount = Count(*) FROM #ColumnPicker WHERE Visible = 'true' AND PropertyID LIKE 'Parameter%'
-- Get Filter Count
DECLARE @FilterCount int
SELECT @FilterCount = Count(*) FROM #ColumnPicker
WHERE FilterText IS NOT NULL AND PropertyID NOT LIKE 'Parameter%'
-- Build Filter CSV List
DECLARE @FilterList nvarchar(max)
SELECT @FilterList = COALESCE(@FilterList + ' AND ', '')
+ CAST(FilterText AS nvarchar(100))
FROM #ColumnPicker
WHERE FilterText IS NOT NULL AND PropertyID NOT LIKE 'Parameter%'
-- Build Parameter Filter Join
DECLARE @ParameterFilterJoin nvarchar(max)
SELECT @ParameterFilterJoin =
ISNULL(@ParameterFilterJoin, '') + ' INNER JOIN
Event.vEventParameter AS EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + ' ON EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.EventOriginId = Event.vEvent.EventOriginId
AND EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.ParameterIndex = ' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '
AND EventParameter' + CAST(#ParameterFilter.ParameterIndex AS nvarchar(100)) + '.ParameterValue Like ''' + #ParameterFilter.ParameterValue + '''
'
FROM #ParameterFilter
CREATE TABLE #SelectedSet
(
EventOriginId uniqueidentifier not null
,PropertyID nvarchar(100) COLLATE database_default
,PropertyValue nvarchar(256) COLLATE database_default
,[Position] int
)
DECLARE @EventID uniqueidentifier
SELECT TOP(1) @EventID= #Events.EventOriginId FROM #Events
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
INSERT #SelectedSet
EXECUTE('SELECT
unpvt.EventOriginId
,#ColumnPicker.PropertyID
,PropValue
,#ColumnPicker.Position
FROM
#Events
UNPIVOT
(
PropValue FOR PropertyID IN ('+ @ColumnList +')
) AS unpvt
INNER JOIN
#ColumnPicker ON unpvt.PropertyID = #ColumnPicker.PropertyID
WHERE #ColumnPicker.Visible = ''true''')
SET @Error = @@ERROR
IF @Error <> 0 GOTO QuitError
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,#SelectedSet.PropertyID
,#SelectedSet.PropertyValue
,#SelectedSet.Position
FROM #Events INNER JOIN
#SelectedSet ON #SelectedSet.EventOriginId = #Events.EventOriginId
UNION
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,#ColumnPicker.PropertyID
,Event.vEventParameter.ParameterValue
,#ColumnPicker.Position
FROM
Event.vEventParameter INNER JOIN
#Events ON Event.vEventParameter.EventOriginId = #Events.EventOriginId INNER JOIN
#ColumnPicker ON Event.vEventParameter.ParameterIndex = CAST(SUBSTRING(#ColumnPicker.PropertyID, LEN('Parameter') + 1, LEN(#ColumnPicker.PropertyID) - LEN('Parameter')) AS int)
WHERE
#ColumnPicker.PropertyID like 'Parameter%' and #ColumnPicker.Visible = 'true'
UNION
SELECT #Events.EventOriginId
,#Events.ManagedEntityRowId
,#Events.EventDisplayNumber
,#Events.EventPublisherName
,Properties.PropertyID
,NULL
,Properties.Position
FROM
#Events
CROSS JOIN
( SELECT PropertyID, #ColumnPicker.Position
FROM #ColumnPicker
WHERE #ColumnPicker.PropertyID LIKE 'Parameter%' AND #ColumnPicker.PropertyID NOT IN
(
SELECT 'Parameter' + CONVERT(nvarchar(100),Event.vEventParameter.ParameterIndex)
FROM Event.vEventParameter
INNER JOIN #Events ON Event.vEventParameter.EventOriginId = #Events.EventOriginId
WHERE #Events.EventOriginId = @EventID
)
) AS Properties
WHERE #Events.EventOriginId = @EventID
SET @Error = @@ERROR
IF @Error <> 0 OR @ExecError <> 0 GOTO QuitError