Microsoft jagab Microsoft SQL Server 2008 R2 hoolduspaketiga Service Pack 1 (SP1) fikseerib ühe allalaaditava failitüübina. Kuna parandused on kumulatiivsed, sisaldab iga uus versioon kõiki Kiirparandusi ja kõiki turvavärskendusi, mis kuulusid eelmise SQL serveri 2008 R2 hoolduspaketiga Service Pack 1 (SP1).
Sümptomid
Kui SQL serveri jõudluse tingimuse teatis tõstetakse Microsoft SQL Server 2008 R2, võidakse kuvada järgmine tõrketeade:
MSG 512, tase 16, olek 1, protseduur sp_sqlagent_get_perf_counters, rea 40Subquery tagastas rohkem kui ühe väärtuse. See pole lubatud, kui päring on järgmine =,! =, <, <=, >, >= või kui seda kasutatakse avaldise.
Lisaks logitakse tõrketeade SQL serveri agendi tõrkelogi selles olukorras.Märkus. See probleem ilmneb ka Microsoft SQL Server 2008.
Põhjus
See probleem ilmneb seetõttu, et msdb.dbo.sp_sqlagent_get_perf_counters süsteemi salvestatud protseduuri päring arvutab loenduri väärtuse valesti. Allpäringul puudub veeru [object_name] sisemine seos allpäringu tingimuse alusel. Seetõttu tagastatakse mitu rida valesti ja ilmneb jaotises "Tunnused" kirjeldatud probleem.Märkus. Msdb.dbo.sp_sqlagent_get_perf_counters süsteemi salvestatud protseduur käivitub SQL serveri jõudluse tingimuse teatise tõstatamisel.
Lahendus
Kumulatiivse värskenduse teave
Koondvärskenduses pakett 3 SQL Server 2008 R2 hoolduspaketi SP1 jaoks
Selle probleemi lahendus anti esmakordselt välja kumulatiivse värskenduspaketi 3. Lisateavet selle kumulatiivse värskenduspaketi SQL Server 2008 R2 hoolduspaketi SP1 hankimise kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2591748 Koondvärskenduses pakett 3 SQL Server 2008 R2 hoolduspaketi SP1 jaoksMärkus. Kuna järgud on kumulatiivsed, sisaldab iga uus värskendus kõiki Kiirparandusi ja kõiki turvavärskendusi, mis kuulusid eelmise SQL serveri 2008 R2 hoolduspaketti SP1. Soovitame teil kaaluda uusimaid värskendusi, mis sisaldavad seda käigultparandust. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2567616 Pärast SQL Server 2008 R2 hoolduspaketti SP1 väljaantud SQL serveri 2008 R2 järgud
Lahendus
Selle probleemi lahendamiseks värskendage msdb.dbo.sp_sqlagent_get_perf_counters süsteemi salvestatud protseduuri vahepäring. Selle tegemiseks lisage järgmine tingimus nende nelja allpäringute klauslile, mida kasutatakse veerus [Value] arvutamine.
(spi1.[object_name] = spi2.[object_name])
Kui olete tingimuse lisanud, meenutavad allpäringud järgmist.
SELECT CASE spi2.cntr_value WHEN 0 THEN 1 ELSE spi2.cntr_value ENDFROM sys.dm_os_performance_counters spi2WHERE (spi1.[object_name] = spi2.[object_name])AND (spi1.counter_name + ' ' = SUBSTRING(spi2.counter_name, 1, PATINDEX('% Base%', spi2.counter_name)))AND (spi1.instance_name = spi2.instance_name)AND (spi2.cntr_type = @perfTypeLargeRawBase
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.