EXEC dbo.sp_WhoIsActive @get_plans = 1, @get_outer_command = 1; It shows: blocking chains, query text, plan, tempdb usage, and more. Your flight recorder. Force good plans, revert bad ones.

-- Trace flag 1222 logs deadlocks to ERRORLOG DBCC TRACEON(1222, -1); Then analyze the graph. The most common fix: ensure all procedures access tables in the .

-- Running total per customer, ordered by date SELECT OrderId, CustomerId, OrderDate, Amount, SUM(Amount) OVER (PARTITION BY CustomerId ORDER BY OrderDate ROWS UNBOUNDED PRECEDING) AS RunningTotal, LAG(Amount, 1, 0) OVER (PARTITION BY CustomerId ORDER BY OrderDate) AS PreviousOrderAmount FROM Orders; Simplify date grouping.

-- Split: Get all orders for given list of IDs DECLARE @Ids VARCHAR(MAX) = '101,205,389,476'; SELECT o.* FROM Orders o INNER JOIN STRING_SPLIT(@Ids, ',') AS s ON o.OrderId = CAST(s.value AS INT); -- Aggregate: Build a comma-separated list of product names for a category SELECT CategoryId, STRING_AGG(ProductName, ', ') WITHIN GROUP (ORDER BY ProductName) AS Products FROM Products GROUP BY CategoryId;