適用対象:SQL Server
この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で cursor threshold サーバー構成オプションを構成する方法について説明します。
cursor threshold オプションでは、カーソル キーセットが非同期に生成されるカーソル セット内の行数を指定します。 カーソルで結果セットのキーセットを生成するときに、その結果セットに返される行数をクエリ オプティマイザーが予測します。 返される行数がこのしきい値を超えていると予測された場合、カーソルは非同期に生成されます。これにより、ユーザーはカーソルの作成が続行されている間に行を取り出すことができます。 返される行数がこのしきい値以下と予測された場合、カーソルは同期をとって生成され、すべての行が返されるまでクエリが待機します。
制限事項
SQL Server では、キーセット ドリブン カーソルや静的 Transact-SQL カーソルの非同期生成はサポートされていません。
OPEN や FETCH などの Transact-SQL カーソル操作はバッチ処理されるため、Transact-SQL カーソルを非同期で生成する必要はありません。 各カーソル操作におけるクライアントのラウンド トリップのため、待機時間が少ない OPEN が問題になるような非同期キーセット ドリブン カーソルまたは静的 API (アプリケーション プログラミング インターフェイス) サーバー カーソルは、SQL Server で引き続きサポートされます。
キーセットの行数を予測するクエリ オプティマイザーの精度は、カーソル内の各テーブルの統計の新しさによって左右されます。
推奨事項
このオプションは高度なオプションであり、経験豊富なデータベースプロフェッショナルのみが変更する必要があります。
cursor threshold を -1 に設定すると、すべてのキーセットが同期的に生成されます。これはカーソル セットが小さい場合に役立ちます。
cursor threshold を 0 に設定すると、すべてのカーソル キーセットが非同期的に生成されます。 他の値を使用すると、クエリ オプティマイザーはカーソル セットの予測行数を比較し、cursor threshold で設定された数を超えた場合にキーセットを非同期的に構築します。 小さい結果セットは同期的に構築する方がよいので、cursor threshold を低く設定しすぎないようにしてください。
アクセス許可
パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。
ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。
SQL Server Management Studio の使用 [SQL Server]
オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。
[詳細設定] ノードを選びます。
[その他] の
cursor thresholdオプションを目的の値に変更します。
Transact-SQL の使用
データベース エンジンに接続します。
標準バーから、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 sp_configure を使用して
cursor thresholdオプションを0に設定して、カーソル キーセットを非同期に生成する方法を示します。USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'cursor threshold', 0; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
詳しくは、「サーバー構成オプション」をご覧ください。
補足情報: cursor threshold オプションを構成した後
新しい設定は、サーバーを再起動しなくてもすぐに有効になります。