вторник, 13 декабря 2011 г.

SCSM Ошибка "Недопустимая длина массива знаков Base-64." при добавлении отчёта в "избранные отчёты"

Столкнулся со странной ошибкой при попытке добавить отчёт SCSM в избранные отчёты. Настроил параметры отчёта, нажал добавить в "Избранные отчёты". Назвал отчёт следующим образом "Все инциденты находящиеся в работе с понедельника текущей недели по сегодняшний день" и нажал "ОК".
Отчёт добавился в избранные, но при переходе на вкладку столкнулся с ниже приведённой ошибкой.

Дата: 08.12.2011 10:06:11
Приложение: System Center Service Manager
Версия приложения: 7.0.6555.0
Серьезность: Ошибка
Сообщение:
Недопустимая длина массива знаков Base-64.
System.FormatException: Недопустимая длина массива знаков Base-64.
в System.Convert.FromBase64String(String s)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapterBase.TryGetInstanceId(IDictionary`2 parameters, String& instanceId)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.EnterpriseFavoriteReportAdapter.GetDataFromSRS(ServiceManagerReportingGroup reportingGroup, AdapterQueryParameters queryParameters)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapter`1.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetDataFromAdapter(Uri adapterAddress, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetNode(Uri providerRoot, NavigationModelNodeBase parentNode, String nodeName)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.DataModel.QueryQueue.StartExecuteQuery(Object sender, ConsoleJobEventArgs e)
в Microsoft.EnterpriseManagement.ServiceManager.UI.Console.ConsoleJobExceptionHandler.ExecuteJob(IComponent component, EventHandler`1 job, Object sender, ConsoleJobEventArgs args)

Анамнез:
  • Избранные отчёты с англ. наименованиями успешно создаются, добавляются во вкладку избранные и успешно работают;
  • Проблема с отчётами только с русскоязычным наименованием;
  • Проверил Collation SQL Server и БД Cyrillic_General_100_CI_AS, а Collation SSRSLatin_General_CI_AS_KS_WS (SSRS устанавливался в режиме Native в конфигурации по-молчанию);
Причина:
Не поддерживаются наименования отчётов на русском языке длиннее 20 символов (по крайне мере доказал на своем опыте 32, 28, 23 не вошло - ошибку см. выше.);

Что делать:
На сервере, где установлен DW заходим в консоль управления SQL сервер, находим в базе DWStagingAndConfig таблицу dbo.FavoriteReport.

В ней выполняем запрос:
SELECT * 
FROM DWStagingAndConfig.dbo.FavoriteReport
WHERE DWStagingAndConfig.dbo.FavoriteReport.FavoriteReportName='Имя_отчёта_вызывающего_ошибку'

Находим в результатах поле FavoriteReportId и выполняем следующий запрос:
DELETE FROM DWStagingAndConfig.dbo.FavoriteReport
WHERE DWStagingAndConfig.dbo.FavoriteReport.FavoriteReportId=' FavoriteReportId_отчёта_вызывающего_ошибку';


Обновляем закладку избранные отчёты (F5): отчёт вызывающий ошибку исчез.
Ну и создавать короткие русскоязычные имена для отчётов. Кстати, подобных проблема с англ. языком я так и не заметил.

http://social.technet.microsoft.com/Forums/ru-RU/infrastructureru/thread/9f094565-7ad5-4511-a7fc-31f9ebe0f069

Комментариев нет:

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

Уважаемый коллега, Ваш комментарий пройдёт модерацию, чтобы избежать спам-атак в ленте. Спасибо за понимание.