Microsoft distribuira Microsoft SQL Server 2008 R2 servisnim paketom Service Pack 1 (SP1) kao jednu datoteku za preuzimanje. Budući da su popravci kumulativni, svako novo izdanje sadrži sve hitne popravke i sva bezbednosna ažuriranja koja su obuhvaćena prethodnim izdanom ažuriranja sustava SQL Server 2008 R2 sa servisnim paketom Service Pack 1 (SP1).
Simptomi
Kada se u programu Microsoft SQL Server 2008 R2 podiže upozorenje o stanju performansi sustava SQL Server, možda će vam se prikazati sljedeća poruka o pogrešci:
MSG 512, razina 16, State 1, procedura sp_sqlagent_get_perf_counters, linijski 40Podupit vratio je više od 1 vrijednosti. To nije dopušteno kada podupit slijedi =,! =, <, <=, >, >= ili kada se podupita koristi kao izraz.
Uz to, poruka o pogrešci zapisana je u zapisniku pogreške programa SQL Server agent u ovom slučaju.Napomena Taj se problem pojavljuje i u programu Microsoft SQL Server 2008.
Uzrok
Taj se problem pojavljuje jer podupit pohranjene procedure msdb.dBO.sp_sqlagent_get_perf_counters sustava izračunava vrijednost counter neispravno. Podupit nema odnos unutarnjeg spoja za stupac [object_name] u stanju podupita. Stoga se višestruki reci neispravno vraćaju, a pojavljuje se problem naveden u odjeljku "simptomi".Napomena Uskladišteni postupak msdb.dBO.sp_sqlagent_get_perf_counters sustava pokreće se kada se podiže upozorenje o stanju uspješnosti sustava SQL Server.
Rješenje
Kumulativne informacije o ažuriranju
Kumulativno ažuriranje paketa 3 za SQL Server 2008 R2 SP1
Popravak tog problema prvi je put izdan u paketu Kumulativno ažuriranje 3. Dodatne informacije o dobivanju tog kumulativnog paketa za ažuriranje za SQL Server 2008 R2 SP1 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
2591748 Kumulativno ažuriranje paketa 3 za SQL Server 2008 R2 SP1Napomena Budući da su grade kumulativne, svako novo izdanje ažuriranja sadrži sve hitne popravke i sva bezbednosna ažuriranja koja su obuhvaćena prethodnim izdanjima sustava SQL Server 2008 R2 SP1 za ažuriranje. Preporučujemo da razmotrite primjenu najnovijeg izdanja ažuriranja 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 SP1
Zaobilazno rješenje
Da biste zaobišli taj problem, ažurirajte podupit spremljene procedure msdb.dBO.sp_sqlagent_get_perf_counters sustava. Da biste to učinili, dodajte sljedeći uvjet u uvjet Where od četiri podupita koji se koriste u izračunu stupaca [value] :
(spi1.[object_name] = spi2.[object_name])
Kada dodate uvjet, podupiti nalikuju na sljedeće:
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 je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".