Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Příznaky

Na počítači, na kterém běží Microsoft SQL Server 2008, zvažte následující scénáře.

Scénář 1

Pomocí příkazu WITH můžete určit výraz běžné tabulky (CTE). Spustíte například následující dotaz.

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

Potom tento dotaz spustíte.

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

V tomto scénáři obsahuje plán dotazů v mezipaměti pro tento dotaz nesprávné hodnoty statement_start_offset a statement_end_offset. Konkrétně si všimnete, že hodnota statement_end_offset je menší než hodnota statement_start_offset, když spustíte sys.dm_exec_query_stats dynamické zobrazení pro správu (DMV). Kvůli tomuto problému se může zpráva o výkonu zdařit, když sestava předpokládá, že hodnota statement_start_offset je vždycky menší než hodnota statement_stop_offset.

Scénář 2

Pomocí příkazu WITH můžete určit výraz běžné tabulky a použít možnost RECOMPILE. Můžete například vytvořit funkci na SQL serveru 2008 pomocí následujícího 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

Při spuštění dotazu Select dbo. Function1 () se zobrazí následující chybová zpráva:

V aktuálním příkazu došlo k závažné chybě. Případné výsledky se zahodí.

K této chybě může navíc dojít bez možnosti RECOMPILE, pokud v systému SQL Server dochází k přetížení provozu serveru.

Scénář 3

Výraz WITH se používá pomocí příkazu WITH. V příkazu WITH zadejte tabulku, která neexistuje. Spustíte například následující dotaz.

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

Po spuštění dotazu se nezobrazuje chyba chybějící tabulky.

Příčina

K těmto problémům dochází kvůli nefunkčnímu zpracování příkazu SELECT, který následuje za příkazem WITH. Příkaz WITH používá následující syntaxi.

WITH common_table_expression AS(CTE_query_definition)

Tento příkaz pak vytvoří sadu výsledků, která je přiřazená k zadanému názvu výrazu v běžné tabulce. Potom použijte tento příkaz příkaz SELECT. Pokud je druhý příkaz uzavřený v závorkách a Vy zkusíte provést operaci s výsledky nebo se pokusíte spustit sys.dm_exec_query_stats dynamické zobrazení pro správu, zobrazí se nesprávné výsledky nebo chyba.

Řešení

Informace o aktualizaci Service Pack Tento problém vyřešíte pomocí nejnovější aktualizace Service Pack pro SQL Server 2008. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

968382 Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2008

Alternativní řešení

Chcete-li tyto problémy vyřešit, musíte odebrat závorky z příkazu, který následuje za výrazem běžné tabulky. Předpokládejme například, že se jedná o příkaz, který používá tyto závorky.

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

Pokud chcete tento problém vyřešit, změňte následující příkaz pomocí příkazu, který tyto závorky nepoužívá.

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

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedené v části "platí pro". Tento problém byl poprvé opraven v aktualizaci SQL Server 2008 Service Pack 2 (SP2).

Další informace

Další informace o použití příkazu WITH s výrazem Obecné tabulky najdete na následující webové stránce MSDN:

S common_table_expression (Transact-SQL)Další informace o sys.dm_exec_query_stats najdete na následující webové stránce MSDN:

sys.dm_exec_query_stats (Transact-SQL)

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×