次の方法で共有


MSSQLSERVER_8632

適用対象: SQL サーバー

詳細

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

説明

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

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

原因

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

select a, b + c, d + e

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

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

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

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

ユーザー アクション

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