home *** CD-ROM | disk | FTP | other *** search
/ moodle.waes.ac.uk / moodle.waes.ac.uk.zip / moodle.waes.ac.uk / TMG / SP1-TMG-KB981324-AMD64-ENU.msp / PCW_CAB_SHFx2 / F2143_msfpcui.dll / BINARY / 25502 < prev    next >
Text File  |  2010-06-15  |  3KB  |  101 lines

  1. CREATE PROCEDURE [dbo].[ISA_spMalwareThreatsRDL]
  2.     @FromDate datetime,
  3.     @ToDate datetime,
  4.     @ReportType varchar(10),
  5.     @TopCount int
  6. AS
  7. BEGIN
  8.     DECLARE @SummTableName varchar(100)
  9.     SET @SummTableName = dbo.fnGetSummaryTableName('tblMalwareSummary', @FromDate, @ToDate, @ReportType)
  10.     CREATE TABLE #Table1
  11.     (
  12.         ThreatName varchar(255),
  13.         ThreatLevel int,
  14.         Incidents bigint
  15.     );
  16.     CREATE TABLE #table3
  17.     (
  18.         [ThreatName] varchar(255),
  19.         [ThreatLevel] int,
  20.     )
  21.     IF OBJECT_ID (@SummTableName, 'u') IS NOT NULL
  22.     BEGIN
  23.         DECLARE @strQuery varchar(8000)
  24.         SET @strQuery =
  25.         'SELECT
  26.             [ThreatName] AS [ThreatName],
  27.             [ThreatLevel] AS [ThreatLevel],
  28.             MAX([date]) AS [date]
  29.         FROM ' + @SummTableName + '
  30.         WHERE ([date] >= ' + QUOTENAME(CONVERT(varchar, @FromDate, 126),CHAR(39)) + ' AND [date] <= ' + QUOTENAME(CONVERT(varchar, @ToDate, 126),CHAR(39)) + ')
  31.         GROUP BY [ThreatName],
  32.                  [ThreatLevel]
  33.         '
  34.         CREATE TABLE #Table2
  35.         (
  36.             ThreatName varchar(255),
  37.             ThreatLevel int,
  38.             date datetime
  39.         );
  40.         INSERT #Table2
  41.         EXEC(@strQuery)
  42.         INSERT INTO #table3
  43.         SELECT
  44.               [ThreatName],
  45.               (SELECT TOP(1) ThreatLevel
  46.                FROM #table2 q
  47.                WHERE q.[ThreatName] = p.[ThreatName]
  48.                ORDER BY [date] DESC, [ThreatLevel] DESC
  49.               )AS [ThreatLevel]
  50.         FROM #table2 p
  51.         GROUP BY [ThreatName]
  52.         SET @strQuery =
  53.         'SELECT o.[ThreatName],
  54.                 p.[ThreatLevel],
  55.                 o.[Incidents]
  56.          FROM
  57.             (SELECT
  58.                 [ThreatName] AS [ThreatName],
  59.                 SUM([Incidents]) AS [Incidents]
  60.             FROM ' + @SummTableName + '
  61.             WHERE ([date] >= ' + QUOTENAME(CONVERT(varchar, @FromDate, 126),CHAR(39)) + ' AND [date] <= ' + QUOTENAME(CONVERT(varchar, @ToDate, 126),CHAR(39)) + ')
  62.                 AND ([ThreatName] != ' + QUOTENAME('-',CHAR(39)) + ')
  63.             GROUP BY [ThreatName]) o
  64.         INNER JOIN #table3 p
  65.            ON o.[ThreatName] = p.[ThreatName]
  66.         ORDER BY [Incidents] DESC
  67.         '
  68.         INSERT #Table1
  69.         EXEC(@strQuery)
  70.     END
  71.     DECLARE @TotalIncidents bigint
  72.     SET @TotalIncidents = (SELECT SUM([Incidents]) FROM #Table1 )
  73.     IF (@TotalIncidents = 0)
  74.         SET @TotalIncidents = 1
  75.     SELECT TOP(@TopCount)
  76.         [ThreatName],
  77.         CASE
  78.             WHEN [ThreatLevel] = 0 THEN N'{[25175]}'
  79.             WHEN [ThreatLevel] = 1 THEN N'{[25176]}'
  80.             WHEN [ThreatLevel] = 2 THEN N'{[25177]}'
  81.             WHEN [ThreatLevel] = 3 THEN N'{[25178]}'
  82.             WHEN [ThreatLevel] = 4 THEN N'{[25179]}'
  83.             ELSE N'{[25180]}'
  84.         END AS [ThreatLevel],
  85.         [Incidents]  AS Incidents,
  86.         (CAST([Incidents] AS decimal) / @TotalIncidents) AS IncidentRatio
  87.     FROM #Table1
  88.     UNION ALL
  89.     SELECT
  90.         N'{[23124]}' As ThreatName,
  91.         N' ' AS [ThreatLevel],
  92.         SUM([Incidents]) AS Incidents,
  93.         (CAST(SUM([Incidents]) AS decimal) / @TotalIncidents) AS IncidentRatio
  94.     FROM #Table1 t1
  95.     WHERE NOT EXISTS
  96.         (SELECT * FROM
  97.            (SELECT TOP(@TopCount) *
  98.             FROM #Table1) t2
  99.             WHERE t1.ThreatName = t2.ThreatName)
  100. END
  101.