Microsoft raspoređuje Microsoft SQL Server 2008 R2 popravci kao jednu datoteku za preuzimanje. Budući da su popravci kumulativni, svako novo izdanje sadrži sve hitne popravke i sve sigurnosne popravke koji su bili obuhvaćeni prethodnim izdanom sustava SQL Server 2008 R2.
Simptomi
Razmotrite sljedeći scenarij:
-
Aplikacija pokreće upit koji referencira neke privremene tablice u programu Microsoft SQL Server 2008 i u sustavu Microsoft SQL Server 2008 R2. Privremene tablice stvaraju se u sesiji, a ne u pohranjenoj proceduri.
-
Tarifa upita je predmemoriran.
-
Mnogi korisnici pokreću isti upit u vrlo istodobnom okruženju. Mnogi korisnici, primjerice, koriste aplikaciju koja pokreće sljedeći upit:
create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go
U ovom scenariju aplikacija susreće probleme s performansama.Napomena Dodatne informacije o tome kako identificirati taj problem potražite u odjeljku "Dodatne informacije".
Uzrok
Taj se problem pojavljuje jer su isti planovi upita umetnute u predmemoriranje u istoj kanti za svaki korisnik kada je tekst upita isti. Kada se veliki broj tarifa izlije na istu kantu (poznat i kao lanac hash), vrijeme da se plan u predmemoriji znatno poveća, a problemi s performansama mogu se pojaviti. Osim toga, workove teme mogu naići na ozbiljnu tvrdnju Spinlock-a, a druge su teme zahvaćene kada ove radne teme ne obavljaju ispravne prinose rasporeda.
Rješenje
Napomena Trenutno je dostupno samo ažuriranje za SQL Server 2008 R2. Za SQL Server 2008 pogledajte odjeljak "zaobilazno rješenje" da biste zaobišli taj problem.
Kumulativne informacije o ažuriranju
Servisni paket 1 za SQL Server 2008 R2
Popravak tog problema prvi je put izdan u kumulativnom ažuriranju 1 za SQL Server 2008 R2 Service Pack 1. Dodatne informacije o dobivanju tog kumulativnog paketa za ažuriranje potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
2544793 Kumulativno ažuriranje paketa 1 za SQL Server 2008 R2 Service Pack 1Napomena Budući da su grade kumulativne, svako novo izdanje sustava Fix sadrži sve hitne popravke i sve sigurnosne popravke koji su bili obuhvaćeni prethodnim izdanjima programa SQL Server 2008 R2. Preporučujemo da razmotrite primjenu najnovijeg izdanja popravka koja sadrži taj hitni popravak. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:
2567616 Verzije sustava SQL Server 2008 R2 koje su objavljene nakon objavljivanja sustava SQL Server 2008 R2 Service Pack 1
SQL Server 2008 R2
Popravak tog problema prvi je put izdan u kumulativnom ažuriranju 7. Dodatne informacije o dobivanju tog kumulativnog paketa za ažuriranje za SQL Server 2008 R2 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
2507770 Kumulativno ažuriranje paketa 7 za SQL Server 2008 R2 Napomena Budući da su grade kumulativne, svako novo izdanje sustava Fix sadrži sve hitne popravke i sve sigurnosne popravke koji su bili obuhvaćeni prethodnim izdanjima programa SQL Server 2008 R2. Preporučujemo da razmotrite primjenu najnovijeg izdanja popravka koja sadrži taj hitni popravak. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:
981356 Verzije sustava SQL Server 2008 R2 koje su objavljene nakon objavljivanja sustava SQL Server 2008 R2
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".
Zaobilazno rješenje
Da biste zaobišli taj problem u sustavu SQL Server 2008 i u sustavu SQL Server 2008 R2, premjestite sve reference privremenih tablica na unutar pohranjenih postupaka.
Dodatne informacije
Dodatne informacije o stvaranju i izmjeni osnovnih tablica potražite na sljedećem MSDN web-mjestu:
Stvaranje i izmjena osnovnih tablicaArgument Spinlock može se identificirati iz sys.dm_os_spinlock_stats prikaza za dinamičku upravljanje (DMV) koji ima visoku stopu sukoba na SOS_CACHESTORE Spinlock. Da biste odredili taj problem, pokrenite upit koji nalikuje sljedećem:
select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descAko su sljedeći uvjeti istiniti kada pokrenete ovaj upit, možda ćete naići na probleme s performansama:
-
Ovaj upit generira isti tekst upita.
-
Broj za isti bucketid velik je.Napomena Veliki broj za isti bucketid obično je iznad 1000.
-
Referenci upita za privremene tablice