KB2451540 - 2451540 - KORJAUS: SQL Server 2005:ssä, SQL Server 2008:ssa ja SQL Server 2008 R2:ssa saattaa esiintyä heikkoa suorituskykyä suorittaessa kyselyä, joka sisältää useita itseliitostoimintoja samassa sarakkeessa

Käytetään kohteeseen
Microsoft SQL Server 2005 Workgroup Edition Microsoft SQL Server 2005 Evaluation Edition Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Express Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup Microsoft SQL Server 2005 Service Pack 4 Microsoft SQL Server 2005 Service Pack 3

Microsoft jakelee Microsoft SQL Server 2005-, Microsoft SQL Server 2008- tai Microsoft SQL Server 2008 R2 -korjauksia yhtenä ladattavana tiedostona. Koska korjaukset ovat kumulatiivisia, jokainen uusi versio sisältää kaikki aiempiin SQL Server 2005:een, Microsoft SQL Server 2008:aan tai Microsoft SQL Server 2008 R2:n korjausjulkaisuihin sisältyvät hotfix-korjaukset ja tietoturvakorjaukset.

Ongelman ilmenemistapa

Mieti alla kuvattua tilannetta. Käytössäsi on Microsoft SQL Server 2005-, Microsoft SQL Server 2008- tai Microsoft SQL Server 2008 R2 -tietokanta. Suoritat kyselyn, joka sisältää useita itseliitostoimintoja tietokannan taulukon samassa sarakkeessa. Kun esimerkiksi yrität luoda tietokannan tietoja käyttävän kuution, saatetaan suorittaa kysely, joka sisältää useita itseliiton toimintoja samassa sarakkeessa. Tässä skenaariossa suorituskyky saattaa olla heikko, ja kyselyn suorittaminen voi kestää kauan.

Syy

Tämä ongelma ilmenee, koska kyselyn kardinaliteetin estimointi on virheellinen. Kun useita itseliitostoimintoja on harkittu, kyselyn optimointitoiminto voi arvioida toisen liitosoperaattorin rivien määräksi 1. Tämän vuoksi kyselyn optimointitoiminto valitsee tehottoman kyselysuunnitelman, jolloin suorituskyky saattaa olla heikkoa.

Ratkaisu

Kumulatiiviset päivitystiedot

SQL Server 2008 Service Pack 2

Tämän ongelman korjaus julkaistiin ensimmäisenä SQL Server 2008 Service Pack 2:n kumulatiivisessa päivityksessä 3. Saat lisätietoja tästä kumulatiivisesta päivityspaketista napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

2498535 Kumulatiivinen päivityspaketti 3 SQL Server 2008 Service Pack 2:lleHuomautus Koska koontiversiot ovat kumulatiivisia, jokainen uusi korjausversio sisältää kaikki SQL Server 2008:n aiempaan korjausversioon sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Microsoft suosittelee, että otat käyttöön uusimman kyseisen hotfix-korjauksen sisältävän korjausversion. Lisätietoja saat napsauttamalla seuraavaa Microsoft Knowledge Base -tietokanta -artikkelinumeroa:

2402659 SQL Server 2008 -koontiversiot, jotka on julkaistu SQL Server 2008 Service Pack 2:n julkaisemisen jälkeen Microsoft SQL Server 2008:n hotfix-korjaukset on tarkoitettu tietyille SQL Server Service Pack -paketeille. SQL Server 2008 Service Pack 2:n asennuksessa on käytettävä SQL Server 2008 Service Pack 2:n hotfix-korjausta. Oletusarvoisesti kaikki SQL Server Service Pack -pakettiin sisältyvät hotfix-korjaukset seuraavaan SQL Server Service Packiin.

SQL Server 2008 R2

Tämän ongelman korjaus julkaistiin ensin kumulatiivisessa päivityksessä 6. Saat lisätietoja tämän SQL Server 2008 R2:n kumulatiivisen päivityspaketin hankkimisesta napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

2489376 SQL Server 2008 R2:n kumulatiivinen päivityspaketti 6 Huomautus Koska koontiversiot ovat kumulatiivisia, jokainen uusi korjausversio sisältää kaikki hotfix-korjaukset ja tietoturvakorjaukset, jotka sisältyivät aiempaan SQL Server 2008 R2 -korjausversioon. Suosittelemme, että otat käyttöön uusimman korjausversion, joka sisältää tämän hotfix-korjauksen. Lisätietoja saat napsauttamalla seuraavaa Microsoft Knowledge Base -tietokanta -artikkelinumeroa:

981356 SQL Server 2008 R2 -koontiversiot, jotka julkaistiin SQL Server 2008 R2:n jälkeen

SQL Server 2008 Service Pack 1

Tämän ongelman korjaus julkaistiin ensimmäisen kerran SQL Server 2008 Service Pack 1:n kumulatiivisessa päivityksessä 12. Saat lisätietoja tästä kumulatiivisesta päivityspaketista napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

