MSSQLSERVER_8632
適用於:SQL Server
詳細資料
屬性 | 值 |
---|---|
產品名稱 | SQL Server |
事件識別碼 | 8632 |
事件來源 | MSSQLSERVER |
元件 | SQLEngine |
符號名稱 | QUERY_EXPRESSION_TOO_COMPLEX |
訊息文字 | 內部錯誤:已達到表達式服務限制。 請找出查詢中潛在的複雜運算式,並嘗試加以簡化。 |
說明
當您在 SQL Server 中執行包含單一表示式中大量識別碼和常數的查詢時,就會引發錯誤 8632。 如下的錯誤訊息會回報給使用者:
伺服器:訊息 8632、層級 17、狀態 2、第 1 行
內部錯誤:已達到表達式服務限制。 請找出查詢中潛在的複雜運算式,並嘗試加以簡化。
原因
之所以發生此問題,是因為 SQL Server 會限制可包含在查詢單一表示式中的標識碼和常數數目。 此限制為 65,535。 例如,下列查詢只有一個運算式:
select a, b + c, d + e
此表達式會擷取所有五個數據行、計算加法運算元,並將三個投影的結果傳送至用戶端。
SQL Server 展開所有參考的標識碼和常數之後,會執行標識碼和常數數目的測試。 例如,可能會展開下列專案:
- 選取清單中的星號 \
- 檢視
- 計算數據行定義
如果展開之後的數字超過限制,則查詢無法執行。
使用者動作
若要解決此問題,請重寫您的查詢。 參考查詢中最大運算式中的標識碼和常數較少。 您必須確定查詢的每個運算式中的識別碼和常數數目未超過限制。 若要這樣做,您可能必須將查詢分解成一個以上的單一查詢。 然後,建立暫時中繼結果。