MSSQLSERVER_8632
Si applica a: SQL Server
Dettagli
Attributo | valore |
---|---|
Nome prodotto | SQL Server |
ID evento | 8632 |
Origine evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbolico | QUERY_EXPRESSION_TOO_COMPLEX |
Testo del messaggio | Errore interno: è stato raggiunto un limite per i servizi di gestione delle espressioni. Provare a semplificare la query rimuovendo le espressioni particolarmente complesse. |
Spiegazione
L'errore 8632 viene generato quando si esegue una query in SQL Server che contiene un numero elevato di identificatori e costanti in una singola espressione. Viene segnalato all'utente un messaggio di errore simile al seguente:
Server: Messaggio 8632, Livello 17, Stato 2, Riga 1
Errore interno: è stato raggiunto un limite per i servizi di gestione delle espressioni. Provare a semplificare la query rimuovendo le espressioni particolarmente complesse.
Causa
Questo problema si verifica perché SQL Server limita il numero di identificatori e costanti che possono essere contenuti in una singola espressione di una query. Il limite è 65.535. La query seguente, ad esempio, include solo un'espressione:
select a, b + c, d + e
Questa espressione recupera tutte e cinque le colonne, calcola gli operatori di addizione e invia tre risultati previsti al client.
Il test per il numero di identificatori e costanti viene eseguito dopo che SQL Server espande tutti gli identificatori e le costanti a cui si fa riferimento. Ad esempio, gli elementi seguenti potrebbero essere espansi:
- L'asterisco (*) nell'elenco di selezione
- Una vista
- Una definizione di colonna calcolata
Se il numero dopo l'espansione supera il limite, non sarà possibile eseguire la query.
Azione utente
Per ovviare a questo problema, riscrivere la query. Fare riferimento a un numero inferiore di identificatori e costanti nell'espressione più grande nella query. È necessario assicurarsi che il numero di identificatori e costanti in ogni espressione della query non superi il limite. A tale scopo, potrebbe essere necessario suddividere una query in più query e creare quindi un risultato intermedio temporaneo.