KB2344600 – RETTELSE: Der kan opstå fejlen "Non-yielding Scheduler", når du bruger funktionen CONTAINSTABLE sammen med mange OR- og AND-prædikater i SQL Server 2008 eller i SQL Server 2008 R2

Gælder for
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup

Microsoft distribuerer Microsoft SQL Server 2008-rettelser som én fil, der kan downloades. Da rettelserne er kumulative, indeholder hver ny version alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige version af SQL Server 2008-rettelsen. Microsoft distribuerer rettelser til Microsoft SQL Server 2008 eller SQL Server 2008 R2 som én fil, der kan downloades. Da rettelserne er kumulative, indeholder hver ny version alle de hotfixes og alle de sikkerhedsrettelser, der var inkluderet i den forrige version af SQL Server 2008- eller SQL Server 2008 R2-rettelsen.

Symptomer

Overvej følgende scenarie:

  • Du har en fuldtekstsøgeforespørgsel, der bruger funktionen CONTAINSTABLE sammen med mange OR- og AND-prædikater i betingelsen i Microsoft SQL Server 2008 eller i SQL Server 2008 R2. Du har f.eks. følgende 50 AND-handlinger: Declare @Keywords varchar(4000) = NULL

    indstil @Keywords= N'((((((((((((((((((((((((((((((((((((((((((((((((((((
    ("TOKarchitect" ELLER "arkitektonisk")
    AND ("TOKengineer" OR "engineer"))
    OG "gineer") AND ("TOKmechanical" OR "Mechanical"))
    AND ("TOKengineer" OR "Engineering"))
    OG ("TOKelectronic" OR "Electronics")) AND ("TOKengineer" OR "Engineer")) AND ("TOKelectronic" OR "Electronics")) AND ("TOKengineer" OR "Engineering")) AND ("TOKelectric" OR "Electrical")) AND ("TOKengineer" OR "Engineer")) AND ("TOKelectric" OR "Electrical")) AND ("TOKengineer" OR "Engineering")) AND ("TOKcontrol" OR "Control")) AND ("TOKsystem" OR "Systemer")) AND ("TOKengineer" OR "Engineer")) AND ("TOKproject" OR "Project")) AND ("TOKmanager" OR "Manager")) AND ("TOKengineer" OR "Manager")) AND ("TOKengineer" OR "Teknik")) OG "Ordning") OG ("TOK-fremstilling" ELLER "Fremstilling")) OG ("TOK-ingeniør" ELLER "Ingeniør")) OG ("TOK-metallurg" ELLER "Metallurgi")) OG ("TOK-metallurg" ELLER "Metallurg")) OG ("TOK-proces" ELLER "Proces")) OG ("TOK-teknik" ELLER "Teknologi")) OG ("TOK-produkt" ELLER "Produktion")) OG ("TOK-ingeniør" ELLER "Ingeniør")) OG ("TOK-ingeniør" ELLER "Kvalitet")) OG ("TOK-ingeniør" ELLER "Ingeniør")) OG ("TOK-ingeniør" ELLER "Kvalitet")) OG ("TOK-kontrol" ELLER "Kontrol")) OG ("TOK-ingeniør" ELLER "Kontrol")) OG ("TOK-ingeniør" ELLER "Ingeniør")) OG "Mekatronik") OG ("TOKcivil" ELLER "Civil")) OG ("TOKengineer" OR "Engineer")) AND ("TOKcivil" OR "Civil")) AND ("TOKengineer" OR "Engineering")) AND ("TOKdesign" OR "Design")) AND ("TOKengineer" OR "Engineering")) AND ("TOKdesign" OR "Design")) AND ("TOKengineer" OR "Engineer")) AND ("TOKgraduate" OR "Graduate")) AND ("TOKengineer" OR "Engineer")) AND ("TOKgraduate" OR "Graduate")) AND ("TOKengineer" OR "engineering")) AND ("TOKengineer" OR "Engineering")) AND ("TOKengineer" OR "Engineering")) AND ("TOKgraduate" ELLER »Graduate«)) OG »ANDNOT (») OG (»TOKRecruitment« ELLER »Rekruttering«)) OG ("TOKkonsulent" ELLER "konsulent")) OG ("TOKpraktikant" ELLER "praktikant")) OG ("TOKRecruitment" ELLER "rekruttering"))«

    select * from CONTAINSTABLE(test_table, *, @keywords, 1000)

  • Du kører forespørgslen.

I dette scenarie kan fejlen "Non-yielding Scheduler" opstå. Desuden genereres en minidumpfil i SQL Server 2008- eller SQL Server 2008 R2-programlogmappen, og følgende fejl logføres i SQL Server-fejllogfilen:

Bemærk

<Tidsstempelserver> bruger 'dbghelp.dll' version '4.0.5'

<Tidsstempelserver> ***Kan ikke hente trådkontekst for SPID 0
<Time Stamp> Server *
*******************************************************************************

<Time Stamp> Server *

<Time Stamp> Server * BEGIN STACK DUMP:

<Time Stamp> Server * <Time> SPID SPID<>
<Time Stamp> Server *

<Tidsstempelserver> * Ikke-udbytte Scheduler

<Time Stamp> Server *

<Time Stamp> Server *
*******************************************************************************

<Tidsstempelserverstaksignatur> for dumpet er 0x000000000000030D

<Tidsstempelserver> Returkode for ekstern dumpproces 0x20000001. Ekstern dumpproces returnerede ingen fejl.

