Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Simptomi

Na računalu na kojem je instaliran Microsoft SQL Server 2008 razmotrite sljedeće scenarije.

Prvi scenarij

Možete navesti uobičajen izraz tablice (CTE) pomoću naredbe WITH. Možete, primjerice, pokrenuti sljedeći upit.

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

Zatim pokrenete ovaj upit.

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

U ovom scenariju predmemorirani plan upita za ovaj upit pohranjuje netočne statement_start_offset i statement_end_offset vrijednosti. Konkretno, primijetit ćete da je vrijednost statement_end_offset manja od vrijednosti statement_start_offset kada pokrenete sys.dm_exec_query_stats prikaz dinamičke kontrole (DMV). Zbog tog problema izvješće o izvedbi može propasti kada izvješće pretpostavlja da je vrijednost statement_start_offset uvijek manja od vrijednosti statement_stop_offset.

Drugi scenarij

Možete navesti uobičajen izraz tablice pomoću naredbe WITH, a koristite mogućnost REKOMPILIRANJE. Na primjer, stvorite funkciju u sustavu SQL Server 2008 pomoću sljedeće skripte.

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

Kada pokrenete upit "Select d. function1 ()", prikazat će vam se sljedeća poruka o pogrešci:

Došlo je do ozbiljne pogreške u aktualnoj naredbi. Rezultat, ako ih ima, trebao bi biti odbačen.

Uz to, ta se pogreška može pojaviti bez mogućnosti REKOMPILIRANJA ako SQL poslužitelj doživljava težak promet poslužitelja.

Treći scenarij

Možete navesti uobičajen izraz tablice pomoću naredbe WITH. U naredbi WITH navedite tablicu koja ne postoji. Možete, primjerice, pokrenuti sljedeći upit.

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

Kada pokrenete ovaj upit, neće vam se prikazati pogreška za tablicu koja nema.

Uzrok

Ti se problemi javljaju zbog neispravnog obrade naredbe SELECT koja slijedi naredbe WITH. Naredba WITH koristi sljedeću sintaksu.

WITH common_table_expression AS(CTE_query_definition)

Ova izjava potom stvara skup rezultata dodijeljen nazivu uobičajenog izraza tablice koji je naveden. Zatim slijedite ovu izjavu pomoću naredbe SELECT. Ako je ta druga izjava zatvorena u zagradama, a zatim pokušate izvršiti operaciju na rezultatima ili pokušate pokrenuti sys.dm_exec_query_stats prikaz dinamičke kontrole, primit ćete pogrešne rezultate ili pogrešku.

Rješenje

Informacije o servisnom paketu Da biste riješili taj problem, Nabavite najnoviji servisni paket za SQL Server 2008. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:

968382 Kako nabaviti najnoviji servisni paket za SQL Server 2008

Zaobilazno rješenje

Da biste zaobišli te probleme, morate ukloniti zagrade iz naredbe koja slijedi prema uobičajenom izrazu tablice. Na primjer, razmotrite sljedeće s izjavom koja koristi takve zagradama.

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

Da biste zaobišli te probleme, promijenite sljedeće u izjavi koja ne koristi te zagradama.

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

Status

Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na". Taj je problem prvi put ispravljen u sustavu SQL Server 2008 Service Pack 2 (SP2).

Dodatne informacije

Dodatne informacije o korištenju naredbe WITH u uobičajenom izrazu tablice potražite na sljedećem MSDN web-mjestu:

S common_table_expression (Transact-SQL)Dodatne informacije o sys.dm_exec_query_stats potražite na sljedećem MSDN web-mjestu:

sys.dm_exec_query_stats (Transact-SQL)

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×