Рейтинг:0

Службы Reporting Services 2016: невозможно изменить или загрузить RDL (выдает исключение и дамп памяти)

флаг jp
Vjz

У меня есть SQL Reporting Services 2016 (13.0.5103.6) Стандартный собственный экземпляр, который не позволяет мне редактировать отчеты (RDL) с помощью построителя отчетов 15.0.19611.0 или загружать их через портал отчетов, он выдает исключение и создает дамп памяти. Я все еще могу выполнять/генерировать отчеты в экземпляре.

При открытии отчета в Report Builder я получаю сообщение об ошибке на стороне клиента:

При обработке отчетов произошла непредвиденная ошибка. --->
Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: при обработке отчетов произошла непредвиденная ошибка. --->
System.Exception: для получения дополнительных сведений об этой ошибке перейдите на сервер отчетов на локальном сервере или включите удаленные ошибки.

В журнале служб Reporting Services сервера соответствующая запись журнала ошибок:

processing!ReportServer_0-1!1ac8!12/23/2021-14:11:29:: e ОШИБКА: создание Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: , Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: непредвиденная ошибка при обработке отчетов. ---> System.ComponentModel.Win32Exception: система не может найти указанный путь
   в Microsoft.Win32.NativeMethods.CreateDirectory (строковый путь, SafeLocalMemHandle acl)
   в System.CodeDom.Compiler.TempFileCollection.CreateTempDirectoryWithAce (каталог String, идентификатор String)
   в System.CodeDom.Compiler.TempFileCollection.GetTempFileName(String tempDir)
   в System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
   в System.CodeDom.Compiler.TempFileCollection.AddExtension (String fileExtension, логическое значение keepFile)
   в System.CodeDom.Compiler.CodeCompiler.FromDomBatch (параметры CompilerParameters, CodeCompileUnit [] ea)
   в System.CodeDom.Compiler.CodeCompiler.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDomBatch (параметры CompilerParameters, CodeCompileUnit [] ea)
   в Microsoft.ReportingServices.RdlExpressions.VBExpressionCodeProvider.CompileAssemblyFromDomWithRetry (параметры CompilerParameters, CodeCompileUnitcompileUnit)
   в Microsoft.ReportingServices.RdlExpressions.ExprHostCompiler.InternalCompile (компиляция AppDomainTempAppDomain, логический отказ от разрешений)
   в Microsoft.ReportingServices.RdlExpressions.ExprHostCompiler.<>c__DisplayClass2.<Compile>b__0()
   в Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.<>c__DisplayClass1.<Run>b__0(состояние объекта)
   в System.Security.SecurityContext.runTryCode(объект userData)
   в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (код TryCode, код возврата CleanupCode, данные пользователя объекта)
   в System.Security.SecurityContext.Run (SecurityContext securityContext, обратный вызов ContextCallback, состояние объекта)
   в Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.Run (обратный вызов ContextBody)
   в Microsoft.ReportingServices.RdlExpressions.ExprHostCompiler.Compile (IExpressionHostAssemblyHolder expressionHostAssemblyHolder, компиляция AppDomainTempAppDomain, Boolean rejectPermissions, PublishingVersioning versioning)
   в Microsoft.ReportingServices.ReportPublishing.ReportPublishing.Phase3 (ParameterInfoCollection и параметры, Dictionary`2 и groupingExprCountAtScope)
   в Microsoft.ReportingServices.ReportPublishing.ReportPublishing.InternalCreateIntermediateFormat(Stream DefinitionStream, String& description, String& language, ParameterInfoCollection& параметры, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasSetsperims, Boolean& hasHytelinks data, ByHytelinks data, ByHytelinks
   в Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CompileOdpReport (PublishingContext reportPublishingContext, PublishingErrorContext errorContext, String& reportDescription, String& report
library!ReportServer_0-1!1ac8!12/23/2021-14:11:29::i ИНФОРМАЦИЯ: Пропущено создание файла дампа для ошибки ReportProcessingException, так как дамп с идентичной трассировкой стека (с сигнатурой 2668486527) уже создан .

Предполагая, что «svcssrs» — это ADUser, под которым работает экземпляр SSRS, используя Procmon (Sysinternals) для ReportingServicesService.exe, я заметил сбой операции CreateFile с PATH NOT FOUND с такими путями, как C:\Users\svcssrs\AppData\Local\Temp\abcdefgh

C:\Users\svcssrs\AppData\Local\Temp\ существует и находится под полным контролем пользователя 'svcssrs'.

RDL, с которым я работаю, представляет собой очень стандартный RDL-файл с Tablix, некоторые наборы данных MSSQL с использованием общего источника данных, несколько основных выражений SSRS, встроенные изображения (не связанные) и без встроенного кода VB или связанных сборок.

Я восстановил ключ шифрования SNK из резервной копии, а затем также изменил его без каких-либо изменений в поведении.

Как я могу решить эту проблему?

Рейтинг:0
флаг jp
Vjz

Проблема заключалась в том, что папка профиля пользователя C:\Пользователи\svcsrs был удален из файловой системы напрямую без предварительного удаления профиля пользователя через sysdm.cpl. Когда структура каталогов была воссоздана, есть подозрение, что другие элементы, связанные с профилем (например, раздел реестра?), не были созданы должным образом.

Проблема была решена:

  1. Остановка службы SSRS
  2. Удаление «поврежденного» профиля пользователя «svcssrs» через sysdm.cpl
  3. Запуск службы SSRS и предоставление ей возможности воссоздать профиль пользователя.
  4. Загрузка резервного ключа шифрования (SNK) обратно в экземпляр SSRS.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.