<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 62 ms, bruger 75187 ms. Procesudnyttelse 98%. System er inaktivt 0 %. Interval: 76403 ms.

<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 125 ms, bruger 145250 ms. Procesudnyttelse 98%. System er inaktivt 0 %. Interval: 148417 ms.

<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 171 ms, bruger 205515 ms. Procesudnyttelse 98%. System er inaktivt 0 %. Interval: 209729 ms.

<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 218 ms, bruger 266343 ms. Procesudnyttelse 98%. System er inaktivt 0 %. Interval: 271588 ms.

<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 234 ms, bruger 325156 ms. Procesudnyttelse 97 %. System er inaktivt 0 %. Interval: 333671 ms.
<Tidsstempelserverproces> 0:0:0 (0xf94) Arbejderens 0x00000000817481A0 ser ud til ikke at give efter på planlægningsprogram 0. Trådens oprettelsestid: 12925321224306. Omtrentlig tråd CPU brugt: kerne 296 ms, bruger 386000 ms. Procesudnyttelse 97 %. System er inaktivt 0 %. Interval: 396370 ms.

Årsag

Dette problem opstår, fordi SQL Server 2008 eller SQL Server 2008 R2 ikke frigiver en planlægger korrekt.

Løsning

Oplysninger om kumulativ opdatering

SQL Server 2008 R2

Rettelsen til dette problem blev først udgivet i den samlede opdatering 5. Få flere oplysninger om, hvordan du får fat i denne kumulative opdateringspakke til SQL Server 2008 R2, ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

2438347 Samlet opdateringspakke 5 til SQL Server 2008 R2 Bemærk Da builds er kumulative, indeholder hver ny rettelsesversion alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige version af SQL Server 2008 R2-rettelser. Vi anbefaler, at du overvejer at anvende den nyeste rettelsesversion, der indeholder dette hotfix. Du kan finde flere oplysninger ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

981356 De SQL Server 2008 R2-builds, der blev udgivet efter SQL Server 2008 R2 blev frigivet

SQL Server 2008 Service Pack 1

Løsningen på dette problem blev først udgivet i Cumulative Update 10 til SQL Server 2008 Service Pack 1. Få flere oplysninger om denne samlede opdateringspakke ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

2279604 Samlet opdateringspakke 10 til SQL Server 2008 Service Pack 1Bemærk Da builds er kumulative, indeholder hver ny rettelsesversion alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den tidligere version af SQL Server 2008-rettelser. Microsoft anbefaler, at du overvejer at anvende den nyeste version af rettelsen, der indeholder dette hotfix. Du kan finde flere oplysninger ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

970365 De SQL Server 2008-builds, der blev udgivet efter SQL Server 2008 Service Pack 1 blev udgivet Microsoft SQL Server 2008-hotfixes oprettes til specifikke SQL Server servicepakker. Du skal anvende et SQL Server 2008 Service Pack 1-hotfix på en installation af SQL Server 2008 Service Pack 1. Alle hotfixes, der leveres i en SQL Server Service Pack, er som standard inkluderet i den næste SQL Server Service Pack.

SQL Server 2008 Service Pack 2

Løsningen på dette problem blev først udgivet i Cumulative Update 1 til SQL Server 2008 Service Pack 2. Få flere oplysninger om denne samlede opdateringspakke ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

2289254 Samlet opdatering 1 til SQL Server 2008 Service Pack 2Note Da builds er kumulative, indeholder hver ny rettelsesversion alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den tidligere version af SQL Server 2008-rettelser. Vi anbefaler, at du overvejer at anvende den nyeste rettelsesversion, der indeholder dette hotfix. Du kan finde flere oplysninger ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

2402659 De SQL Server 2008-builds, der blev udgivet efter SQL Server 2008 Service Pack 2 blev udgivet

Løsning

Du kan løse dette problem ved at bruge en søgesynonym i fuldtekstformat til at definere synonymer for prædikatet.

Det kan du gøre ved at bruge funktionen FORMSOF sammen med værdien SYNONYMORDBOG og derefter tilføje alle nøgleordene som parametre.

I eksemplet, der er beskrevet i afsnittet "Symptomer", er følgende en opdateret version af eksempelforespørgslen: Vælg * fra test_table, hvor Indeholder(*,'FORMSOF (SYNONYMORDBOG,"Arkitektonisk","Ingeniør","Mekanisk","Teknik","Elektronik","Ingeniør","Elektrisk","Kontrol","Systemer","Projekt","Leder","Produktion","Metallurgi","Metallurgi","Proces","Design","Teknologi","Produktion","Kvalitet","Kontrol","Civil","Kandidat","Rekruttering","Konsulent","Praktikant" »ansættelse«)«)

Status

Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".

Referencer

Du kan finde flere oplysninger om funktionen CONTAINSTABLE på følgende MSDN-websted (MSDN (Microsoft Developer Network)):

Generelle oplysninger om funktionen CONTAINSTABLE Yderligere oplysninger om Incremental Servicing Model for SQL Server finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

935897 SQL Server teamet kan tilbyde en trinvis serviceringsmodel, som kan levere hotfixes til rapporterede problemer

Du kan finde flere oplysninger om navngivningsskemaet for opdateringer til SQL Server ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

822499 Nyt navngivningsskema for Microsoft SQL Server-softwareopdateringspakkerDu kan finde flere oplysninger om terminologi for softwareopdateringer ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

824684 Beskrivelse af den standardterminologi, der bruges om Microsoft-softwareopdateringer