none
Как бы заскриптовать периодическую генерацию отчета Reporting Services? RRS feed

  • Общие обсуждения

  • "Хочу быть владычицей морскою, и чтоб золотая рыбка мне по утрам тапочки в зубах приносила и хвостиком виляла"

    Здравствуйте, коллеги!
    Пришел я к вам из соседнего форума "Управление ИТ-инфраструктурой"
    Другими словами, "Сами мы не местные, помогите люди добрыя, кто чем может"

    Контекст задачи таков.

    Есть такой продукт SCE 2007 SP1 (младшОй брат Operations Manager'а).
    Он, в числе прочего, собирает инвентаризационную информацию с компьютеров в сети - где какое железо, где какой софт и т.п.
    SCE успешно паразитирует на SQL 2005 Std с RS.

    В качестве результатов своей жизнедеятельности SCE выдает с помощью Reporting Services отчеты "Опись оборудования", "Опись программного обеспечения" и т.п. Отчеты можно сохранить в XML.

    Те же самые отчеты можно получить через web-интерфейс RS. В моем случае по ссылке такого вида:
    http://sce64-2/ReportServer$SCE?%2fMicrosoft.SystemCenter.Essentials.Report.Library%2fMicrosoft.SystemCenter.Essentials.Report.HardwareInventory&rs:Command=Render

    Галками указываем, по каким компьютерам нужен отчет и получаем результат. Так же результат можно экспортнуть в XML.
    Полученный XML-файл в дальнейшем скармливается сторонней системе, которая его переваривает для нужд собственной жизнедеятельности.

    Так вот. Вышеуказанный файл надо получать автоматом с заданной регулярностью и складывать в заранее отведенное место. Скажем, раз в сутки.

    Вот тут то меня и ударил пробел в знаниях. Ибо про SQL 2005 и RS я имею весьма поверхностное понимание, а время, как обычно, поджимает.

    Подскажите, в каком направлении копать, чтоб процесс поиска решения оптимизировать?
    Или может есть уже готовое решения - где взять?
    На выходе мне был бы идеален некий скрипт...
    Сам напишу, знать бы какие объекты и как дергать...

    Уповаю на коллективный разум.
    С уважением, Александр ;)
    1 сентября 2009 г. 9:31

Все ответы

  • Тихо сам с собой веду беседу.
    Обнаружил механизм подписок ;)

    В принципе, меня устраивает. Но остался один вопрос.
    Отчет требует указания параметров: список компьютеров, по которым генерировать отчет.
    Но мне то надо, чтоб отчет генерировался всегда по ВСЕМ компьютерам, сколько бы их там ни было...
    Как это указать в подписке?....
    1 сентября 2009 г. 10:54
  • Скорее всего, в данном указать "ВСЕ какие есть" не получится.


    This posting is provided "AS IS" with no warranties, and confers no rights.
    2 сентября 2009 г. 22:37
  • Жаль.

    Получается, нужно сформировать список атрибутов, вызывать отчет и пропихнуть ему список этих атрибутов автоматически....
    Может есть еще какие-то варианты?
    3 сентября 2009 г. 6:07
  • Можно импортировать rdl файл, изменить его чтоб не требовал параметров (т.е. не использовал условия выборки в запросе) и выложить под другим именем, на него и делать подписку.
    3 сентября 2009 г. 8:22
  • "Ты не мудри, ты пальцем покажи" (с) анекдот
    Я повторюсь - дуб дубом в RS $(
    Вы мне, пожалуйста, пальцем ткните - какую программу использовать, чтобы
    "импортировать rdl файл, изменить его чтоб не требовал параметров (т.е. не использовал условия выборки в запросе) и выложить под другим именем".

    Я нашел построитель отчетов MS Report Builder, в нем открыл с сервера нужный мне отчет - получил ошибку: "Данный отчет не может быть открыт в построителе отчетов: Server data sources do not match RDL"

    Что я не так сделал?

    Дополняю.
    Через диспетчер отчетов можно посмотреть некий файл Microsoft.SystemCenter.Essentials.Report.HardwareInventory.rpdl
    Содержимое:
    <ParameterBlock xmlns="http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings" columns="1">
    <Controls xmlns="http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings">
    <Control type="Microsoft.SystemCenter.Essentials.Report.ParameterControl.ReportComputerPicker">
    <ReportParameters>
    <ReportParameter name="ComputerTargetId" binding="ComputerTargetId">
      <Prompt>Microsoft.SystemCenter.Essentials.Report.Library!Microsoft.SystemCenter.Essentials.Report.ParameterPrompt.Computer</Prompt> 
      </ReportParameter>
      </ReportParameters>
    <Properties>
    <Property name="MinHeight">
      <Value>200</Value> 
      </Property>
      </Properties>
      </Control>
      </Controls>
      </ParameterBlock>
    Насколько я понял, он отвечает за ту самую группу чекбоксов выбора параметров.
    Его, вроде, можно заменить - кнопка есть такая...
    Может тут копнуть?
    4 сентября 2009 г. 4:49
  • Вместе с RS обычно устанавливается Visual Studio, в нем можно изменять. Если уж совсем у тебя "никак" с RS кинь мне на почту данный файли sflash@mail15.com, посмотрю его, я думаю смогу помочь.
    4 сентября 2009 г. 5:21
  • А в общем из самого отчета только убрать параметры и в SQL выборке убрать условия в которых участвуют данные параметры.
    4 сентября 2009 г. 5:23
  • В списке диспетчера отчетов присутствуют две позиции:
    - Microsoft.SystemCenter.Essentials.Report.HardwareInventory
    - Microsoft.SystemCenter.Essentials.Report.HardwareInventory.rpdl

    Первая вызывает сам отчет, вторая некий xml-файл настроек - я его уже постил выше

    Как вытащить RDL не совсем понял.
    Нашел утилиту Reporting Services Scripter http://www.sqldbatips.com/showarticle.asp?ID=62
    Натравил ее на оба файла.
    Утилита, вроде, rdl выдернула и еще скрипт бакапа сгенерировала.
    Кинул тебе в почту.

    По сути задачи.
    Насколько я понимаю, надо не просто убрать выбор параметров.
    Надо чтоб репорт сам всегда выбирал ВСЕ параметры.
    Вроде того, чтобы выборка списка компьютеров, которая делается для диалога настройки репорта, сразу молча передавалась в отчет...
    4 сентября 2009 г. 7:39