2

我们使用优秀的RSBuild将报告批量上传到 SQL Server Reporting Services (SSRS),但我找不到批量上传图像的方法。使用报告管理器一次上传一张图像是愚蠢的。困难在于 RSBuild 使用的 SQL Server Reporting Web 服务不支持图像上传。有没有办法以其他方式将图像批量上传到 SSRS?

4

2 回答 2

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 解决方案中加载多个图像,我使用了以下方法。这很简单首先,在报表管理器中创建一个新的图像文件夹,您要在其中链接报表中的外部图像

  1. 打开 Visual Studio
  2. 导航到文件
  3. 选择打开
  4. 选择文件
  5. 创建一个名为“图像”或其他的新文件夹
  6. 将所需的所有图像粘贴到此文件夹中
  7. 现在,导航到解决方案资源管理器
  8. 选择“报告”并右键单击
  9. 选择添加,然后选择“现有项目”
  10. 导航到刚刚创建的新文件夹
  11. 将底部的文件类型更改为“所有文件”
  12. 选择所有需要的图像。全选快捷键是 Ctrl 键加上字母 A
  13. 点击“添加”
  14. 所有图像都将添加到解决方案资源管理器中的任何报告下方
  15. 导航到“调试”菜单并选择解决方案属性,如此处所示 解决方案属性

  16. 临时更改 TargetReportFolder 以匹配您在报表管理器中创建的新图像文件夹的名称

  17. 在解决方案资源管理器中,右键单击所有图像(不是报告)
  18. 选择“部署”

在 Visual Studio 中验证部署是否成功,然后导航到 Report Manager 文件夹并验证图像是否存在!

不要忘记:将 TargetReportFolder 重置为之前的值!

报表管理器图像文件夹

于 2017-07-07T16:29:41.730 回答