Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Applies to:SQL Server
Details
| Attribute | Value |
|---|---|
| Product Name | SQL Server |
| Event ID | 2814 |
| Event Source | MSSQLSERVER |
| Component | SQLEngine |
| Symbolic Name | PR_POSSIBLE_INFINITE_RECOMPILE |
| Message Text | Kemungkinan kompilasi ulang tak terbatas terdeteksi untuk SQLHANDLE %hs, PlanHandle %hs, memulai offset %d, mengakhiri offset %d. Alasan kompilasi ulang terakhir adalah %d. |
Explanation
Satu atau beberapa pernyataan menyebabkan batch kueri kompilasi ulang setidaknya 50 kali. Pernyataan yang ditentukan harus dikoreksi untuk menghindari kompilasi ulang lebih lanjut.
Tabel berikut mencantumkan alasan kompilasi ulang.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Atur perubahan opsi |
| 5 | Tabel sementara diubah |
| 6 | Set baris jarak jauh diubah |
| 7 | Untuk izin penjelajahan diubah |
| 8 | Lingkungan pemberitahuan kueri berubah |
| 9 | PartitionView changed |
| 10 | Opsi kursor berubah |
| 11 | Opsi (kompilasi ulang) diminta |
| 12 | Rencana berparameter dibersihkan |
| 13 | Uji linierisasi rencana |
| 14 | Rencana yang memengaruhi versi database berubah |
| 15 | Kebijakan memaksa paket Penyimpanan Kueri diubah |
| 16 | Penerapan rencana Query Store gagal |
| 17 | Penyimpanan Query tidak memiliki rencana |
| 18 | Eksekusi interleaved diperlukan kompilasi ulang |
| 19 | Bukan kompilasi ulang |
| 20 | Petunjuk Penyimpanan Kueri diubah |
| 21 | Aplikasi petunjuk Penyimpanan Kueri gagal |
| 22 | Kompilasi ulang Penyimpanan Kueri untuk mengambil kueri kursor |
| 23 | Kompilasi ulang untuk membersihkan paket dispatcher multiplan |
Untuk menampilkan semua kode kompilasi, jalankan kueri tampilan manajemen dinamis berikut:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Tampilkan pernyataan yang menyebabkan kompilasi ulang dengan menjalankan kueri berikut. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. Kolom
database_namedanobject_nameadalahNULLuntuk ad hoc dan pernyataan Transact-SQL yang disiapkan.SELECT DB_NAME(st.dbid) AS database_name, OBJECT_NAME(st.objectid) AS object_name, st.text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(0x01000600B74C2A1300D2582A2100000000000000000000000000000000000000000000000000000000000000 /* replace the 0x01000600B... value with the actual sql_handle */ ) AS st WHERE qs.statement_start_offset = 123 /* replace 123 with actual starting_offset value */ AND qs.statement_end_offset = 456 /* replace 456 with actual ending_offset value */ AND qs.plan_handle = 0x06000100A27E7C1FA821B10600; /* replace 0x06000100A27E7C1FA821B10600 with actual plan_handle value */Berdasarkan deskripsi kode alasan, ubah pernyataan, batch, atau prosedur untuk menghindari kompilasi ulang. Misalnya, prosedur tersimpan mungkin berisi satu atau beberapa
SETpernyataan. Pernyataan ini harus dihapus dari prosedur.Untuk contoh selengkapnya tentang penyebab dan resolusi kompilasi ulang, lihat Masalah Kompilasi Batch, Kompilasi Ulang, dan Penembolokan Paket di SQL Server 2005. Untuk informasi selengkapnya tentang kompilasi ulang, lihat Rencana eksekusi kompilasi ulang.
Jika masalah berlanjut, hubungi Layanan Dukungan Pelanggan Microsoft.