Выполнение приведенного ниже сценария 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.
Проблема решена в этой теме: 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 ...>
.
Исправив эту опечатку, проблема была решена.
(Я не знаю, как пространство вообще попало в файл / сомневаюсь, что узнаю, если мы снова не увидим эту проблему).
Шаги по обнаружению причины
Если у кого-то возникнет аналогичная проблема с другой причиной, вот подробная версия того, как мы обнаружили проблему:
Microsoft Dynamics AX 2012 Management Shell
как администраторPublish-AXAssembly -id 'SSRSNLBAOS2' -vsprojectname 'assetAcquisitionDocumentPL.BusinessLogic' -verbose
); выберите команду, которая выполняет минимально возможную работу, прежде чем выдавать ошибку (для уменьшения шума).powershell.exe
[xml][string](get-content 'd:\some\path\to\a\file.config')
).Publish-AXAssembly ...
(без запущенного монитора процессов), чтобы узнать, была ли проблема решена.Спасибо @BrandonWiese из сообщества Dynamics за его помощь.
Похоже, у вас есть пробелы (шестнадцатеричный 0x20) в имени отчета, которое вызывает ошибку. Пожалуйста, проверьте свой сценарий и / или имена отчетов, чтобы удалить пробелы.
Строка 46, позиция 8