2467236 Kumulatiivinen päivityspaketti 12 SQL Server 2008 Service Pack 1:lleHuomautus Koska koontiversiot ovat kumulatiivisia, jokainen uusi korjausversio sisältää kaikki SQL Server 2008:n aiempaan korjausversioon sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Microsoft suosittelee, että otat käyttöön uusimman kyseisen hotfix-korjauksen sisältävän korjausversion. Lisätietoja saat napsauttamalla seuraavaa Microsoft Knowledge Base -tietokanta -artikkelinumeroa:

970365 SQL Server 2008 -koontiversiot, jotka on julkaistu SQL Server 2008 Service Pack 1:n julkaisemisen jälkeen Microsoft SQL Server 2008:n hotfix-korjaukset on tarkoitettu tietyille SQL Server Service Pack -paketeille. SQL Server 2008 Service Pack 1:n asennukseen on asennettava SQL Server 2008 Service Pack 1 -korjaus. Oletusarvoisesti kaikki SQL Server Service Pack -pakettiin sisältyvät hotfix-korjaukset seuraavaan SQL Server Service Packiin.

Kun olet asentanut tämän kumulatiivisen päivityspaketin, sinun on otettava traceflag 4199 käyttöön. Voit tehdä tämän lisäämällä käynnistysparametrin -T4199 tai voit käyttää yksittäisen istunnon dbcc traceon(4199)-lauseketta.

SQL Server 2005 Service Pack 3

                
SQL Server 2005 Service Pack 3 Tämän ongelman korjaus julkaistiin ensin SQL Server 2005 Service Pack 3:n kumulatiivisessa päivityksessä 13. Saat lisätietoja tästä kumulatiivisesta päivityspaketista napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

2438344 Kumulatiivinen päivityspaketti 13 SQL Server 2005 Service Pack 3:lleHuomautus Koska koontiversiot ovat kumulatiivisia, jokainen uusi korjausversio sisältää kaikki SQL Server 2005:n aiempaan korjausversioon sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Microsoft suosittelee, että otat käyttöön uusimman kyseisen hotfix-korjauksen sisältävän korjausversion. Lisätietoja saat napsauttamalla seuraavaa Microsoft Knowledge Base -tietokanta -artikkelinumeroa:

960598 SQL Server 2005 SQL Server Service Pack 3:n julkaisemisen jälkeen julkaistut 2005 -koontiversiot Microsoft SQL Server 2005:n hotfix-korjaukset luodaan tietyille SQL Server Service Pack -paketeille. SQL Server 2005 Service Pack 3 -asennuksessa on käytettävä SQL Server 2005 Service Pack 3 -korjausta. Oletusarvoisesti kaikki SQL Server Service Pack -pakettiin sisältyvät hotfix-korjaukset seuraavaan SQL Server Service Packiin.

Kun olet asentanut tämän kumulatiivisen päivityspaketin, sinun on otettava traceflag 4199 käyttöön. Voit tehdä tämän lisäämällä käynnistysparametrin -T4199 tai voit käyttää yksittäisen istunnon dbcc traceon(4199)-lauseketta.

SQL Server 2005 Service Pack 4

Tämän ongelman korjaus julkaistiin ensimmäisenä SQL Server 2005 Service Pack 4:n kumulatiivisessa päivityksessä 2. Saat lisätietoja tästä kumulatiivisesta päivityspaketista napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

2489409 Kumulatiivinen päivityspaketti 2 SQL Server 2005 Service Pack 4:lleHuomautus Koska koontiversiot ovat kumulatiivisia, jokainen uusi korjausversio sisältää kaikki hotfix-korjaukset ja tietoturvakorjaukset, jotka sisältyivät edelliseen SQL Server 2005:n korjausversioon. Microsoft suosittelee, että otat käyttöön uusimman kyseisen hotfix-korjauksen sisältävän korjausversion. Lisätietoja saat napsauttamalla seuraavaa Microsoft Knowledge Base -tietokanta -artikkelinumeroa:

2485757 SQL Server 2005 -koontiversiot, jotka on julkaistu SQL Server 2005 Service Pack 4:n julkaisemisen jälkeen Microsoft SQL Server 2005:n hotfix-korjaukset on tarkoitettu tietyille SQL Server Service Pack -paketeille. SQL Server 2005 Service Pack 4:n asennuksessa on käytettävä SQL Server 2005 Service Pack 4:n hotfix-korjausta. Oletusarvoisesti kaikki SQL Server Service Pack -pakettiin sisältyvät hotfix-korjaukset seuraavaan SQL Server Service Packiin.

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.

Viitteet

Saat lisätietoja SQL Server:n lisäävästä ylläpitomallista napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

935897 SQL Server-työryhmältä saa käyttöön lisäävän ylläpidon mallin, jonka avulla voidaan toimittaa hotfix-korjauksia ilmoitettuihin ongelmiin. Saat lisätietoja SQL Server-päivitysten nimeämisrakenteesta napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

822499 Microsoft SQL Server -ohjelmistopäivityspakettien uusi nimeämisrakenneSaat lisätietoja ohjelmistopäivitysterminologiasta napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokanta -tietokannassa:

824684 Microsoftin ohjelmistopäivityksiä kuvaavan vakioterminologian kuvaus