Как читать историю отчетов SQL Server программно? - PullRequest
4 голосов
/ 28 апреля 2009

Вопрос к службам отчетов SQL - для SQL Server 2008.

Учитывая, что в службах отчетов SQL Server имеется планировщик, который можно использовать для планирования запуска отчетов SQL, кто-нибудь знает способ программно (через C #) прочитать историю отчета с сервера отчетов (а затем, возможно, получить результаты отчета)?

Таким образом, после еще нескольких копаний мне кажется, что мне нужно сгенерировать WSDL для сервера отчетов и затем получить доступ к информации с помощью объекта ReportingService - кто-нибудь делал это раньше (с 2008 года) и может предоставить некоторые указатели?

Примечание: выглядит (в соответствии с онлайновыми книгами по SQL 2008) адрес WSDL для SQL 2008:

http://server/reportserver/ReportService2005.asmx?wsdl

Если я смогу заставить это работать, я опубликую ответ с основными шагами по его реализации :) Это немного сбивает с толку, поскольку документация представляет собой смесь ссылок на SQL 2000 и SQL 2005!

Ответы [ 2 ]

2 голосов
/ 28 апреля 2009

ОК, так что я действительно понял, как выполнить эту, казалось бы, невозможную задачу.

Прежде чем начать, позвольте мне сказать, что если вы работаете с SQL Server Reporting Services 2008 (SSRS 08) и имеют (т. Е. У вас нет выбора), чтобы использовать что-то вроде Basic auth, вы ' Я только найду мир вреда с помощью заглушек и служб IIS на основе WCF. Я собираюсь позже рассказать о конфигурации.

Краткий ответ таков:

  • Connect (например, новый ReportingService2005 () или ReportingService2005SoapClient ())

Примечание: проще использовать старую (до WCF) службу ASMX, но не невозможно использовать новую версию CF. Аутентификация требует некоторой настройки. Есть также некоторые небольшие синтаксические изменения между версиями.

  • Найдите историю отчетов, которую вы ищете, например, ReportHistorySnapshot [] history = reportServer.ListReportHistory (@ "/ Reports / MyHandyReport");
  • Получение HistoryID из любого необходимого снимка (возвращается из ListHistoryReport)
  • Теперь используйте ReportViewer для рендеринга исторического отчета, так же, как и любой другой отчет, например ::

    .

    ReportViewer rv = new ReportViewer ();
    rv.ProcessingMode = ProcessingMode.Remote;
    rv.ServerReport.ReportServerUrl = новый Uri (@ "http://localhost/reportserver");
    rv.ServerReport.ReportPath = @ "/ Reports / MyHandyReport";
    rv.ServerReport.HistoryId = historyId;
    //...snip
    byte [] bytes = rv.ServerReport.Render («Excel», null, out mimeType, out кодировка, out out, out streamids, out out warning);

Примечание: вы также можете использовать вторую веб-службу WCF (ReportExecution2005.asmx? Wsdl), а также для выполнения отчета

1 голос
/ 28 апреля 2009

Ну, у него есть мыло и API расширяемости, возможно, их можно использовать?

...