Bagikan melalui


MSSQLSERVER_8632

Berlaku untuk: SQL Server

Detail

Atribut Nilai
Nama Produk SQL Server
ID Peristiwa 8632
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis QUERY_EXPRESSION_TOO_COMPLEX
Teks Pesan Kesalahan internal: Batas layanan ekspresi telah tercapai. Silakan cari ekspresi yang berpotensi kompleks dalam kueri Anda, dan cobalah untuk menyederhanakannya.

Penjelasan

Kesalahan 8632 muncul saat Anda menjalankan kueri di SQL Server yang berisi sejumlah besar pengidentifikasi dan konstanta dalam satu ekspresi. Pesan kesalahan seperti berikut ini dilaporkan kepada pengguna:

Server: Msg 8632, Tingkat 17, Status 2, Baris 1
Kesalahan internal: Batas layanan ekspresi telah tercapai. Silakan cari ekspresi yang berpotensi kompleks dalam kueri Anda, dan cobalah untuk menyederhanakannya.

Penyebab

Masalah ini terjadi karena SQL Server membatasi jumlah pengidentifikasi dan konstanta yang dapat dimuat dalam satu ekspresi kueri. Batas ini adalah 65.535. Misalnya, kueri berikut hanya memiliki satu ekspresi:

select a, b + c, d + e

Ekspresi ini mengambil kelima kolom, menghitung operator penambahan, dan mengirim tiga hasil yang diproyeksikan ke klien.

Pengujian untuk jumlah pengidentifikasi dan konstanta dilakukan setelah SQL Server memperluas semua pengidentifikasi dan konstanta yang direferensikan. Misalnya, item berikut dapat diperluas:

  • Tanda bintang (*) dalam daftar pilih
  • Tampilan
  • Definisi kolom komputasi

Jika angka setelah ekspansi melebihi batas, kueri tidak dapat berjalan.

Tindakan pengguna

Untuk mengatasi masalah ini, tulis ulang kueri Anda. Mereferensikan lebih sedikit pengidentifikasi dan konstanta dalam ekspresi terbesar dalam kueri. Anda harus memastikan bahwa jumlah pengidentifikasi dan konstanta dalam setiap ekspresi kueri tidak melebihi batas. Untuk melakukan ini, Anda mungkin harus memecah kueri menjadi lebih dari satu kueri tunggal. Kemudian, buat hasil perantara sementara.