Microsoft izplata Microsoft SQL Server 2008 R2 labojumus kā vienu lejupielādējamo failu. Tā kā labojumi ir kumulatīvi, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 labojuma laidienā.
Simptomi
Iedomājieties šādu scenāriju:
-
Lietojumprogramma izpilda vaicājumu, kas atsaucas uz dažām pagaidu tabulām programmā Microsoft SQL Server 2008 un Microsoft SQL Server 2008 R2. Pagaidu tabulas ir izveidotas sesijā, nevis saglabātajā procedūrā.
-
Vaicājumu plāns ir kešots.
-
Daudzi lietotāji vienu un to pašu vaicājumu izpilda vienlaikus vidē. Piemēram, daudzi lietotāji izmanto lietojumprogrammu, kas izpilda šādu vaicājumu:
create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go
Šajā scenārijā lietojumprogramma sastopas ar veiktspējas problēmām.Piezīme. Papildinformāciju par to, kā identificēt šo problēmu, skatiet sadaļā "Papildinformācija".
Cēlonis
Šī problēma rodas tāpēc, ka tie paši vaicājumu plāni tiek ievietoti kešatmiņā tajā pašā jaukšanas spainī katram lietotājam, ja vaicājuma teksts ir tāds pats. Ja lielu skaitu plānu ir jaukti vienā un tajā pašā spainī (ko dēvē arī par jaukšanas ķēdi), laiks uzmeklēt plānu kešatmiņā būtiski palielinās, un veiktspējas problēmas var rasties. Turklāt darbinieku pavedieni var saskarties ar smagu spinlock saturu, un citi pavedieni tiek ietekmēti, ja šie darbinieku pavedieni neveic pareizo plānotāja ienesīgumu.
Risinājums
Piezīme. Pašlaik ir pieejams tikai SQL Server 2008 R2 atjauninājums. Ja jums ir SQL Server 2008, skatiet sadaļu "risinājums", lai novērstu šo problēmu.
Kumulatīvās atjaunināšanas informācija
SQL Server 2008 R2 1. servisa pakotne
Šīs problēmas labojums pirmo reizi tika izlaists SQL Server 2008 R2 Service Pack 1 kumulatīvajā atjauninājumā. Lai iegūtu papildinformāciju par to, kā iegūt šo kumulatīvo atjaunināšanas pakotni, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
2544793 Kumulatīvās atjaunināšanas pakotne 1 SQL Server 2008 R2 1. servisa pakotneiPiezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 labošanas laidienā. Iesakām apsvērt jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
2567616 SQL Server 2008 R2 būvējumi, kas tika izlaisti pēc tam, kad tika izlaista SQL Server 2008 R2 1. servisa pakotne
SQL Server 2008 R2
Šīs problēmas labojums pirmo reizi tika izlaists kumulatīvajā atjaunināšanā 7. Lai iegūtu papildinformāciju par to, kā iegūt SQL Server 2008 R2 kumulatīvās atjaunināšanas pakotni, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
2507770 Kumulatīvās atjaunināšanas pakotne SQL Server 2008 R2 Piezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 labošanas laidienā. Iesakām apsvērt jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
981356 SQL Server 2008 R2 būvējumi, kas tika izlaisti pēc tam, kad tika izlaists SQL Server 2008 R2
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".
Risinājums
Lai novērstu šo problēmu SQL Server 2008 un SQL Server 2008 R2, pārvietojiet jebkuras pagaidu tabulu atsauces uz iekļautajām procedūrām.
Papildinformācija
Lai iegūtu papildinformāciju par to, kā izveidot un modificēt tabulas pamatprincipus, apmeklējiet šo MSDN tīmekļa vietni:
Kā izveidot un modificēt tabulas pamatprincipusSpinlock saturu var identificēt no sys.dm_os_spinlock_stats dinamiskās pārvaldības SKATA (DMV), kam ir augsts satura līmenis SOS_CACHESTORE spinlock. Lai noteiktu šo problēmu, izpildiet vaicājumu, kas līdzīgs šim:
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 descJa, izpildot šo vaicājumu, ir spēkā šādi nosacījumi, var rasties veiktspējas problēmas:
-
Šis vaicājums ģenerē tādu pašu vaicājuma tekstu.
-
To pašu kopuma ID skaits ir liels.Piezīme. Liels skaits vienam kopuma ID parasti ir vairāk nekā 1000.
-
Vaicājumi atsauces pagaidu tabulās