Masuk dengan Microsoft
Masuk atau buat akun.
Halo,
Pilih akun lain.
Anda memiliki beberapa akun
Pilih akun yang ingin Anda gunakan untuk masuk.

Gejala

Di komputer yang menjalankan Microsoft SQL Server 2008, Pertimbangkan skenario berikut ini.

Skenario 1

Anda menentukan ekspresi tabel Umum (CTE) dengan menggunakan pernyataan WITH. Misalnya, Anda menjalankan kueri berikut ini.

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

Lalu, Anda menjalankan kueri ini.

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

Dalam skenario ini, rencana kueri singgahan untuk kueri ini menyimpan nilai statement_start_offset dan statement_end_offset yang salah. Khususnya, Anda melihat nilai statement_end_offset lebih kecil dari nilai statement_start_offset saat Anda sys.dm_exec_query_stats menjalankan tampilan manajemen dinamis (DMV). Karena masalah ini, laporan kinerja mungkin gagal saat laporan mengasumsikan bahwa nilai statement_start_offset lebih kecil dari nilai statement_stop_offset.

Skenario 2

Anda menentukan ekspresi tabel umum dengan menggunakan pernyataan WITH, dan Anda menggunakan opsi MENGKOMPILASI ulang. Misalnya, Anda membuat fungsi di SQL Server 2008 dengan menggunakan skrip berikut ini.

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

Saat Anda menjalankan kueri "Pilih DBO. function1 ()", Anda menerima pesan kesalahan berikut:

Terjadi kesalahan parah pada perintah saat ini. Hasilnya, jika ada, harus dibuang.

Selain itu, kesalahan ini bisa terjadi tanpa opsi MENGKOMPILASI ulang jika Server SQL mengalami Traffic server yang padat.

Skenario 3

Anda menentukan ekspresi tabel umum dengan menggunakan pernyataan WITH. Dalam pernyataan WITH, Anda menentukan tabel yang tidak ada. Misalnya, Anda menjalankan kueri berikut ini.

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

Saat Anda menjalankan kueri ini, Anda tidak menerima kesalahan untuk tabel yang hilang.

Penyebab

Masalah ini terjadi karena pemrosesan yang tidak berfungsi dari pernyataan SELECT yang mengikuti pernyataan dengan. Pernyataan WITH menggunakan sintaks berikut ini.

WITH common_table_expression AS(CTE_query_definition)

Pernyataan ini kemudian membuat rangkaian hasil yang ditetapkan ke nama ekspresi tabel umum yang ditentukan. Lalu, Anda mengikuti Pernyataan ini dengan pernyataan SELECT. Jika pernyataan kedua ini dicantumkan dalam tanda kurung, lalu Anda mencoba melakukan operasi pada hasil atau Anda mencoba menjalankan tampilan manajemen sys.dm_exec_query_stats dinamis, Anda menerima hasil yang salah atau kesalahan.

Pemecahan Masalah

Informasi paket layanan Untuk mengatasi masalah ini, Dapatkan paket layanan terbaru untuk SQL Server 2008. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

968382 Cara mendapatkan paket layanan terbaru untuk SQL Server 2008

Penyelesaian Masalah

Untuk mengatasi masalah ini, Anda harus menghapus tanda kurung dari pernyataan yang mengikuti ekspresi tabel umum. Misalnya, pertimbangkan hal berikut ini dengan pernyataan yang menggunakan tanda kurung tersebut.

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

Untuk mengatasi masalah ini, Ubah ke berikut ini dengan pernyataan yang tidak menggunakan tanda kurung ini.

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

Status

Microsoft telah mengonfirmasikan bahwa ini adalah masalah di produk Microsoft yang tercantum di bagian "berlaku untuk". Masalah ini pertama kali dikoreksi di SQL Server 2008 Service Pack 2 (SP2).

Informasi Selengkapnya

Untuk informasi selengkapnya tentang cara menggunakan pernyataan WITH dengan ekspresi tabel yang sama, kunjungi situs web MSDN berikut:

DENGAN common_table_expression (Transact-SQL)Untuk informasi selengkapnya tentang sys.dm_exec_query_stats, kunjungi situs web MSDN berikut:

sys.dm_exec_query_stats (Transact-SQL)

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.

Apakah informasi ini berguna?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?
Dengan menekan kirim, umpan balik Anda akan digunakan untuk meningkatkan produk dan layanan Microsoft. Admin TI Anda akan dapat mengumpulkan data ini. Pernyataan Privasi.

Terima kasih atas umpan balik Anda!

×