SQL Server Reporting Services(SSRS)へのレポートの一括アップロードに優れたRSBuildを使用しましたが、画像を一括アップロードする方法が見つかりません。レポートマネージャーを使用して一度に1つの画像をアップロードするのはばかげています。問題は、RSBuildが使用するSQL ServerReportingWebサービスが画像のアップロードをサポートしていないことです。他の方法でSSRSに画像を一括アップロードする方法はありますか?
2450 次
2 に答える
1
最初に1つの画像を手動でアップロードして、ReportServerデータベースに挿入された画像行のカタログテーブルの内容を読み取り、次のスクリプトでParentId、PolicyId、CreatedById、ModifiedByIdを使用する必要があります。
もちろん、これはアプリケーションにさらに抽象化され、より素晴らしいものになる可能性があります。
BEGIN TRAN
DECLARE @ReportFolderPath NVARCHAR(MAX)
DECLARE @ImageFolderPath NVARCHAR(MAX)
DECLARE @ImageFileName NVARCHAR(MAX)
DECLARE @ImageFullFileName NVARCHAR(MAX)
DECLARE @ImageFileExtension NVARCHAR(MAX)
DECLARE @ImageMime NVARCHAR(MAX)
DECLARE @ImageFullPath NVARCHAR(MAX)
DECLARE @ParentId NVARCHAR(MAX)
DECLARE @PolicyId NVARCHAR(MAX)
DECLARE @CreatedModifiedId NVARCHAR(MAX)
DECLARE @SqlToGetImageContent NVARCHAR(MAX)
DECLARE @ImageContent VARBINARY(MAX)
SET @ReportFolderPath = '/MyReports/'
SET @ImageFolderPath = 'C:\Users\jdoe\Desktop\Reports\images\'
SET @ImageFileName = 'logo'
SET @ImageFileExtension = 'bmp'
SET @ImageFullFileName = @ImageFileName + '.' + @ImageFileExtension
SET @ImageFullPath = @ImageFolderPath + @ImageFileName
SET @ParentId = '0AAFF0D8-0616-4E63-9B1D-EBF99153B443'
SET @PolicyId = '8632B07A-EE75-4097-970C-18BE9958F7A2'
SET @CreatedModifiedId = 'C6121121-D0E4-4B25-BD4E-177EDA709ECB'
SET @SqlToGetImageContent = 'SELECT @ImageContent = BulkColumn FROM Openrowset(Bulk '''+ @ImageFolderPath + @ImageFullFileName +''', Single_Blob) AS ImageData'
IF(@ImageFileExtension = 'jpg')
BEGIN
SET @ImageMime = 'image/jpeg'
END
ELSE
BEGIN
SET @ImageMime = 'image/' + @ImageFileExtension
END
EXEC SP_EXECUTESQL
@Query = @SqlToGetImageContent
, @Params = N'@ImageContent VARBINARY(MAX) OUTPUT'
, @ImageContent = @ImageContent OUTPUT
INSERT INTO [ReportServer$DEV2012].[dbo].[Catalog] (ItemID, [Path], Name, ParentID, [Type], Content, [Intermediate], SnapshotDataID, LinkSourceID, Property, [Description], Hidden, CreatedByID, CreationDate, ModifiedByID, ModifiedDate, MimeType, SnapshotLimit, Parameter, PolicyID, PolicyRoot, ExecutionFlag, ExecutionTime, SubType, ComponentID)
VALUES(
NEWID(),
@ReportFolderPath + @ImageFullFileName,
@ImageFullFileName,
@ParentId,
3,
(SELECT @ImageContent),
NULL,
NULL,
NULL,
'<Properties />',
NULL,
0,
@CreatedModifiedId,
GETDATE(),
@CreatedModifiedId,
GETDATE(),
@ImageMime,
NULL,
NULL,
@PolicyId,
0,
1,
NULL,
NULL,
NULL
)
COMMIT TRAN
于 2012-06-01T17:21:10.443 に答える
1
SSRSソリューションで複数の画像を読み込むには、次の方法を使用しました。とても簡単ですまず、レポート内の外部画像をリンクする新しい画像フォルダをレポートマネージャに作成します
- VisualStudioを開きます
- ファイルに移動
- [開く]を選択します
- ファイルを選択
- 「画像」などと呼ばれる新しいフォルダを作成します
- このフォルダに必要なすべての画像を貼り付けます
- 次に、ソリューションエクスプローラーに移動します
- 「レポート」を選択して右クリック
- [追加]、[既存のアイテム]の順に選択します
- 作成したばかりの新しいフォルダに移動します
- 下部のファイルタイプを「すべてのファイル」に変更します
- 必要なすべての画像を選択します。すべてを選択するためのショートカットは、Ctrlキーと文字Aです。
- 「追加」をクリックします
- すべての画像は、ソリューションエクスプローラーのレポートの下に追加されます
[デバッグ]メニューに移動し、ここに示すようにソリューションのプロパティを選択します ソリューションのプロパティ
レポートマネージャーで作成した新しい画像フォルダーの名前と一致するように、TargetReportFolderを一時的に変更します
- ソリューションエクスプローラーで、(レポートではなく)すべての画像を右クリックします
- 「デプロイ」を選択します
Visual Studioで展開が成功したことを確認してから、レポートマネージャーフォルダーに移動し、イメージがそこにあることを確認します。
忘れないでください:TargetReportFolderを前の値にリセットしてください!
于 2017-07-07T16:29:41.730 に答える