6

PowerShell を使用して、SQL Server 2008 で SQL Server Reporting Services の rdl ファイルをスクリプト化することはできますか? もしそうなら、誰かがこれを行うコード例を提供できますか? これは、サードパーティ ツールを使用して、ビジネス インテリジェンス部門以外のビジネス ユーザーが作成した RDL ファイルをスクリプト化する代わりに便利です。

「スクリプトアウト」という用語の明確化

「スクリプト出力」とは、サーバー上の各レポートの基になる RDL ファイルを自動的に生成したいという意味です。たとえば、BIDS でレポートをコーディングすると、RDL ファイルが生成されます。ファイルをサーバーに展開すると、ファイルは何らかの方法で SQL Server ReportServer データベースにインポートされ、別の物理 RDL ファイルではなくなります。サーバーからすべてのレポートを RDL ファイル形式で抽出したいと考えています。

RSScripter ツールを使用してレポートを RDL ファイルとして抽出したので、PowerShell 以外のツールを使用しても可能であることがわかっています。PowerShell を使用してそれが可能かどうかを具体的に知りたいです。可能であれば、それを行うためのコードのサンプルを入手してください。

レポートの RDL バージョンを生成する理由の明確化

レポートを RDL ファイルに「スクリプト化」することが重要なのはなぜですか? RDL ファイルをソース管理システムに 1 晩に 1 回チェックインして、ビジネス インテリジェンス部門以外のユーザーが作成したすべてのレポートを追跡したいと考えています。BIDS でレポートを作成して以来、私の部門で生成されたすべてのレポートを追跡していますが、オンラインのレポート ビルダー ツールで作成されたレポートのバージョン履歴を追跡できません。

他のものではなく PowerShell を使用する理由の明確化

  1. 好奇心。2 つの方法 (API または RSSCripter) のいずれかで解決できることがわかっている問題があり、3 番目の方法で解決できるかどうかを知りたいです。

  2. PowerShell を介して問題解決ツールベットを拡張する機会。PowerShell を使用してこの問題を解決することは、PowerShell を使用して、まだ解決しようとしていない他の問題を解決する方法を学習するための基礎を提供する可能性があります。

  3. PowerShell は、私のチームと私にとって理解しやすいものです。一般に、チーム メンバーと私は、.NET コードよりも PowerShell コードを簡単に理解できます。この問題は、API を使用した .NET コードで解決できることはわかっていますが (これが RSScripter の動作です)、PowerShell スクリプトをコーディングして維持する方が簡単だと思います。また、PowerShell スクリプトはおそらく .NET コードを使用することになると思いますが、PowerShell が何らかの方法でレポートをオブジェクトのように処理できるようになっていることを願っています。そのため、Reporting Services API を使用してファイルを抽出する必要はありません。

  4. RSScripter はまだ 2008 をサポートしていません。以前は、RSScript を使用してレポートのスクリプトを作成していました。残念ながら、2008 にはまだ対応していないようです。これは、API に対してコードを記述しなければならないことを意味します。それが、自動化された無人の方法でファイルを抽出する方法を知っていることを示す唯一の方法だからです。

4

4 に答える 4

5

少し遅れましたが、どうぞ

この PowerShell スクリプト: 1. レポート サーバーに接続します。 2. レポート サーバーと同じフォルダー構造を作成します。 3. すべての SSRS レポート定義 (RDL) ファイルをそれぞれのフォルダーにダウンロードします。

https://sqlbelle.wordpress.com/2011/03/28/how-to-download-all-your-ssrs-report-definitions-rdl-files-using-powershell/

于 2011-03-29T06:45:56.517 に答える
4

PowerShell は、このためのネイティブな PowerShell 風の機能を提供していません。これを PowerShell で実行できるのは (前の回答で述べたように)、PowerShell が基になるフレームワーク クラスにアクセスできるからです。前の回答へのコメントで指摘したように、C# や VB で API を使用するのと同じです。

SQL Server チームは、PowerShell 固有のものについてはまだあまり提供していません。彼らは主に、「スクリプト言語」として .NET と T-SQL に依存しています。

于 2009-01-03T19:38:02.153 に答える
2

ReportServer.dbo.Catalog の Content 列に Image 形式の定義が含まれていることに気付きました。次のコードを記述して、読み取り可能なテキストに変換しました。

SELECT CONVERT(VARCHAR(MAX), CONVERT(NVARCHAR(MAX), CONVERT(XML, CONVERT(VARBINARY(MAX), Content))))
FROM [ReportServer].[dbo].[Catalog]
WHERE Type = 2

上記のコードにより、フラット ファイルへの結果の書き込みを自動化し、そのファイルをバージョン管理システムにインポートできるようになりました。

于 2010-07-07T21:26:12.367 に答える
0

.Net をサポートするものはすべてこれを行うことができます。API ドキュメントへのリンクについては、この Stackoverflow の投稿を参照してください。プロセスは実際にはかなり単純です。API には、.rdl ファイルをアップロードまたはダウンロードするための呼び出しがあります。

レポート モデルは、もう少し手間がかかります。新しいレポート モデルをアップロードする場合は、依存レポートを取得し (再び API 呼び出し)、データ ソースに再接続する必要があります。繰り返しますが、ひどく精力的ではありません。

Powershell はこれをうまく行うはずです。私は、IronPython と C# を使ってこれをさまざまに行ってきました。rs.exe というツールもあり、vb.net スクリプトを取得し、いくつかのインクルードを使用してトップとテールを取り、舞台裏でコンパイルして実行します。

于 2009-01-03T18:18:27.743 に答える