DECLARE @DT AS VARCHAR(8), @i int, @x int
DECLARE @_serv AS VARCHAR(100),@_base AS VARCHAR(100),@_descr AS VARCHAR(100), @SQL VARCHAR(8000)
SET @DT = CONVERT (char(8),DATEADD(day,-1,GETDATE()),112)
-- таблица описывающая источники данных для отчёта
DECLARE @tt_base table ([ID] [int] IDENTITY(1,1) NOT NULL,
[Serv] VARCHAR(100),
[Base] VARCHAR(100),
[Descr] VARCHAR(100)
);
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES (Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
-- таблица отчёта
IF OBJECT_ID('tt_report') IS NOT NULL DROP TABLE tt_report;
CREATE TABLE [dbo].[tt_report](
[Сервер] VARCHAR(100),
[База] VARCHAR(100),
[Наименование] VARCHAR(100),
[Форма] VARCHAR(1000),
[Путь] VARCHAR(1000),
[Пользователь] VARCHAR(100),
[Компьютер] VARCHAR(100),
[exec_count] integer
) ON [PRIMARY]
SET @i = (SELECT COUNT(*) FROM @tt_base)
SET @x = 1;
WHILE @x <= @i BEGIN
SET @_serv = ( SELECT Serv FROM @tt_base WHERE id = @x)
SET @_base = ( SELECT Base FROM @tt_base WHERE id = @x)
SET @_descr = ( SELECT Descr FROM @tt_base WHERE id = @x)
SET @SQL = 'INSERT INTO tt_report ([Сервер], [База], [Наименование], [Форма], [Путь], [Пользователь], [Компьютер], [exec_count]) '+
'SELECT '''+@_serv+''' as Сервер,'''+@_base+''' as База, '''+@_descr+''' as Наименование, Форма, Путь, Пользователь, Компьютер, COUNT(*)'+
'FROM ['+@_serv+'].'+@_base+'.dbo.REG_FORMS with(nolock)'+
'WHERE Т = ''О''
AND ДТ >= '''+@DT+''' AND NOT Форма LIKE ''Документ%'' AND NOT Форма LIKE ''Справочник%'' AND NOT Форма LIKE ''Журнал%'' AND NOT Форма LIKE ''Обработка.%'' AND NOT Форма LIKE ''Отчет.%''
GROUP BY Форма, Путь, Пользователь, Компьютер
ORDER BY Путь'
exec(@SQL)
SET @x= @x+1
END