次の方法で共有


サーバー構成: カーソルのしきい値

適用対象: SQL Server

この記事では、SQL Server Management Studio または Transact-SQL を cursor threshold 使用して SQL Server のサーバー構成オプションを構成する方法について説明します。 このオプションは cursor threshold 、カーソル・キーセットが非同期に生成されるカーソル・セット内の行数を指定します。 カーソルによって結果セットのキーセットが生成されると、クエリ オプティマイザーは、その結果セットに対して返される行数を見積もります。 返される行数がこのしきい値を超えていると予測された場合、カーソルは非同期に生成されます。これにより、ユーザーはカーソルの作成が続行されている間に行を取り出すことができます。 返される行数がこのしきい値以下と予測された場合、カーソルは同期をとって生成され、すべての行が返されるまでクエリが待機します。

制限事項

SQL Server では、キーセットドリブンカーソルまたは静的 Transact-SQL カーソルの非同期生成はサポートされていません。 Transact-SQL カーソルの操作 (バッチ処理などOPENFETCH) を使用するため、Transact-SQL カーソルを非同期で生成する必要はありません。 SQL Server では、カーソル操作ごとにクライアントのラウンド トリップが発生するため、待機時間 OPEN が短いことが懸念される非同期キーセット駆動型または静的アプリケーション プログラミング インターフェイス (API) サーバー カーソルが引き続きサポートされます。

キーセットの行数を予測するクエリ オプティマイザーの精度は、カーソル内の各テーブルの統計の新しさによって左右されます。

推奨事項

このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL Server プロフェッショナルだけが変更するようにしてください。

-1設定cursor thresholdすると、すべてのキーセットが同期的に生成されるため、小さなカーソル セットにメリットがあります。 に0設定cursor thresholdすると、すべてのカーソル キーセットが非同期的に生成されます。 他の値を使用すると、クエリ オプティマイザーはカーソル セット内の予想される行数を比較し、キーセットが設定 cursor thresholdされた数を超えた場合に非同期的にキーセットを構築します。 小さな結果セットは同期的に構築する方が優れているため、低く設定 cursor threshold しないでください。

アクセス許可

パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。 ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。

SQL Server Management Studio の使用 [SQL Server]

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。

  2. [詳細設定] ノードを選びます。

  3. [ その他] で、オプションを cursor threshold 目的の値に変更します。

Transact-SQL の使用

  1. データベース エンジンに接続します。

  2. 標準バーから、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 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
    

詳しくは、「サーバー構成オプション」をご覧ください。

補足情報: カーソルしきい値オプションを構成した後

新しい設定は、サーバーを再起動しなくてもすぐに有効になります。