AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2023, 19:30   #1  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Вставил скрин с настройками. Не берусь сказать, что это какие-то оптимальные настройки, но у меня так работает. Если не успевает писать, можно наверное увеличивать параметры.
По поводу статей. Когда была такая проблема, где-то находил, что версия ОС поддерживается какая-то древняя по нынешним меркам. Там по моему и 2016 не поддерживается. Но есть практический опыт, на 2019 не работает. Сносишь 2019 ставишь 2016 и работает. Несколько раз такое наблюдал. Почему это так и как направить 2019 я не разбирался.
Изображения
 
За это сообщение автора поблагодарили: Logger (5).
Старый 06.04.2023, 03:05   #2  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
324 / 903 (31) +++++++
Регистрация: 23.10.2012
Привет.
При регистрации новой БД приложение выдает ошибку. Для меня является загадкой причина по которой не был сделан динамический вывод информации о причине ошибки, тем не менее... после кастомизации Microsoft.Dynamics.AX.Tracing.Data.dll пришло понимание, что текст ошибки звучит как: 'PK__TraceLin__9FC961DF25869641' is not a constraint.
Удалось найти проблемный запрос к БД:
X++:
ALTER TABLE [dbo].[TraceLines] DROP CONSTRAINT [PK__TraceLin__9FC961DF25869641]
Понятное дело, что "игра называется угадай, а что в БД на самом деле", а там "PK__TraceLin__9FC961DF4E1C95DE".
Мой вопрос - насколько это обыденная проблема при работе с данным ПО? У меня может дитрибутив "битый"?
Миниатюры
Нажмите на изображение для увеличения
Название: traceparserdblog.jpg
Просмотров: 93
Размер:	136.3 Кб
ID:	13557  
Изображения
 
Старый 06.04.2023, 09:20   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Товарищ ♂uatr Посмотреть сообщение
Мой вопрос - насколько это обыденная проблема при работе с данным ПО? У меня может дитрибутив "битый"?
Еще бы версию Trace Parser-а привести для понимания...
Цитата:
Сообщение от Товарищ ♂uatr Посмотреть сообщение
При регистрации новой БД приложение выдает ошибку: 'PK__TraceLin__9FC961DF25869641' is not a constraint. В БД на самом деле "PK__TraceLin__9FC961DF4E1C95DE".
Не встречал при регистрации новой БД Trace Parser ошибок, кроме связанных с отсутствием права create database на сервере. В целом же после ковыряний с D365FO и ее глючной синхронизацией я лично решил для себя, что если приложение хочет дропнуть в базе что-то, чего там нет, то проще дать ему это дропнуть: создать недостающий constraint с нужным именем (любого содержания), или поле, или индекс, или что там приложение не может найти, но хочет изничтожить. Пусть дропнет и не мотает нервы
Старый 06.04.2023, 10:02   #4  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
324 / 903 (31) +++++++
Регистрация: 23.10.2012
Совсем забыл...речь идет о Version 6.0.947.9033.

Да, создать нужный объект мне тоже хотелось и это было бы решением, если бы (много бы) утилита умела валидировать целостность БД и продолжать выполнение с момента предыдущего прерывания. У нее 2 состояния - создать новую БД или использовать существующую.

Проблемы, на самом деле две:
Первая - в коде исполняемого файла, в функции Microsoft.Dynamics.AX.Tracing.TraceParser.Presentation.DatabaseRegister.CollectDatabaseRegistrationConnectionString. Изображение прикрепил, стрелками синего цвета отмечен путь в случае когда БД есть, серого - БД нет.
Вторая - можно вызвать "Microsoft.Dynamics.AX.Tracing.Data.DatabaseHelper.CreateDatabase" через то же консольное приложение, но там "затык" уже в самих запросах к БД. Первым запросом идет "create database" - снова "свалится", БД же есть к этому моменту.

