2009-04-28 12 views
4

SQL Reporting Services質問 - SQL Server 2008の場合SQL Serverのレポート履歴をプログラムによって読み取る方法は?

SQL Server Reporting ServicesはSQLレポートの実行をスケジュールするために使用できるスケジューラを備えているため、誰でもプログラムで(C#経由で)レポートサーバーからレポートの履歴を取得し(おそらくレポートの結果を取得する)

レポートサーバー用のWSDLを生成し、ReportingServiceオブジェクトを使用して情報にアクセスする必要があるようです。誰もこれを(2008年以前に)行い、いくつかのポインタを提供できますか?

注:

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

私はこの作業を得ることができる場合、私は基本的な手順にして答えを投稿します:SQL 2008のためのWSDLアドレスがある(2008のオンラインブックSQLによる)のように見えますそれを実装する:)ドキュメントはSQL 2000とSQL 2005のリファレンスが混在しているので、ちょっと混乱します!

+0

1を二WCF Webサービス(?ReportExecution2005.asmx WSDL)を使用することができます。 – Sung

答えて

2

[OK]を、私は実際にこのように不可能な不可能な仕事を達成する方法を考え出しました。

はじめに、SQL Server Reporting Services 2008(SSRS 08)および)を使用している場合(つまり、選択肢がない)、基本認証のようなものを使用すると、 WCFベースのService Stubs & IISで傷ついている世界。私は設定について後でブログに行くつもりです。

次のように短い答えは次のとおりです。

  • 接続(例えば新しいReportingService2005()またはReportingService2005SoapClient())

注:これは、古い(前WCF)ASMXサービスを使用する方が簡単です新しいCFバージョンを使用することは不可能ではありません。認証には何らかの設定が必要です。バージョン間には若干の文法的な変更もあります。

  • あなたが探しているレポート履歴を検索します。 ReportHistorySnapshot [] history = reportServer.ListReportHistory(@ "/ Reports/MyHandyReport");
  • あなたはずっとあなたでしょう、他のレポート、例えばのように、歴史的なレポートを表示するレポートビューアーを使用し、
  • 今(ListHistoryReportから返される)するスナップショット方からHistoryIDを取得します。

    のReportViewer RV =新しいですReportViewer();
    rv.ProcessingMode = ProcessingMode.Remote;
    rv.ServerReport.ReportServerUrl = new Uri(@ "http://localhost/reportserver");
    rv.ServerReport.ReportPath = @ "/ Reports/MyHandyReport";
    rv.ServerReport.HistoryId = historyId;
    //...snip
    バイト[] bytes = rv.ServerReport。レンダリング( "Excel"、null、out mimeType、outエンコーディング、out延長、out streamids、out warnings);

注:また、私はこれも可能であったことさえ知らなかったレポートの実行のためにも

1

まあそれはsoapと拡張性APIを持っています、おそらくそれらは使用できますか?

+0

うん、私は実際にその道にあった:)それは2005年と2008年の間に変更されたように見えない – RobS

関連する問題