Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Microsoft distribuie Microsoft SQL Server 2008 Service Pack 1 (SP1) sau SQL 2008 R2 remedieri ca un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu SQL Server 2008 SP1 anterior sau SQL 2008 R2 fix release.

Simptome

Luați în considerare următorul scenariu:

  • În Microsoft SQL Server 2008 sau SQL Server 2008 R2, efectuați o interogare împotriva unei anumite coloane dintr-un tabel care are mai multe rânduri. Interogarea are un predicat care conține o clauză WHERE.

  • Termenul pe care îl utilizați pentru Predicatul conține conține un cuvânt. Cuvântul apare în unele coloane care sunt incluse într-un index text complet al tabelului.

În acest scenariu, interogarea durează mult timp pentru a compila. De exemplu, această problemă poate apărea atunci când se execută următoarea interogare:

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

Note

  • Să presupunem că ". com" apare în unele coloane care sunt incluse într-un index text complet al tabelului.

  • Puteți urmări timpul de compilare al interogării pentru a determina dacă întâmpinați această problemă. Pentru instrucțiuni detaliate despre cum să urmăriți timpul de compilare, consultați secțiunea "mai multe informații".

Cauză

Această problemă se produce din cauza unei erori în logica de estimare cardinality pentru indexurile de text complet. În acest caz, o scanare a mai multor coloane care conțin un cuvânt care se întâmplă frecvent se efectuează înainte de îngustarea domeniului de căutare pentru coloanele așteptate.

Rezolvare

Informații despre actualizarea cumulativă

SQL Server 2008 Service Pack 2

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 4 pentru SQL Server 2008 Service Pack 2. Pentru mai multe informații despre acest pachet de actualizare cumulativă, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2527180 Pachetul de actualizare cumulativă 4 pentru SQL Server 2008 Service Pack 2Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 fix release. Microsoft recomandă să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2402659 SQL Server 2008 construiește care au fost lansate după ce s-a lansat SQL Server 2008 Service Pack 2 Sunt create remedieri rapide Microsoft SQL Server 2008 pentru anumite pachete de servicii SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2008 Service Pack 2 la o instalare de SQL Server 2008 Service Pack 2. În mod implicit, orice remediere rapidă furnizată într-un pachet de servicii SQL Server este inclusă în următorul pachet de servicii SQL Server.Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 13. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 SP1, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2497673 Pachetul de actualizare cumulativă 13 pentru SQL Server 2008 Service Pack 1 Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 SP1 remediată. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

970365 SQL Server 2008 construiește care au fost lansate după ce s-a lansat SQL Server 2008 Service Pack 1

SQL Server 2008 R2 Service Pack 1

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 1 pentru SQL Server 2008 R2 Service Pack 1. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2544793 Pachetul de actualizare cumulativă 1 pentru SQL Server 2008 R2 Service Pack 1Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 R2 remediată. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2567616 SQL Server 2008 R2 construiește care au fost lansate după ce s-a lansat SQL Server 2008 R2 Service Pack 1

SQL Server 2008 R2

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 7. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 R2, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2507770 Pachetul de actualizare cumulativă 7 pentru SQL Server 2008 R2 Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2008 R2 remediată. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

981356 SQL Server 2008 R2 construiește care au fost lansate după ce s-a lansat SQL Server 2008 R2

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Soluție de evitare

Pentru a evita această problemă, utilizați una dintre metodele următoare:

  • Utilizați * pentru a include toate coloanele din căutare în loc de o coloană. Acest lucru modifică câte rânduri sunt evaluate efectiv înainte ca textul complet integrat să își compileze estimarea cardinalității. De exemplu, rulează următoarea interogare:

    SELECT count(*) FROM dbo.MyLargeTabel where CONTAINS (*, '"test@contoso.com"')
  • Faceți ca Word să se producă frecvent un cuvânt oprire utilizând o instrucțiune ALTER FULLTEXT STOPLIST. Pentru mai multe informații despre instrucțiunea ALTER FULLTEXT STOPLIST pentru Transact-SQL, vizitați următorul site Web Microsoft Developer Network (MSDN): informații generale despre instrucțiunea ALTER fulltext STOPLIST pentru Transact-SQL

Mai multe informații

Pentru a urmări timpul de compilare al interogării, urmați acești pași:

  1. Capturați o urmă SQL Profiler atunci când se execută interogarea. Pentru a face acest lucru, monitorizați TSQL: BatchCompleted și TSQL: StmtCompleted Events sau RPC: finalizat și SP: StmtCompleted Events.

  2. Rețineți ora CPU a lotului și timpul pentru CPU.

  3. Scădeți timpul de CPU al declarației din timpul CPU pentru lot. Rezultatul indică timpul CPU care este necesar pentru a analiza și a compila lotul.

Pentru mai multe informații despre cum să utilizați un predicat conține pentru Transact-SQL, vizitați următorul site Web Microsoft Development Network (MSDN):

Cum se utilizează un predicat conține pentru Transact-SQL

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×