Share via


MSSQLSERVER_8632

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 8632
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 QUERY_EXPRESSION_TOO_COMPLEX
メッセージ テキスト 内部エラー:Expression Service の制限に達しました。 クエリを確認し、複雑な式がある場合は簡素化してください。

説明

1 つの式に多数の識別子と定数を含む SQL Server でクエリを実行すると、エラー 8632 が発生します。 次のようなエラー メッセージがユーザーに報告されます。

サーバー: メッセージ 8632、レベル 17、状態 2、行 1
内部エラー:Expression Service の制限に達しました。 クエリを確認し、複雑な式がある場合は簡素化してください。

原因

この問題が発生するのは、1 つのクエリ式に含めることができる識別子と定数の数が SQL Server によって制限されるためです。 上限は 65,535 個です。 たとえば、次のクエリには式が 1 つだけ含まれています。

select a, b + c, d + e

この式は、5 つの列をすべて取得し、加算演算子を計算して、3 つの予想される結果をクライアントに送信します。

識別子と定数の数のテストは、SQL Server によって参照されているすべての識別子と定数が展開された後に実行されます。 たとえば、次の項目を展開できます。

  • 選択リストのアスタリスク (*)
  • ビュー
  • 計算列の定義

展開後の数値が制限を超えている場合は、クエリを実行できません。

ユーザー アクション

この問題を回避するには、クエリを書き直してください。 クエリの最大の式で参照する識別子と定数を減らします。 クエリの各式の識別子と定数の数が制限を超えないようにする必要があります。 これを行うには、クエリを複数の単一クエリに分割することが必要になる場合があります。 次に、一時的な中間結果を作成します。