Microsoft distribuie Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) sau Microsoft SQL Server 2012 remedieri într-un singur fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate actualizările de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 R2 Service Pack 1 (SP1) sau Microsoft SQL Server 2012 Update release.
Simptome
Luați în considerare următorul scenariu:
-
Faceți upgrade de la Microsoft SQL Server 2005 la Microsoft SQL Server 2008 sau la Microsoft SQL Server 2008 R2 sau la Microsoft SQL Server 2012.
-
Rulează o interogare care utilizează sp_cursoropen procedură stocată, apoi specificați parametrul contorrând pentru a prelua primele câteva rânduri ale unui tabel.
În acest scenariu, performanța poate fi mai lentă decât dacă rulați aceeași interogare în SQL Server 2005.
Cauză
Această problemă apare deoarece Optimizatorul de interogare utilizează un plan de cursor static în locul unui plan de cursor dinamic. Pentru un plan de cursor static, SQL Server preia toate rândurile și le inserează în tabelul lucru cursor. Cu toate acestea, pentru un plan de cursor dinamic, SQL Server preia doar rândurile care sunt necesare.
Rezolvare
Informații despre actualizarea cumulativă
SQL Server 2012
Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 1 pentru SQL Server 2012. Pentru mai multe informații despre acest pachet de actualizare cumulativă, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2679368 Pachetul de actualizare cumulativă 1 pentru SQL Server 2012Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2012 fix release. Microsoft recomandă să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2692828 SQL Server 2012 construiește care au fost lansate după ce s-a lansat SQL Server 2012 Trebuie să aplicați o remediere rapidă SQL Server 2012 la o instalare de SQL Server 2012.
Pachetul de actualizare cumulativă 5 pentru SQL Server 2008 R2 SP1
După ce aplicați această remediere rapidă, activați Trace Flag 4199. Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 5. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 R2 SP1, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2659694 Pachetul de actualizare cumulativă 5 pentru SQL Server 2008 R2 SP1Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea anterioară SQL Server 2008 R2 SP1. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2567616 SQL Server 2008 R2 construiește care au fost lansate după ce s-a lansat SQL Server 2008 R2 SP1
Soluție de evitare
Pentru a rezolva această problemă, adăugați aluzia rapidă la interogare.
Mai multe informații
Pentru mai multe informații despre cum se utilizează sugestiile de interogare, vizitați următorul site Web MSDN:
Informații generale despre cum se utilizează sugestiile de interogarePentru mai multe informații despre semnalizatorul de urmărire 4199, vizitați următorul site web:
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.