Вижу 2.5 путей решения:
1. Разобраться с генерацией названия PK;
2. Видоизменить проблемный код в библиотеке;
2.5. Запустить скрипты по подготовке БД самостоятельно.
Понятное дело, что 1-ый вариант вызывает интерес. Для эксперимента взял другую машину (SQL другой, ОС другая) результат - "PK__TraceLin__9FC961DFECC085B4". Документации официальной на тему правил генерации наименований не вижу, может кто-то владеет такой информацией?
Миниатюры
Нажмите на изображение для увеличения
Название: traceparsercodeswitch.jpg
Просмотров: 73
Размер:	173.6 Кб
ID:	13558  

Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 11:54.
Старый 06.04.2023, 12:16   #5  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
324 / 903 (31) +++++++
Регистрация: 23.10.2012
Насколько понял принцип генерации - симбиоз sessionID и timestamp.

Спасибо Logger'у, теперь у меня есть с чем сравнить и просто "повезло нарваться" на "правильную" версию, видимо она устарела в современных реалиях (SQL server).
В 6.0.947.9033:
X++:
ALTER TABLE [dbo].[QueryBindParameters] DROP CONSTRAINT [FK_QueryBindParameters_TraceLines]

    ALTER TABLE [dbo].[XppParameters] DROP CONSTRAINT [FK_XppParameters_TraceLines]

    ALTER TABLE [dbo].[TraceLines] DROP CONSTRAINT [PK__TraceLin__9FC961DF25869641]

    ALTER TABLE [dbo].[TraceLines] ADD  CONSTRAINT [PK__TraceLin__9FC961DF25869641] PRIMARY KEY NONCLUSTERED
    (
    [TraceLineId] ASC
    )
В 6.3.164.0:
X++:
ALTER TABLE [dbo].[QueryBindParameters] DROP CONSTRAINT [FK_QueryBindParameters_TraceLines]

ALTER TABLE [dbo].[XppParameters] DROP CONSTRAINT [FK_XppParameters_TraceLines] 

declare @tempPkName nvarchar(128);

SELECT @tempPkName = idx.name
FROM
	sys.indexes idx
	INNER JOIN sys.tables tbl
		ON idx.object_id = tbl.object_id
WHERE
	tbl.name = 'TraceLines'
	AND idx.is_primary_key = 1

exec(
'ALTER TABLE [dbo].[TraceLines] DROP CONSTRAINT ' + @tempPkName);

exec('ALTER TABLE [dbo].[TraceLines] ADD  CONSTRAINT '+ @tempPkName + ' PRIMARY KEY NONCLUSTERED 
(
	[TraceLineId] ASC
)');

Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 13:49.
Старый 06.04.2023, 15:32   #6  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
324 / 903 (31) +++++++
Регистрация: 23.10.2012
Воспроизвел исходную ошибку данной темы.
Валится здесь:
X++:
			IQueryable<XppAggregate> source = (from t in entities.TraceLines
			join m in entities.MethodNames on t.MethodHash equals (long?)m.MethodHash
			where t.UserSessionProcessId >= startSessionId && t.UserSessionProcessId <= endSessionId
			group t by new
			{
				t.MethodHash,
				m.Name
			} into topXppGroup
			orderby topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveDurationNano) descending
			select new XppAggregate
			{
				Name = topXppGroup.Key.Name,
				Count = topXppGroup.Count(),
				InclusiveTotal = (double)topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveDurationNano) / 10000.0,
				ExclusiveTotal = (double)topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.ExclusiveDurationNano) / 10000.0,
				InclusiveRpcTotal = topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveRpc),
				DatabaseCallsTotal = topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.DatabaseCalls)
			}).Take(top);
			List<XppAggregate> list = source.ToList();
