|
![]() |
#1 |
Участник
|
Вставил скрин с настройками. Не берусь сказать, что это какие-то оптимальные настройки, но у меня так работает. Если не успевает писать, можно наверное увеличивать параметры.
По поводу статей. Когда была такая проблема, где-то находил, что версия ОС поддерживается какая-то древняя по нынешним меркам. Там по моему и 2016 не поддерживается. Но есть практический опыт, на 2019 не работает. Сносишь 2019 ставишь 2016 и работает. Несколько раз такое наблюдал. Почему это так и как направить 2019 я не разбирался. |
|
|
За это сообщение автора поблагодарили: Logger (5). |
![]() |
#2 |
Участник
|
Привет.
При регистрации новой БД приложение выдает ошибку. Для меня является загадкой причина по которой не был сделан динамический вывод информации о причине ошибки, тем не менее... после кастомизации Microsoft.Dynamics.AX.Tracing.Data.dll пришло понимание, что текст ошибки звучит как: 'PK__TraceLin__9FC961DF25869641' is not a constraint. Удалось найти проблемный запрос к БД: X++: ALTER TABLE [dbo].[TraceLines] DROP CONSTRAINT [PK__TraceLin__9FC961DF25869641] Мой вопрос - насколько это обыденная проблема при работе с данным ПО? У меня может дитрибутив "битый"? |
|
![]() |
#3 |
Участник
|
Цитата:
Цитата:
![]() |
|
![]() |
#4 |
Участник
|
Совсем забыл...речь идет о 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". Документации официальной на тему правил генерации наименований не вижу, может кто-то владеет такой информацией? Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 11:54. |
|
![]() |
#5 |
Участник
|
Насколько понял принцип генерации - симбиоз 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 ) 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. |
|
![]() |
#6 |
Участник
|
Воспроизвел исходную ошибку данной темы.
Валится здесь: 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(); 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 Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 16:06. |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Masel
![]() По поводу статей. Когда была такая проблема, где-то находил, что версия ОС поддерживается какая-то древняя по нынешним меркам. Там по моему и 2016 не поддерживается. Но есть практический опыт, на 2019 не работает. Сносишь 2019 ставишь 2016 и работает. Несколько раз такое наблюдал. Почему это так и как направить 2019 я не разбирался.
|
|
Теги |
ax2009, trace parser |
|
|