KB2649913 – JAVÍTÁS: A SQL Server 2005-ről SQL Server 2008-ra, SQL Server 2008 R2-re vagy SQL Server 2012-re való frissítés után csökkenhet a teljesítmény, ha a sp_cursoropen tárolt eljárást használó lekérdezést futtat

Hatókör
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard

A Microsoft egyetlen letölthető fájlban terjeszti a Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) és a Microsoft SQL Server 2012 javításait. Mivel a javítások egymásra épülnek, minden új kiadás tartalmazza az előző SQL Server 2008 R2 Service Pack 1 (SP1) vagy a Microsoft SQL Server 2012 frissítéshez mellékelt összes gyorsjavítást és biztonsági frissítést.

Tünetek

Vegyük például a következő esetet:

  • A Microsoft SQL Server 2005-ről a Microsoft SQL Server 2008-ra, a Microsoft SQL Server 2008 R2-re vagy a Microsoft SQL Server 2012-re frissít.
  • Futtat egy sp_cursoropen tárolt eljárást használó lekérdezést, majd a rowcount paraméter megadásával beolvassa egy tábla első néhány sorát.

Ebben a forgatókönyvben a teljesítmény lassabb lehet, mintha ugyanazt a lekérdezést az SQL Server 2005-ben futtatná.

Ok

A problémát az okozza, hogy a Query Optimizer statikus kurzortervet használ dinamikus kurzorterv helyett. Statikus kurzorterv esetén az SQL Server lekéri az összes sort, és beszúrja őket a kurzormunkatáblázatba. Dinamikus kurzortervek esetén azonban az SQL Server csak a szükséges sorokat olvassa be.

Megoldás

Összegző frissítéssel kapcsolatos információk

SQL Server 2012

A hiba javítását először az SQL Server 2012 1. összegző frissítésében adtuk ki. Az összegző frissítési csomagról a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2679368 1. összegző frissítőcsomag a SQL Server 2012-hözMegjegyzés: Mivel a buildek kumulatívak, minden új javítás tartalmazza az előző, 2012-es javítás előző SQL Server kiadásában szereplő összes gyorsjavítást és biztonsági javítást. A Microsoft azt javasolja, hogy fontolja meg az ezt a gyorsjavítást tartalmazó legújabb javítás telepítését. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2692828 A SQL Server 2012 után megjelent SQL Server 2012-es buildek A SQL Server 2012 telepítésére SQL Server 2012-es gyorsjavítást kell alkalmaznia.

5-ös összegző frissítőcsomag az SQL Server 2008 R2 SP1-hez

A gyorsjavítás alkalmazása után engedélyezze a 4199-es nyomkövetési jelzőt.

A hiba javítását először az 5. összegző frissítésben adtuk ki. Az SQL Server 2008 R2 SP1-hez kiadott összegző frissítőcsomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2659694 5-ös összegző frissítőcsomag a SQL Server 2008 R2 SP1-hezMegjegyzés: Mivel a buildek kumulatívak, minden új javításkiadás tartalmazza az SQL Server 2008 R2 SP1 előző kiadásában szereplő összes gyorsjavítást és biztonsági javítást. Javasoljuk, hogy fontolja meg a gyorsjavítást tartalmazó legújabb javítás telepítését. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2567616 Megjelentek a SQL Server SQL Server 2008 R2 SP1 utáni 2008 R2 buildek

Kerülő megoldás

A probléma kerülő megoldásához adja hozzá a FAST lekérdezési tippet a lekérdezéshez.

További információ

A lekérdezési tippek használatáról az MSDN alábbi webhelyén talál további információt:

Általános információk a lekérdezési tippek használatáról A 4199-es jelölővel kapcsolatos további információkért látogasson el a következő webhelyre:

Általános információ a 4199-es nyomkövetési jelzőről

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.