Показать сообщение отдельно
Старый 06.04.2023, 15:32   #17  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
268 / 829 (28) +++++++
Регистрация: 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
Просмотров: 41
Размер:	202.6 Кб
ID:	13559  

Последний раз редактировалось Товарищ ♂uatr; 06.04.2023 в 16:06.