Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Príznaky

V počítači so spustenou službou Microsoft SQL Server 2008 zvážte nasledujúce scenáre.

Scenár č. 1

Ak chcete zadať obyčajný výraz tabuľky (CTE), použite príkaz s. Môžete napríklad spustiť nasledujúci dotaz.

WITH common_table_expression AS (SELECT * FROM sys.objects)(SELECT * FROM common_table_expression)

Potom spustite tento dotaz.

SELECT *FROM sys.dm_exec_query_statsWHERE statement_start_offset > statement_end_offsetANDstatement_end_offset <> -1

V tomto scenári obsahuje plán dotazu vo vyrovnávacej pamäti pre tento dotaz nesprávne statement_start_offset a statement_end_offset hodnoty. Konkrétne si všimnete, že statement_end_offset hodnota je menšia ako hodnota statement_start_offset pri spustení sys.dm_exec_query_stats dynamického zobrazenia správy (DMV). Z dôvodu tohto problému môže zostava výkonu zlyhať, keď zostava predpokladá, že hodnota statement_start_offset je vždy menšia ako hodnota statement_stop_offset.

Scenár č. 2

Môžete zadať obyčajný výraz tabuľky pomocou príkazu s a môžete použiť možnosť překompilovat. Môžete napríklad vytvoriť funkciu v SQL Server 2008 pomocou nasledujúceho skriptu.

CREATE FUNCTION function1() RETURNS int ASBEGINDECLARE @x intSET @x=1;WITH common_table_expression AS (SELECT @x AS column1) (SELECT @x=column1 FROM common_table_expression) OPTION(RECOMPILE)RETURN @xEND

Keď spustíte dotaz "Select dbo. function1 ()", zobrazí sa toto chybové hlásenie:

V aktuálnom príkaze sa vyskytla závažná chyba. Prípadné výsledky by mali byť zahodené.

Táto chyba sa môže vyskytnúť aj bez možnosti překompilovat, ak SQL Server zažíva ťažký prenos na server.

Scenár 3

Môžete zadať obyčajný výraz tabuľky pomocou príkazu s. V príkaze s vykonaním zadáte tabuľku, ktorá neexistuje. Môžete napríklad spustiť nasledujúci dotaz.

WITH computed_table (id) AS(SELECT id FROM this_table_does_not_exist) (SELECT id FROM dbo.computed_table) GO

Pri spustení tohto dotazu sa nezobrazí chyba chýbajúcej tabuľky.

Príčina

Tieto problémy sa vyskytujú z dôvodu nefunkčnosti spracovania príkazu SELECT, ktorý nasleduje po vyhlásení. Príkaz s použije nasledujúcu syntax.

WITH common_table_expression AS(CTE_query_definition)

Toto vyhlásenie potom vytvorí množinu výsledkov, ktorá je priradená k názvu bežného výrazu tabuľky, ktorý bol zadaný. Potom budete postupovať podľa tohto prehlásenia s príkazom SELECT. Ak je tento druhý príkaz uzavretý v zátvorkách a potom sa pokúsite vykonať operáciu s výsledkami alebo sa pokúsite spustiť sys.dm_exec_query_stats dynamického zobrazenia správy, dostanete nesprávne výsledky alebo chybu.

Riešenie

Informácie o balíku Service Pack Ak chcete tento problém vyriešiť, Získajte najnovší balík Service Pack pre SQL Server 2008. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:

968382 Získanie najnovšieho balíka Service Pack pre SQL Server 2008

Alternatívne riešenie

Ak chcete obísť tieto problémy, musíte odstrániť zátvorky z vyjadrenia, ktoré nasleduje po bežnom výraze tabuľky. Predpokladajme napríklad, že ide o príkaz, ktorý používa takéto zátvorky.

WITH common_table_expression AS (SELECT *FROM sys.objects)(SELECT * FROM common_table_expression)

Ak chcete obísť tieto problémy, zmeňte tento príkaz s príkazom, ktorý nepoužíva tieto zátvorky.

WITH common_table_expression AS (SELECT *FROM sys.objects)SELECT * FROM common_table_expressio

Stav

Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti vzťahuje sa na. Tento problém bol opravený v balíku SQL Server 2008 Service Pack 2 (SP2).

Ďalšie informácie

Ďalšie informácie o používaní príkazu s s bežným výrazom tabuľky nájdete na nasledujúcej webovej stránke MSDN:

S common_table_expression (Transact-SQL)Ďalšie informácie o sys.dm_exec_query_stats, navštívte nasledujúcu webovú stránku MSDN:

sys.dm_exec_query_stats (Transact-SQL)

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×