Applies ToSQL Server 2008 R2 Standard SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web

Microsoft distribuerar Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) eller Microsoft SQL Server 2012-korrigeringar i en nedladdnings bar fil. Eftersom de här korrigeringarna är kumulativa innehåller alla nya versioner alla snabb korrigeringar och alla säkerhets uppdateringar som ingick i den tidigare versionen av SQL Server 2008 R2 Service Pack 1 (SP1) eller SQL Server 2012.

Symptom

Tänk på följande: Du kör en fråga i Microsoft SQL Server 2008 R2 eller i Microsoft SQL Server 2012 och med Query för optimering skapas en körnings plan som innehåller den översta operatorn. I det här scenariot kan det ta lång tid att köra frågan. Du kör exempelvis en fråga som ser ut så här:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Den här frågan avser två kopplingar. En koppling är mellan TableB och TableC. (Detta lyder under förekomst av predikatet IN.) Den andra kopplingen är mellan tabell A och resultatet från den första kopplingen. IN-predikatet returnerar sant om frågan returnerar minst en rad som uppfyller det första kopplings predikatet. Därför lägger Query optimering till operatorn Top i frågekörning. En sådan fråga kan bara returnera några rader. Men det kan ta mer tid att köra frågan än vad som förväntas. Det uppskattade antalet rader skiljer sig avsevärt från det faktiska antalet rader. Det här påverkar förmågan att uppskatta kostnaden för olika abonnemangs val. Problemet kan även uppstå om du använder den översta operatorn explicit eller om du använder någon av följande operatorer:

  • ALTERNATIV (SNABB N)

  • TILL

  • BUFFERTÖVERSKRIDNING

Lösning

Kumulativ uppdaterings information

SQL Server 2008 R2 Service Pack 2

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 1 för SQL Server 2008 R2 Service Pack 2. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2720425 Kumulativt uppdaterings paket 1 för SQL Server 2008 R2 Service Pack 2Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2730301 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 Service Pack 2 släpptes

SQL Server 2008 R2 Service Pack 1

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 7 för SQL Server 2008 R2 Service Pack 1. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2703282 Kumulativt uppdaterings paket 7 för SQL Server 2008 R2 Service Pack 1Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2567616 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 Service Pack 1 släpptes

SQL Server 2012

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 2 för SQL Server 2012. Om du vill veta mer om det här kumulativa uppdaterings paketet klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2703275 Kumulativt uppdaterings paket 2 för SQL Server 2012Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2012. Microsoft rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2692828 SQL Server 2012-versioner som släpptes efter att SQL Server 2012 släpptes Du måste använda en SQL Server 2012 Hotfix för en installation av SQL Server 2012.

SQL Server 2008 R2

Korrigeringen för det här problemet släpptes första gången den kumulativa uppdateringen 13. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet för SQL Server 2008 R2 klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2679366 Kumulativt uppdaterings paket 13 för SQL Server 2008 R2Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

981356 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 släpptesObs! När du har installerat den kumulativa uppdateringen bör du aktivera spårnings flagga 4199 för att aktivera korrigeringen som tillhandahålls i den här kumulativa uppdateringen om följande gäller:

  • Frågeuttrycket har en TOP-operator ovanför en kapslad slinga (1) till höger om en annan Använd/Anslut-operator (Anslut till 2).

  • Den yttre delen av Join 1 har en yttre referens till den yttre sidan av Join 2.

  • Delta 1 använder ett likhets predikat på en vänster kolumn som är unikt.

Ett exempel på en sådan fråga visas i avsnittet "Symptom". (Detta förutsätter att det finns unika begränsningar i databasen.) Om det finns andra frågor som innehåller operatorerna TOP N, IN eller EXISTS och ger liknande symptom men inte passar in i det mönster som beskrivs här aktiverar du spårnings flaggan 4138.Varning Om du aktiverar spårnings flaggan 4138 kan prestanda minska för vissa andra frågor som innehåller operatorerna TOP, alternativ (FAST N), IN eller EXISTS. Spårnings flagga 4138 ska endast användas om följande gäller:

  • Den påverkar långsamma frågor som berör dessa operatorer.

  • Det finns ingen annan användbar lösning.

  • Ingen regression identifieras på andra frågor som innehåller liknande operatorer.

Status

Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".

Lösning

Undvik det här problemet genom att använda den vänstra operatorn för yttre koppling eller någon av flera OPTIMERINGs tips.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.