2012-06-01 3 views
2

Мы использовали отличный RSBuild для массовой загрузки отчетов в службы отчетов SQL Server (SSRS), но я не нашел способа массовой загрузки изображений. Использование диспетчера отчетов для загрузки одного изображения одновременно является глупым. Трудность состоит в том, что веб-служба SQL Server Reporting, используемая RSBuild, не поддерживает загрузку изображений. Есть ли способ массовой загрузки изображений в SSRS каким-то другим способом?Массовая загрузка изображений в SSRS

+0

Вы используете RSBuild только публикации отчетов? Или вы используете его для чего-нибудь еще?Я спрашиваю, потому что у нас много серверов в более низких средах, где нам нужно регулярно создавать отчеты и синхронизировать их. Вы бы рекомендовали использовать RSBuild в этом случае? – VoodooChild

+0

@ VoodooChild Мы используем RSBuild для публикации отчетов. Вы можете автоматизировать развертывание через RSBuild на своем сервере сборки. Используя TFS, я предполагаю, что это будет прорыв. Создайте шаблон процесса сборки для этой «регулярной основы» с расписанием. Создайте собственную сборку CustomProcess, используя элементы рабочего процесса, чтобы выполнить RSBuild, а затем загрузите изображения через пользовательскую сборку. Кроме того, вы можете просто вызвать тот же веб-сервис, что и RSBuild. –

ответ

1

Прежде всего вам необходимо загрузить одно изображение, чтобы вы прочитали содержимое таблицы Catalog для строки изображения, вставленной в базу данных 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 
1

Чтобы загрузить несколько изображений в решение SSRS, я использовал следующий метод. Это довольно легко Во-первых, создать новую папку изображений в Report Manager, где вы хотите, чтобы связать внешние изображения в отчете

  1. Open Visual Studio
  2. Перейдите в меню Файл
  3. Выберите Открыть
  4. Выберите Файл
  5. Создать новую папку под названием «образы», ​​или как
  6. Вставить все изображения нежелательны в этой папке
  7. N ой, перейдите в обозревателе решений
  8. Выберите «Отчеты» и щелкните правой кнопкой мыши
  9. Выберите Добавить, затем «существующий пункт»
  10. Перейдите в новую папку только что созданной
  11. Изменение Тип файла в нижней части, чтобы «все Файлы "
  12. Выберите все необходимое изображение. Быстрый доступ, чтобы выбрать все клавиши Ctrl плюс буква А
  13. Нажмите кнопку «добавить»
  14. Все изображения будут добавлены под любые отчеты в обозревателе решений
  15. Перейдите в меню «Отладка» и выберите решение Свойства, как показано здесь Solution Properties

  16. Временно изменить TargetReportFolder, чтобы соответствовать имя новой картинки папки, которые вы создали в диспетчере отчетов

  17. в обозревателе решений щелкните правой кнопкой мыши на всех изображениях (не отчеты)
  18. Выберите «Deploy»

Убедитесь, что развертывание было успешным в Visual Studio, то перейдите к папке диспетчера отчетов и проверки изображения есть!

НЕ ЗАБУДЬТЕ: Сбросьте TargetReportFolder на предыдущее значение!

Report Manager Image Folder

Смежные вопросы