Publish-AXReport выдает ошибку "Имя не может начинаться с символа" "

Запуск приведенного ниже сценария PowerShell (т. Е. Для развертывания всех отчетов SSRS для AX) выдает ошибку:

$axdllname = "Microsoft.Dynamics.AX.Framework.Management.dll"
$gacfolder = join-path $env:windir "assembly\GAC_MSIL"
$axdll = Get-ChildItem $gacfolder -Recurse -Name $axdllname
$axdll = join-path $gacfolder $axdll
import-module $axdll
Publish-AXReport -ReportName "*" -RestartReportServer

Сообщение об ошибке:

Publish-AXReport : Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 46, position 8.
At line:1 char:17
+ Publish-AXReport <<<<  -ReportName "*" -RestartReportServer
+ CategoryInfo          : ParserError: (:) [Publish-AXReport], XmlException
+ FullyQualifiedErrorId : Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 46, position 8.,M
icrosoft.Dynamics.AX.Framework.Management.Reports.PublishReportCommand

К сожалению, я не могу найти копию источника для Publish-AXReportтак что не могу копнуть глубже, откуда это исключение.

Вопрос

Кто-нибудь знает вероятную причину этой проблемы, или какие шаги я мог бы предпринять, чтобы раскрыть причину?

Обновить

Вместо запуска для всех отчетов, используя * Я попытался получить список всех отчетов (сам по себе работает нормально / не показывает отчетов с именами, начинающимися с пробела), а затем передал его в командлет publish-axreport; что теперь означает, что я вижу, какие отчеты приводят к этой ошибке.

Get-AxReport -ReportName * | Publish-AXReport

Теперь стало ясно, что существует несколько отчетов (хотя только небольшое подмножество доступных), которые выдают эту ошибку при публикации. Одним из них является AssetAcquisitionDocumentPL,

Кажется, что ошибки возникают только для отчетов со связанными сборками / всегда ошибочными для тех, у кого; никогда для тех без

Такая же проблема возникает при запуске Get-AXReportServerConfiguration | %{Publish-AXAssembly -id $_.ConfigurationId -vsprojectname 'assetAcquisitionDocumentPL.BusinessLogic'}

Запуск выше с -verbose Параметр switch показывает, что ошибка возникает в какой-то момент после копирования предположений из временного каталога в каталог bin SSRS.

2 ответа

Решение

Проблема решена в этой теме: https://community.dynamics.com/ax/f/33/t/190841

Первопричина

файл D:\Program Files\Microsoft SQL Server\MSRS11.AX2012_ENVIRON1\Reporting Services\ReportServer\rssrvpolicy.config содержал пробел между открытой скобкой и одним из имен элементов; т.е. < CodeGroup ...> вместо <CodeGroup ...>,

Исправление этой опечатки решило проблему.

(Я не знаю, как место попало в файл в первую очередь / сомневаюсь, я узнаю, если мы не увидим эту проблему снова).

Шаги, чтобы обнаружить причину

Если у кого-то есть аналогичная проблема с другой причиной, вот подробный вариант того, как мы обнаружили проблему:

  • Загрузите и извлеките монитор процесса: https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
  • Закройте все ненужные процессы / сервисы (чтобы уменьшить шум)
  • открыто Microsoft Dynamics AX 2012 Management Shell как администратор
  • Введите команду, которая генерирует ошибку (Publish-AXAssembly -id 'SSRSNLBAOS2' -vsprojectname 'assetAcquisitionDocumentPL.BusinessLogic' -verbose); выберите команду, которая выполняет наименьшую возможную работу, прежде чем выдавать ошибку (чтобы уменьшить шум).
  • Монитор открытых процессов
  • Запустите команду
  • В момент появления ошибки нажмите "Сохранить в мониторе процесса", чтобы сохранить сеанс в файл PML.
  • Закрыть монитор процесса и PowerShell
  • Откройте файл PML и отфильтруйте по имени процесса powershell.exe
  • Ищите интересные события. Для меня я подозревал XML-файл, поэтому посмотрел на события доступа к файлу в конце файла.
  • Так как раньше я сталкивался с похожими проблемами с файлами XML, сосредоточился на файлах XML (формат) / попытался проанализировать их, чтобы выяснить, какая ошибка ([xml][string](get-content 'd:\some\path\to\a\file.config')).
  • Когда файл не проанализировал / выдал ошибку о недопустимом пробеле, это был файл-виновник.
  • Затем я открыл файл в текстовом редакторе и благодаря подсветке синтаксиса сразу обнаружил ошибку.
  • Исправив файл, сохранив, а затем подтвердив, что это была единственная ошибка в файле, снова проанализировав, оставил файл в хорошем состоянии.
  • Затем я снова Publish-AXAssembly ... Команда (без запуска монитора процесса), чтобы увидеть, была ли проблема решена - это было.

Спасибо @BrandonWiese из сообщества Dynamics за его помощь.

Похоже, в названии отчета есть пробелы (Hexidecimal 0x20), которые вызывают ошибку. Пожалуйста, проверьте ваш сценарий и / или имена отчетов, чтобы удалить пробелы.

Линия 46, позиция 8

Другие вопросы по тегам