Microsoft distribuira ispravke za Microsoft SQL Server 2008 R2 servisni paket 1 (SP1) ili Microsoft SQL Server 2012 u jednoj datoteci koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje sql Server 2008 R2 servisnog paketa 1 (SP1) ili SQL Server 2012.

Simptomi

Razmotrite sledeći scenario. Upit pokrenete u sistemu Microsoft SQL Server 2008 R2 ili Microsoft SQL Server 2012, a optimizator upita generiše plan izvršavanja koji sadrži operator Top. U ovom scenariju, upitu može biti potrebno mnogo vremena da se pokrene. Na primer, pokrenete upit koji je sliиan sledeжem:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Ovaj upit uključuje dva spoja. Jedan spoj je između TableB i TableC. (To se podrazumeva pod prisustvom PREDIKAT-a IN.) Drugi spoj je između tabele A i rezultata prvog spajanja. Predikat IN će se vratiti tačan ako upit pronađe barem jedan red koji zadovoljava prvi predikat pridruživanja. Zbog toga optimizator upita dodaje operator Top u planu izvršavanja upita. Takav upit može da vrati samo nekoliko redova. Međutim, možda će biti potrebno više vremena da se izvrši ovaj upit nego što bi se očekivalo. U stvarnom planu izvršavanja upita, procenjeni broj redova se znatno razlikuje od stvarnog broja redova. Ovo utiče na sposobnost optimizatora upita da precizno proceni troškove za različite izbore plana. Do problema može doći i ako izričito koristite OPERATOR TOP ili ako koristite neki od sledećih operatora:

  • OPCIJA (BRZO N)

  • Inča

  • Postoji

Rešenje

Kumulativne informacije o ažuriranju

SQL Server 2008 R2 servisni paket 2

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1 za SQL Server 2008 R2 servisni paket 2. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2720425 Kumulativni paket ispravki 1 za SQL Server 2008 R2 servisni paket 2Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje SQL Server 2008 R2 ispravke. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2730301 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 2 was released

SQL Server 2008 R2 servisni paket 1

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 7 za SQL Server 2008 R2 servisni paket 1. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2703282 Kumulativni paket ispravki 7 za SQL Server 2008 R2 servisni paket 1Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje SQL Server 2008 R2 ispravke. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2567616 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 1 was released

SQL Server 2012

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 2 za SQL Server 2012. Za više informacija o ovom paketu kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2703275 Kumulativni paket ispravki 2 za SQL Server 2012Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravki za SQL Server 2012. Microsoft preporučuje da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2692828 SQL Server 2012 builds koji su objavljeni nakon što je SQL Server 2012 objavljen Morate primeniti hitnu ispravku za SQL Server 2012 na instalaciju sistema SQL Server 2012.

SQL Server 2008 R2

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 13. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2008 R2 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2679366 Kumulativni paket ispravki 13 za SQL Server 2008 R2Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje SQL Server 2008 R2 ispravke. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

981356 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 was releasedNapomena Kada instalirate kumulativnu ispravku, trebalo bi da uključite zastavicu za praćenje 4199 da biste omogućili ispravku koja je obezbeđena u ovoj kumulativnoj ispravci ako su ispunjeni sledeći uslovi:

  • Plan upita ima TOP operator iznad operatora Ugnežđene petlje Join (pridruži se 1) na desnoj strani drugog operatora za primenu/pridruživanje (pridruži se 2).

  • Spoljna strana spoja 1 ima spoljnu referencu na spoljnu stranu spoja 2.

  • Join 1 koristi predikat jednakosti u levoj koloni koja je jedinstvena.

Primer takvog upita pojavljuje se u odeljku "Simptomi". (Ovo pretpostavlja da u bazi podataka postoje neka ograničenja jedinstvenosti.) Ako postoje drugi upiti koji sadrže operatore TOP, OPTION (FAST N), IN ili EXISTS i proizvode slične simptome, ali se ne uklapaju u obrazac koji je ovde opisan, uključite zastavicu za praćenje 4138.Upozorenje Ako omogućite zastavicu za praćenje 4138, performanse mogu da se smanje za neke druge upite koji sadrže operatore TOP, OPTION (FAST N), IN ili EXISTS. Zastavicu za praćenje 4138 treba koristiti samo kada su ispunjeni sledeći uslovi:

  • Njegov efekat na spore upite koji uključuju ove operatore je potvrđen.

  • Nema drugih korisnih rešenja.

  • Na drugim upitima koji sadrže slične operatore ne otkrivaju se nikakve regresije.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Rešenje

Da biste zaobišli ovaj problem, koristite operator LEFT OUTER JOIN ili neki od nekoliko saveta za OPTIMIZER.

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Koliko ste zadovoljni kvalitetom prevoda?
Šta je uticalo na vaše iskustvo?

Hvala vam na povratnim informacijama!

×