Версии отчетов SSRS - PullRequest
       2

Версии отчетов SSRS

11 голосов
/ 01 ноября 2010

Я ищу способ получения информации о версиях из моих отчетов SSRS.У меня есть несколько сред, и я хотел бы сравнить, какая версия отчета развернута в этих средах.В SSIS это очень просто, потому что каждый пакет SSIS получает новую версию, когда он был изменен и сохранен.Есть ли что-то похожее с отчетами?

Ответы [ 4 ]

9 голосов
/ 01 ноября 2010

К сожалению, в настоящее время нет встроенной функциональности, аналогичной версии сборки dll для файлов RDL.

Единственный способ получить какую-либо информацию о версии - запросить дату последнего изменения файла RDL всервер через C # или VB.Net.Вы можете сделать это с помощью веб-службы ReportingServices.

Вы также можете реализовать пользовательскую функцию, которая обновляет некоторые поля в вашей базе данных до текущей даты каждый раз, когда изменяется файл RDL.

Проблема со всемиинформация об изменении файла: вы все еще не знаете, какая версия на каком сервере, вы просто знаете, когда он был загружен / изменен.

См. следующие страницы для получения дополнительной информации - к сожалению, нет решения:

4 голосов
/ 29 июня 2012

В моих отчетах я создаю переменную с именем Version и делаю ее строковым типом данных (и перемещаю ее в начало списка переменных). Каждый раз, когда я изменяю отчет, я обновляю переменную Version на основе Semantic Versioning .

Затем я могу запросить свой сервер отчетов и посмотреть в поле «Параметры» таблицы ExecutionLog, и я могу увидеть, какая версия была запущена. Технически я забочусь обо всем этом в задании SSIS, которое записывает в другую таблицу, но это немного выходит за рамки этого.

0 голосов
/ 25 октября 2018

Таблица dbo.Catalog сервера отчетов имеет как CreationDate, так и ModifiedDate.

В рамках расследования я собрал запрос, чтобы вывести список запросов в файлах RDL и выполнить простой CHECKSUM для этого, чтобы упростить проверку на смещение. Конечно, вы можете сделать то же самое для всего поля Content намного проще или лучше открыть XML, используя реальную обработку XML.

Надеюсь, это полезно;

DECLARE @reftextstart VARCHAR(255);
DECLARE @reftextend VARCHAR(255);

SELECT @reftextstart = '%<CommandText>%';
SELECT @reftextend = '</CommandText>';


SELECT SQ2.Path,
       SQ2.Name,
       SQ2.CreationDate,
       SQ2.ModifiedDate,
       ReportQuery,
       CHECKSUM(ReportQuery) ReportQueryChecksum
FROM
(
    SELECT SQ.Path,
           SQ.Name,
           SQ.CreationDate,
           SQ.ModifiedDate,
           CASE PATINDEX(@reftextstart, Report)
               WHEN 0 THEN
                   N''
               ELSE
                   SUBSTRING(
                                Report,
                                PATINDEX(@reftextstart, Report) + LEN(@reftextstart) - 2,
                                CHARINDEX(
                                             @reftextend,
                                             SUBSTRING(
                                                          Report,
                                                          PATINDEX(@reftextstart, Report) + LEN(@reftextstart) - 2,
                                                          1024
                                                      )
                                         ) - 1
                            )
           END ReportQuery
    FROM
    (
        SELECT TOP 1000
               [Path],
               [Name],
               [CreationDate],
               [ModifiedDate],
               [ExecutionTime],
               CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), Content)) Report
        FROM [ReportServer].[dbo].[Catalog]
        WHERE Name IN ( N'Report1', N'Report2' )
    ) SQ
) SQ2
ORDER BY [Path],
         Name;
0 голосов
/ 22 ноября 2017

Кажется, до сих пор нет хорошего решения. Если вы создаете скрытый параметр «Версия» со значением по умолчанию, вы можете использовать задачу сборки, чтобы изменить ее значение в файле .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

и преобразовать дату в номер редакции ... Не помогите с версиями на разных экземплярах сервера.

...