Transact-SQL IntelliSense のトラブルシューティング
IntelliSense オプションが正しく機能しないことがあります。
オンラインおよびオフラインの可用性
IntelliSense のメンバーの一覧、入力候補、パラメーター ヒント、クイック ヒントの機能は、特定の条件下でのみ、Transact-SQL エディターで使用できます。これらの機能の詳細については、「Transact-SQL IntelliSense の概要」を参照してください。
これらの機能の可用性は、主に 2 つの要因によって決まります。
**SQL Server のインスタンスへの接続:**SQL Server のインスタンスに接続されているときは、IntelliSense を使用できます。この場合、IntelliSense メタデータは接続から派生します。編集しているファイルがデータベース プロジェクトに関連付けられているときでも同様です。
**データベース プロジェクトへの関連付け:**Transact-SQL エディターを使用して編集しているファイルがデータベース プロジェクトに関連付けられていると、IntelliSense を使用できます。この場合、SQL Server のインスタンスに接続していないときは、IntelliSense メタデータは、プロジェクトに関連付けられているデータベース オブジェクトから派生します。
これらの要因がメンバーの一覧、入力候補、パラメーター ヒント、およびクイック ヒントの機能の可用性に及ぼす影響を次の表に示します。
SQL Server のインスタンスに接続されているか。 |
データベース プロジェクトに関連付けられているか。 |
使用可/不可 |
メモ |
---|---|---|---|
はい |
はい |
使用可 |
接続ベースの IntelliSense |
はい |
いいえ |
使用可 |
接続ベースの IntelliSense |
いいえ |
はい |
使用可 |
プロジェクト ベースの IntelliSense |
いいえ |
いいえ |
不可 |
Transact-SQL エディターが SQL Server のインスタンスに接続されている場合、IntelliSense は使用可能で、そのデータベース接続に関連付けられているオブジェクトが表示されます。Transact-SQL エディターが SQL Server のインスタンスに接続されていない場合、IntelliSense 情報はデータベース プロジェクトに関連付けられているオブジェクトから取得されます。Transact-SQL エディターが SQL Server のインスタンスに接続されておらず、データベース プロジェクトにも関連付けられていない場合、IntelliSense は使用できません。
IntelliSense の解析機能と Transact-SQL コード スニペット機能は、エディターがプロジェクトに関連付けられていない場合や、SQL Server のインスタンスに接続されていない場合でも、常に使用できます。
IntelliSense が影響を受けるその他の条件
次の場合に IntelliSense の動作が影響を受ける可能性があります。
カーソルよりも上にコード エラーがある場合
挿入ポイントの位置よりも上に不完全なステートメントや他のコーディング エラーがあると、IntelliSense は、コードの要素を解析できないので正しく機能しないことがあります。IntelliSense を再び有効にするために、該当するコードをコメント化できます。
コードのコメント内に挿入ポイントがある場合
挿入ポイントがソース ファイルのコメント内にある場合は、IntelliSense オプションを使用できません。
文字列リテラル内に挿入ポイントがある場合
挿入ポイントが引用符で囲んだ文字列リテラル内にある場合は、IntelliSense オプションを使用できません。以下はその例です。
WHERE FirstName LIKE 'Patri%|'
機能は無効になっています。
既定では、IntelliSense の多くの機能が自動的に実行されるようになっていますが、各機能を無効にすることもできます。
入力候補機能を無効にしている場合でも、その他の IntelliSense 機能を使用することは可能です。詳細については、「Modifying IntelliSense Options」を参照してください。
Transact-SQL エディターに関する考慮事項
Transact-SQL エディターに関しては、次の点に注意してください。
Transact-SQL エディターの IntelliSense 機能では、すべての Transact-SQL 構文要素がサポートされているわけではありません。パラメーターのヘルプでは、拡張ストアド プロシージャなど、一部のオブジェクトのパラメーターがサポートされていません。詳細については、「IntelliSense でサポートされている Transact-SQL 構文」を参照してください。
Intellisense は、Transact-SQL エディターが SQL Server 2008 より以前のバージョンの SQL Server データベース エンジン に接続されているときは使用できません。
Transact-SQL エディターがプロジェクトに関連付けられておらず、また Transact-SQL エディターがデータベース エンジンに接続されていない場合は、Transact-SQL エディターで IntelliSense を使用することはできません。
SQLCMD モードを有効にすると、Transact-SQL エディターの IntelliSense が無効になります。
IntelliSense 機能は、現在のエディター ウィンドウがデータベースに接続された後に別の接続で作成されたデータベース オブジェクトには対応していません。エディター ウィンドウのオブジェクトのキャッシュを更新するには、次の 3 つのメカニズムのいずれかを選択します。
SQL Server のインスタンスに接続されている場合、Transact-SQL 編集セッション中にインスタンスで CREATE、ALTER、または DROP コマンドを実行しても、それによって行われた変更は IntelliSense キャッシュには反映されません。IntelliSense キャッシュを更新するには、[編集] メニューの [IntelliSense] をポイントし、[ローカル キャッシュの更新] をクリックします。
ショートカット キーの Ctrl + K を使用し、続いて Ctrl + R を使用します。
権限のないデータベース オブジェクトは入力候補一覧に表示されません。IntelliSense は、権限のあるオブジェクトへの参照にフラグを付けます。たとえば、別のユーザーが記述したスクリプトを開いた場合、そのユーザーには権限があるものの自分には権限のないオブジェクトへの参照には無効のフラグが付けられます。
SQL Server のインスタンスへの接続が失われると、入力候補一覧が機能しなくなることがあります。インスタンスに再接続してください。