Bei der Migration einer unserer Datenbanken von SQL Server 2012 (SP1, CU2) auf SQL Server 2014 (SP1) sind einige seltsame Probleme aufgetreten.
Eine der Abfragen, die in SQL Server 2012 innerhalb von Sekunden abgeschlossen werden, scheint in SQL Server 2014 zu hängen.
SELECT DISTINCT
src.[Id]
FROM
[stg].[BaseVolumes] src
JOIN
[tmp].[Dates] d ON src.[CalWeek_Nmbr] = d.[CalYrWkDense_Nmbr]
WHERE
EXISTS (SELECT *
FROM
(SELECT ctry.[ISOCode] AS [Mkt_Code]
, so.[Code] AS [SlsOrg_Code_AK]
, so.[DistributionChannelCode] AS [DistChnl_Code_AK]
, prd.[SupplierCode] AS [SKU_Code_AK]
, cl6.[Code] AS [CstHierLvl06_Code_AK]
, lp.[BaseDateID] AS [Dte_EK]
FROM [PM_APP].[edw].[BaseVolumeDayCurrent] lp
JOIN [PM_APP].[dbo].[Country] ctry ON lp.[CountryID] = ctry.[ID]
JOIN [PM_APP].[dbo].[SalesOrganisation] so ON lp.[SalesOrganisationID] = so.[ID]
JOIN [PM_APP].[dbo].[Product] prd ON lp.[ProductID] = prd.[ID]
JOIN [PM_APP].[dbo].[CustomerLevel6] cl6 ON lp.[CustomerID] = cl6.[ID]
WHERE
lp.[ModifiedByApp] = 1) lkp
WHERE
src.[Mkt_Code] = lkp.[Mkt_Code]
AND src.[SlsOrg_Code_AK] = lkp.[SlsOrg_Code_AK]
AND src.[DistChnl_Code_AK] = lkp.[DistChnl_Code_AK]
AND src.[SKU_Code_AK] = lkp.[SKU_Code_AK]
AND src.[CstHierLvl06_Code_AK] = lkp.[CstHierLvl06_Code_AK]
AND d.[Dte_EK] = lkp.[Dte_EK]
)
Reihenanzahl:
BaseVolumes: 23108
Dates: 18628
BaseVolumeDayCurrent: 108115503
Country: 249
SalesOrganisation: 29
Product: 18446
CustomerLevel6: 295
Wartestatistiken mit hohem CXPacket, aber es gibt eine hängende Aufgabe mit SOS_SCHEDULER_YIELD (Druck von sys.sysprocesses)
spid | blocked | waittime | lastwaittype | cpu | physical_io
76 | 0 | 9886044 | CXPACKET | 13902 | 31192
76 | 0 | 0 | SOS_SCHEDULER_YIELD | 9829719 | 83077
76 | 0 | 11248 | CXPACKET | 11110 | 0
.
.
.
Im Anhang finden Sie die Ausführungspläne von SQL Server 2012 und SQL Server 2014.
Jede Hilfe sehr geschätzt.
OPTION (MAXDOP 1)
? SowieOPTION (QUERYTRACEON 4199, QUERYTRACEON 9481)
. Alternativ können Sie die Plananleitung als letzte Option verwenden.