Как SQL оно выглядит так:
X++:
exec sp_executesql N'SELECT TOP (5) 
[Project1].[C5] AS [C1], 
[Project1].[Name] AS [Name], 
[Project1].[C2] AS [C2], 
[Project1].[C6] AS [C3], 
[Project1].[C7] AS [C4], 
[Project1].[C3] AS [C5], 
[Project1].[C4] AS [C6]
FROM ( SELECT 
	[GroupBy1].[A1] AS [C1], 
	[GroupBy1].[A2] AS [C2], 
	[GroupBy1].[A5] AS [C3], 
	[GroupBy1].[A6] AS [C4], 
	[GroupBy1].[K2] AS [Name], 
	1 AS [C5], 
	 CAST( [GroupBy1].[A3] AS float) / cast(10000 as float(53)) AS [C6], 
	 CAST( [GroupBy1].[A4] AS float) / cast(10000 as float(53)) AS [C7]
	FROM ( SELECT 
		[Filter1].[K1] AS [K1], 
		[Filter1].[K2] AS [K2], 
		SUM([Filter1].[A1]) AS [A1], 
		COUNT([Filter1].[A2]) AS [A2], 
		SUM([Filter1].[A3]) AS [A3], 
		SUM([Filter1].[A4]) AS [A4], 
		SUM([Filter1].[A5]) AS [A5], 
		SUM([Filter1].[A6]) AS [A6]
		FROM ( SELECT 
			[Extent1].[MethodHash] AS [K1], 
			[Extent2].[Name] AS [K2], 
			CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[InclusiveDurationNano] END AS [A1], 
			1 AS [A2], 
			CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[InclusiveDurationNano] END AS [A3], 
			CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[ExclusiveDurationNano] END AS [A4], 
			CASE WHEN ([Extent1].[IsRecursive] = 1) THEN 0 ELSE [Extent1].[InclusiveRpc] END AS [A5], 
			CASE WHEN ([Extent1].[IsRecursive] = 1) THEN 0 ELSE [Extent1].[DatabaseCalls] END AS [A6]
			FROM  [dbo].[TraceLines] AS [Extent1]
			INNER JOIN [dbo].[MethodNames] AS [Extent2] ON [Extent1].[MethodHash] = [Extent2].[MethodHash]
			WHERE ([Extent1].[UserSessionProcessId] >= @p__linq__0) AND ([Extent1].[UserSessionProcessId] <= @p__linq__1)
		)  AS [Filter1]
		GROUP BY [K1], [K2]
	)  AS [GroupBy1]
)  AS [Project1]
ORDER BY [Project1].[C1] DESC',N'@p__linq__0 int,@p__linq__1 int',@p__linq__0=26,@p__linq__1=26
Ну и очень хорошо воспроизводится - это проблема данных в БД. Предположу, что причиной является конкретный лог трассировки.
Миниатюры
Нажмите на изображение для увеличения
Название: parser.jpg
Просмотров: 80
Размер:	202.6 Кб
ID:	13559  

Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 16:06.
Старый 06.04.2023, 22:45   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,983 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Masel Посмотреть сообщение
По поводу статей. Когда была такая проблема, где-то находил, что версия ОС поддерживается какая-то древняя по нынешним меркам. Там по моему и 2016 не поддерживается. Но есть практический опыт, на 2019 не работает. Сносишь 2019 ставишь 2016 и работает. Несколько раз такое наблюдал. Почему это так и как направить 2019 я не разбирался.
А вы не пробовали запускать приложение в режиме совместимости с предыдущими версиями Windows ? Может поможет снизить частоту возникновения проблем. Аос можно как консольное приложение запускать и прописать для него соответствующую совместимость.
Теги
ax2009, trace parser

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: KB3163813 CU12 Known Issue – Incorrect Posting amounts – Shipment Packing slip posting Blog bot DAX Blogs 0 13.03.2017 18:11
dynamicscpm: Management Reporter bugs now available in LCS Issue Search Blog bot DAX Blogs 0 13.06.2015 00:14
Странное поведение при закрытии склада-ошибка в коде? Aquarius DAX: Программирование 11 27.06.2013 13:37
axinthefield: Choosing a Single Deployment or Multiple Deployments of AX2009 Blog bot DAX Blogs 0 15.06.2011 03:25

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:53.