Еще один способ - переименовать отчет до его автоматического запуска.Это алмаз на алмазе.Это может работать только для отчетов, которые являются подписками, а не теми, на которые пользователи ссылаются.Создайте таблицу в базе данных ReportServer, которая содержит список всех отчетов, которые вы хотите переименовать до их выполнения.Таблица Report_Rename_Listing RenameID int ItemID uniqueidentifier OriginalReportName nvarchar (350) DateType nvarchar (75) Формат int DatePlusMinus real Создайте хранимую процедуру на том же сервере, который выходит и изменяет все отчеты в приведенной выше таблице.
Create Procedure [dbo].[RenameReports]
AS
SET NOCOUNT OFF ;
Update dbo.Catalog
Set Name = ISNULL(( Select OriginalReportName + '_' +
dbo.func_SetupRenameOfReports(DateType, Format, DatePlusMinus)
From dbo.DDC_Report_Rename r
Where r.ItemID = c.ItemID), Name)
From dbo.Catalog c
return (0)
Создайте скалярную функцию на том же сервере, которая определяет, как вы хотите переименовать отчет.
Create Function [dbo].[func_SetupRenameOfReports]
( @DateType nvarchar(75), @Format int, @PlusMinus real )
RETURNS nvarchar(75)
AS
BEGIN
Declare @FirstMonth datetime, @LastMonth datetime
Declare @OutputFormat nvarchar(75)
Set @FirstMonth = CONVERT(datetime, Convert(varchar(2), DateAdd(mm, @PlusMinus, GetDate()), 103) + '/1/' + CONVERT(varchar(4), DateAdd(mm, @PlusMinus, GetDate()), 102))
Set @LastMonth = DATEADD(dd, -1, DateAdd(mm, 1, @FirstMonth))
Set @OutputFormat =
Case When @DateType = 'CurrentDate' Then Convert(varchar(75), DateAdd(dd, @PlusMinus, GetDate()), @Format)
When @DateType = 'CurrentDayName' Then CONVERT(varchar(75), DateName(dw, DateAdd(dd, @PlusMinus, GetDate())))
When @DateType = 'CurrentMonthName' Then CONVERT(varchar(75), DateName(mm, DateAdd(mm, @PlusMinus, GetDate())))
When @DateType = 'CurrentYear' Then CONVERT(varchar(75), DateAdd(yy, @PlusMinus, GetDate()))
When @DateType = 'CurrentBeginEndMonth' Then CONVERT(varchar(10), @FirstMonth, @Format) + '-' + CONVERT(varchar(10), @LastMonth, @Format)
End
If @OutputFormat IS null
Begin
Set @OutputFormat = ''
End
Return @OutputFormat
END
Затем настройте это так, чтобы хранимая процедура автоматически запускалась ежедневноваш сервер.У меня это работает только после полуночи каждый день.