Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssrs 2008 批量上传图像到SSRS_Ssrs 2008_Reporting Services_Reportingservices 2005 - Fatal编程技术网

Ssrs 2008 批量上传图像到SSRS

Ssrs 2008 批量上传图像到SSRS,ssrs-2008,reporting-services,reportingservices-2005,Ssrs 2008,Reporting Services,Reportingservices 2005,我们使用了优秀的将报告批量上传到SQLServerReportingServices(SSRS),但我发现没有办法批量上传图像。使用报表管理器一次上载一个图像是愚蠢的。困难在于RSBuild使用的SQL Server Reporting web服务不支持图像上载。有没有其他方式将图像批量上传到SSR 首先需要手动上载一个图像,以便读取它插入到ReportServer数据库中的图像行的目录表的内容,并在以下脚本中使用ParentId、PolicyId、CreatedById和ModifiedByI

我们使用了优秀的将报告批量上传到SQLServerReportingServices(SSRS),但我发现没有办法批量上传图像。使用报表管理器一次上载一个图像是愚蠢的。困难在于RSBuild使用的SQL Server Reporting web服务不支持图像上载。有没有其他方式将图像批量上传到SSR

首先需要手动上载一个图像,以便读取它插入到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
开始传输
声明@ReportFolderPath NVARCHAR(最大值)
声明@ImageFolderPath NVARCHAR(最大值)
声明@ImageFileName-NVARCHAR(最大值)
声明@ImageFullFileName NVARCHAR(最大值)
声明@ImageFileExtension-NVARCHAR(最大值)
声明@ImageMime NVARCHAR(最大值)
声明@ImageFullPath NVARCHAR(最大值)
声明@ParentId NVARCHAR(最大值)
声明@PolicyId NVARCHAR(最大值)
声明@CreatedModifiedInvarchar(最大值)
声明@SqlToGetImageContent-NVARCHAR(最大值)
声明@ImageContent VARBINARY(最大值)
设置@ReportFolderPath='/MyReports/'
SET@ImageFolderPath='C:\Users\jdoe\Desktop\Reports\images\n
设置@ImageFileName='logo'
SET@ImageFileExtension='bmp'
设置@ImageFullFileName=@ImageFileName+'.++@ImageFileExtension
设置@ImageFullPath=@ImageFolderPath+@ImageFileName
SET@ParentId='0AAFF0D8-0616-4E63-9B1D-EBF99153B443'
SET@PolicyId='8632B07A-EE75-4097-970C-18BE9958F7A2'
SET@CreatedModifiedId='C6121121-D0E4-4B25-BD4E-177EDA709ECB'
设置@SqlToGetImageContent='从Openrowset(大容量“”+@ImageFolderPath++@ImageFullFileName++“”,单个\u Blob)中选择@ImageContent=BulkColumn作为ImageData'
IF(@ImageFileExtension='jpg')
开始
设置@ImageMime='image/jpeg'
结束
其他的
开始
设置@ImageMime='image/'+@ImageFileExtension
结束
EXEC SP_EXECUTESQL
@Query=@SqlToGetImageContent
,@Params=N'@ImageContent-VARBINARY(最大)输出'
,@ImageContent=@ImageContent输出
插入到[ReportServer$DEV2012].[dbo].[Catalog](ItemID,[Path],Name,ParentID,[Type],Content,[Intermediate],SnapshotDataID,LinkSourceID,Property,[Description],隐藏,CreatedByID,CreationDate,ModifiedByID,ModifiedDate,MimeType,快照限制,参数,PolicyID,PolicyRoot,ExecutionFlag,ExecutionTime,SubType,ComponentID)
价值观(
NEWID(),
@ReportFolderPath+@ImageFullFileName,
@ImageFullFileName,
@父ID,
3.
(选择@ImageContent),
无效的
无效的
无效的
'',   
无效的
0,  
@CreatedModifiedWide,
GETDATE(),
@CreatedModifiedWide,
GETDATE(),
@ImageMime,
无效的
无效的
@PolicyId,
0,  
1.
无效的
无效的
无效的
)
提交传输

要在SSRS解决方案中加载多个图像,我使用了以下方法。这很容易 首先,在报表管理器中创建一个新的“图像”文件夹,以便链接报表中的外部图像

  • 开放式Visual Studio
  • 导航到文件
  • 选择“打开”
  • 选择文件
  • 创建一个名为“Images”的新文件夹
  • 粘贴此文件夹中所需的所有图像
  • 现在,导航到解决方案资源管理器
  • 选择“报告”并右键单击
  • 选择添加,然后选择“现有项目”
  • 导航到刚创建的新文件夹
  • 将底部的文件类型更改为“所有文件”
  • 选择所需的所有图像。选择全部的捷径是Ctrl键加上字母A
  • 单击“添加”
  • 所有图像都将添加到解决方案资源管理器中任何报告的下方
  • 导航到“调试”菜单并选择解决方案属性,如图所示

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

  • 在解决方案资源管理器中,右键单击所有图像(而不是报告)
  • 选择“部署”
  • 在Visual Studio中验证部署是否成功,然后导航到Report Manager文件夹并验证图像是否存在

    别忘了:将TargetReportFolder重置为以前的值


    您是否使用RSBuild仅发布报告?或者你在用它做别的什么?我这样问是因为我们在较低的环境中有许多服务器,需要定期部署报告并保持同步。您建议在这种情况下使用RSBuild吗?@VoodooChild我们使用RSBuild仅用于发布报告。您可以通过构建服务器上的RSBuild自动化部署。使用TFS,我认为它将是向前的。为此“定期基础”制作一个包含计划的构建过程模板。制作自己的CustomProcess程序集,使用工作流项执行RSBuild,然后通过自定义程序集上载图像。另外,您可以调用RSBuild所调用的web服务。