Microsoft distribuira Microsoft SQL Server 2008 servisni paket 1 (SP1) ili SQL 2008 R2 ispravke kao jednu datoteku 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 SP1 ili SQL 2008 R2 ispravke.

Simptomi

Razmotrite sledeći scenario:

  • U sistemu Microsoft SQL Server 2008 ili SQL Server 2008 R2 pokrenete upit u odnosu na određenu kolonu u tabeli koja ima mnogo redova. Upit ima predikat CONTAINS u odredbi WHERE.

  • Termin koji koristite za predikat CONTAINS sadrži reč. Reč će se pojaviti u nekim kolonama koje su uključene u indeks celog teksta tabele.

U ovom scenariju, upitu je potrebno mnogo vremena da se sastavi. Na primer, do ovog problema može doći kada pokrenete sledeći upit:

SELECT count(*)FROM dbo.MyLargeTable whereCONTAINS (email_address, '"name@contoso.com"')

Napomene

  • Pretpostavimo da se ".com" pojavljuje u nekim kolonama koje su uključene u indeks celog teksta tabele.

  • Možete da pratite vreme sastavljanja upita da biste utvrdili da li nailazite na ovaj problem. Detaljna uputstva o praćenju vremena sastavljaja potražite u odeljku "Više informacija".

Uzrok

Do ovog problema dolazi zbog greške u logici procene kardinalnosti za indekse celog teksta. U tom slučaju, skeniranje više kolona koje sadrže reč koja se često javlja izvršava se pre sužavanje opsega pretraživanja očekivanih kolona.

Rešenje

Kumulativne informacije o ažuriranju

SQL Server 2008 servisni paket 2

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

2527180 Kumulativni paket ispravki 4 za SQL Server 2008 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 ispravke za SQL Server 2008. 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:

2402659 SQL Server 2008 builds koji su objavljeni nakon što je SQL Server 2008 servisni paket 2 objavljen Hitne ispravke za Microsoft SQL Server 2008 kreirane su za određene SQL Server servisne pakete. Morate primeniti hitnu ispravku za SQL Server 2008 servisni paket 2 na instalaciju SQL Server 2008 servisnog paketa 2. Podrazumevano, sve hitne ispravke koje su obezbeđene u SQL Server servisnom paketu uključene su u sledeći SQL Server servisni paket.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 SP1 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2497673 Kumulativni paket ispravki 13 za SQL Server 2008 servisni paket 1 Napomena 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 ispravke za SQL Server 2008 SP1. 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:

970365 SQL Server 2008 builds koji su objavljeni nakon što je SQL Server 2008 servisni paket 1 objavljen

SQL Server 2008 R2 servisni paket 1

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1 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:

2544793 Kumulativni paket ispravki 1 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 2008 R2

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 7. 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:

2507770 Kumulativni paket ispravki 7 za SQL Server 2008 R2 Napomena 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 released

Status

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

Rešenje

Da biste rešili ovaj problem, upotrebite jedan od sledećih metoda:

  • Koristite * za uključivanje svih kolona u pretragu umesto jedne kolone. Ovo menja broj redova koji se zaista procenjuju pre nego što Integrisani ceo tekst sastavi svoju procenu kardinalnosti. Na primer, pokrenite sledeći upit:

    SELECT count(*) FROM dbo.MyLargeTabel where CONTAINS (*, '"test@contoso.com"')
  • Učinite reč zaustavljanja koja se često javlja pomoću izgovora ALTER FULLTEXT STOPLIST. Za više informacija o naredbi ALTER FULLTEXT STOPLIST za Transact-SQL posetite sledeću Microsoft Developer Network (MSDN) Veb lokaciju: Opšte informacije o naredbi ALTER FULLTEXT STOPLIST za Transact-SQL

Više informacija

Da biste pratili vreme prevoрeja upita, sledite ove korake:

  1. Uhvatite praćenje SQL profilatora kada pokrenete upit. Da biste to uradili, pratite događaje TSQL:BatchCompleted i TSQL:StmtCompleted ili RPC:Completed i SP:StmtCompleted.

  2. Imajte na kraju vreme grupnog procesora i vreme procesora izjave.

  3. Oduzmite vreme CPU-a izvoda od vremena procesora grupe. Rezultat označava vreme procesora koje je potrebno za raščlanj i sastavljanje grupe.

Za više informacija o korišćenju predikata CONTAINS za Transact-SQL posetite sledeću Microsoft Razvojnu mrežu (MSDN) Veb lokaciju:

Korišćenje PREDIKATA CONTAINS za Transact-SQL

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 jezika?
Šta je uticalo na vaše iskustvo?

Hvala vam na povratnim informacijama!

×