Share via


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 展開所有參考的識別碼和常數之後,會執行識別碼和常數數目的測試。 例如,可能會展開下列專案:

  • 選取清單中的星號 \
  • 檢視
  • 計算資料行定義

如果展開之後的數位超過限制,則查詢無法執行。

使用者動作

若要解決此問題,請重寫您的查詢。 參考查詢中最大運算式中的識別碼和常數較少。 您必須確定查詢的每個運算式中的識別碼和常數數目未超過限制。 若要這樣做,您可能必須將查詢分解成一個以上的單一查詢。 然後,建立暫時中繼結果。