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 / 25498 < prev    next >
Text File  |  2010-06-15  |  4KB  |  111 lines

  1. CREATE PROCEDURE [dbo].[ISA_spServerParticipationRDL]
  2.     @FromDate datetime,
  3.     @ToDate datetime,
  4.     @ReportType varchar(10)
  5. AS
  6. BEGIN
  7.     DECLARE @SummTableName varchar(100)
  8.     SET @SummTableName = dbo.fnGetSummaryTableName('tblServerParticipationSummary', @FromDate, @ToDate, @ReportType)
  9.     CREATE TABLE #Table1
  10.     (
  11.         [ServerName] nvarchar(32),
  12.         [date]       datetime
  13.     );
  14.     -- we filter out '-' entries which mean no log DBs for that day
  15.     IF OBJECT_ID (@SummTableName, 'u') IS NOT NULL
  16.     BEGIN
  17.         DECLARE @strQuery varchar(8000)
  18.         SET @strQuery =
  19.         'SELECT
  20.             [ServerName] AS ServerName,
  21.             [FromDate]   AS [date]
  22.         FROM ' + @SummTableName + '
  23.         WHERE ([FromDate] >= ' + QUOTENAME(CONVERT(varchar, @FromDate, 126),CHAR(39)) + ' AND [FromDate] <= ' + QUOTENAME(CONVERT(varchar, @ToDate, 126),CHAR(39)) + ')
  24.               AND [ServerName] != ''-''
  25.         GROUP BY [ServerName], [FromDate]
  26.         '
  27.         INSERT #Table1
  28.         EXEC(@strQuery)
  29.     END
  30.     -- create string of participating servers
  31.     DECLARE @ServerName nvarchar(100)
  32.     DECLARE Servers_Cursor CURSOR FOR
  33.     SELECT [ServerName] FROM #Table1 GROUP BY [ServerName]
  34.     OPEN Servers_Cursor;
  35.     FETCH NEXT FROM Servers_Cursor
  36.     INTO @ServerName;
  37.     DECLARE @ServersConcat_String nvarchar(4000) = ''
  38.     DECLARE @DbCount Int = 1
  39.     WHILE @@FETCH_STATUS = 0
  40.     BEGIN
  41.           PRINT 'Server Name: ' + @ServerName;
  42.           IF (@DbCount <> 1)
  43.           BEGIN
  44.                SET @ServersConcat_String = @ServersConcat_String + N'{[10911]}'
  45.           END
  46.           SET @DbCount = @DbCount + 1
  47.           IF (@DbCount > 64)
  48.           BEGIN
  49.             CLOSE Servers_Cursor;
  50.             DEALLOCATE Servers_Cursor;
  51.             RETURN(4)
  52.           END
  53.           SET @ServersConcat_String = @ServersConcat_String + @ServerName
  54.           FETCH NEXT FROM Servers_Cursor
  55.           INTO @ServerName;
  56.     END
  57.     CLOSE Servers_Cursor;
  58.     DEALLOCATE Servers_Cursor;
  59.     -- create table with full date range
  60.     CREATE TABLE #AllDays ( [date] datetime );
  61.     DECLARE @tmpDate datetime = @FromDate
  62.     WHILE @tmpDate <= @ToDate
  63.     BEGIN
  64.         INSERT INTO #AllDays ([date]) VALUES(@tmpDate)
  65.         SET @tmpDate = DATEADD (day, 1, @tmpDate)
  66.     END
  67.     -- create table with missing servers
  68.     CREATE TABLE #MissingServers ( [ServerName] nvarchar(32));
  69.     INSERT INTO #MissingServers
  70.     SELECT [ServerName] FROM
  71.     (SELECT *
  72.     FROM (SELECT [ServerName] FROM #Table1 GROUP BY [ServerName]) AS t_in
  73.      CROSS JOIN #AllDays AS t_allDays) t_All
  74.     WHERE NOT EXISTS
  75.         (SELECT * FROM #table1
  76.          WHERE t_All.date = #Table1.date AND t_All.ServerName = #Table1.ServerName)
  77.     GROUP BY [ServerName]
  78.     -- create string of missing servers
  79.     DECLARE MissingServers_Cursor CURSOR FOR
  80.     SELECT [ServerName] FROM #MissingServers
  81.     OPEN MissingServers_Cursor;
  82.     FETCH NEXT FROM MissingServers_Cursor
  83.     INTO @ServerName;
  84.     DECLARE @MissingServersConcat_String nvarchar(4000) = ''
  85.     SET @DbCount = 1
  86.     WHILE @@FETCH_STATUS = 0
  87.     BEGIN
  88.           PRINT 'Missing Server Name: ' + @ServerName;
  89.           IF (@DbCount <> 1)
  90.           BEGIN
  91.                SET @MissingServersConcat_String = @MissingServersConcat_String + N'{[10911]}'
  92.           END
  93.           SET @DbCount = @DbCount + 1
  94.           IF (@DbCount > 64)
  95.           BEGIN
  96.             CLOSE MissingServers_Cursor;
  97.             DEALLOCATE MissingServers_Cursor;
  98.             RETURN(4)
  99.           END
  100.           SET @MissingServersConcat_String = @MissingServersConcat_String + @ServerName
  101.           FETCH NEXT FROM MissingServers_Cursor
  102.           INTO @ServerName;
  103.      END
  104.      CLOSE MissingServers_Cursor;
  105.      DEALLOCATE MissingServers_Cursor;
  106.      PRINT 'Servers : ' + @MissingServersConcat_String;
  107.      SELECT
  108.         @ServersConcat_String AS Servers,
  109.         @MissingServersConcat_String AS MissingServers
  110. END
  111.