"Microsoft" platina "Microsoft SQL Server 2008 R2" 1 pakeitimų paketo (SP1) pataisymus kaip vieną atsisiunčiamą failą. Kadangi pataisos yra kumuliacinės, kiekvienoje naujoje versijoje yra visos karštosios pataisos ir visi saugos naujinimai, kurie buvo įtraukti į ankstesnį SQL serverio 2008 R2 1 pakeitimų paketo (SP1) naujinimo leidimą.
Simptomai
Kai "Microsoft SQL Server" 2008 R2 iškeliamas įspėjimas apie SQL serverio efektyvumo sąlygą, galite gauti šį klaidos pranešimą:
MSG 512, lygis 16, būsenos 1, procedūra sp_sqlagent_get_perf_counters, eilutės 40Antrinė užklausa grąžino daugiau nei 1 reikšmę. Tai neleidžiama, kai papildoma užklausa yra nurodyta =,! =, <, <=, >, >= arba, kai antrinė užklausa naudojama kaip reiškinys.
Be to, klaidos pranešimas užregistruojamas "SQL Server" agento klaidos žurnale šioje situacijoje.Pastaba Ši problema taip pat kyla naudojant "Microsoft SQL Server" 2008.
Priežastis
Ši problema kyla dėl to, kad msdb.dbo.sp_sqlagent_get_perf_counters sistema saugomos procedūros antrinė užklausa apskaičiuoja skaitiklio reikšmę netinkamai. Antrinėje užklausoje nėra vidinio sujungimo ryšio, skirto [object_name] stulpelio antrinės užklausos sąlygoje. Todėl kelios eilutės yra neteisingai grąžintos, o skyriuje "Požymiai" minima problema kyla.Pastaba Msdb.dbo.sp_sqlagent_get_perf_counters sistema saugoma procedūra vykdoma, kai keliamas įspėjimas apie SQL serverio veikimo sąlygą.
Sprendimas
Kaupiamojo naujinimo informacija
3 kaupiamųjų naujinimų paketas, skirtas "SQL Server" 2008 R2 SP1
Šios problemos taisymas pirmą kartą buvo išleistas 3 kaupiamųjų naujinimų pakete. Jei norite gauti daugiau informacijos apie tai, kaip gauti šį kaupiamojo naujinimo paketą, skirtą "SQL Server" 2008 R2 SP1, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:
2591748 3 kaupiamųjų naujinimų paketas, skirtas "SQL Server" 2008 R2 SP1Pastaba Kadangi Komponavimo versija yra kumuliacinės, kiekviena nauja naujinimo versija apima visas karštąsias pataisas ir visus saugos naujinimus, įtrauktus į ankstesnį SQL serverio 2008 R2 SP1 naujinimo leidimą. Rekomenduojame apsvarstyti, kaip taikyti naujausią naujinimo leidimą, kuriame yra šios karštosios pataisos. Jei reikia daugiau informacijos, spustelėkite toliau esantį straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:
2567616 SQL serverio 2008 R2 stato, buvo paleistas po to, kai buvo išleistas SQL Server 2008 R2 SP1
Sprendimas
Norėdami išspręsti šią problemą, atnaujinkite msdb.dbo.sp_sqlagent_get_perf_counters sistemos saugomos procedūros antrinę užklausą. Norėdami tai padaryti, įtraukite šią sąlygą į sąlygą WHERE , esančią keturiose antrinėmis užklausose, kurios naudojamos [value] stulpelių skaičiavimuose:
(spi1.[object_name] = spi2.[object_name])
Įtraukus sąlygą, antrinės užklausos yra panašios:
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
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.