暗黙のカーソル変換の使用
アプリケーションは、ある種類のカーソルを要求した後でも、要求した種類のサーバー カーソルがサポートしていない Transact-SQL ステートメントを実行できます。その場合、MicrosoftSQL Server では、カーソルの種類が変更されたことを示すエラーが返されます。この変換を暗黙のカーソル変換と呼びます。また、カーソルの下位変換と呼ばれることもあります。
SQL Server では、次の表に示す要因によって、カーソルがある種類から別の種類へ暗黙的に変換されます。
ステップ |
変換を引き起こす要因 |
順方向専用 |
キーセット ドリブン |
動的 |
次のステップ |
---|---|---|---|---|---|
1 |
クエリの FROM 句でテーブルが参照されていません。 |
静的カーソルになります。 |
静的カーソルになります。 |
静的カーソルになります。 |
完了 |
2 |
クエリに、GROUP BY UNION DISTINCT HAVING を集計する選択リストが含まれています。 |
静的カーソルになります。 |
静的カーソルになります。 |
静的カーソルになります。 |
完了 |
3 |
クエリで内部作業テーブルが生成されます。たとえば、ORDER BY の列がインデックスで対応されない場合などです。 |
キーセット カーソルになります。 |
|
キーセット カーソルになります。 |
5 |
4 |
クエリで、リンク サーバー内のリモート テーブルが参照されています。 |
キーセット カーソルになります。 |
|
キーセット カーソルになります。 |
5 |
5 |
クエリで、一意インデックスが設定されていないテーブルが少なくとも 1 つ参照されています。Transact-SQL カーソルのみです。 |
|
静的カーソルになります。 |
|
完了 |
注意 |
---|
高速順方向専用カーソルが変換されることはありません。 |
注意 |
---|
基になるベース テーブルに一意インデックスがない場合、またはクエリがベース テーブルのキー列を直接返さない場合は、キーセット カーソルと動的カーソルのみが変換されます。たとえば、クエリに集計関数や set 演算子が指定されている場合などです。 |