Я ищу способ получить информацию о версиях из отчетов SSRS. Я имею несколько сред и хотел бы иметь возможность сравнить, какая версия отчета развертывается в этих средах. В SSIS это очень просто, потому что каждый пакет SSIS получает новую версию, когда она была изменена и защищена. Есть ли что-то похожее на отчеты?
Отчеты по версиям SSRS
Ответ 1
К сожалению, в настоящее время нет встроенных функций, подобных версии сборки dll для файлов RDL.
Единственный способ получить некоторую информацию о версии - это запросить последнюю измененную дату файла RDL на сервере через С# или VB.Net. Вы можете сделать это с помощью веб-службы ReportingServices.
Вы также можете реализовать пользовательскую функцию, которая обновляет некоторое поле в вашей базе данных до текущей даты каждый раз, когда файл RDL изменяется.
Проблема со всей измененной информацией: вы все еще не знаете, какая версия находится на каком сервере, вы просто знаете, когда она была загружена/изменена.
См. следующие страницы для получения дополнительной информации - к сожалению, нет решения:
Ответ 2
В моих отчетах я создаю переменную с именем Version и делаю ее строковым типом данных (и перемещаю ее вверху списка переменных). Каждый раз, когда я меняю отчет, я обновляю переменную Version на основе Semantic Versioning.
Затем я могу запросить свой сервер отчетов и посмотреть поле параметра в таблице ExecutionLog, и я могу посмотреть, какая версия была запущена. Технически я позабочусь обо всем этом в задании SSIS, которое записывает в другую таблицу, но немного выходит за рамки этой области.
Ответ 3
По-прежнему, похоже, нет хорошего решения. Если вы создаете скрытый параметр "Версия" со значением по умолчанию, вы можете использовать задачу сборки для изменения ее значения в файле .rdl, например. часть ревизии с номером набора изменений источника. К сожалению, вам может понадобиться другой визуальный проект Studio для размещения этой задачи сборки, поскольку тип проекта отчета кажется неспособным.
Вы также можете создать встроенный код или сборку, которая может выполнить некоторый поиск.
Дешевая субоптимальная альтернатива: Используйте последнюю измененную дату из базы данных отчета:
Select
Name,
Path,
CreationDate,
ModifiedDate,
ModUser.UserName AS ModUser,
CAST(catalog.parameter as xml).value(/Parameters[1]/Parameter[Name="Version"][1]/Values[1]/Value[1]','NVARCHAR(20)') as Version
FROM Reportserver.dbo.Catalog
INNER JOIN ReportServer.dbo.Users ModUser on Moduser.UserID = ModifiedByID
WHERE Type = 2
и конвертировать дату в номер версии... Однако не помогает с версиями в разных экземплярах сервера.