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:
-
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.
-
Imajte na kraju vreme grupnog procesora i vreme procesora izjave.
-
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: