cursor threshold サーバー構成オプションの構成Configure the cursor threshold Server Configuration Option

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

このトピックでは、 または SQL Server 2019 (15.x)SQL Server 2019 (15.x) を使用して、 SQL Server Management StudioSQL Server Management Studio cursor threshold Transact-SQLTransact-SQLサーバー構成オプションを構成する方法について説明します。This topic describes how to configure the cursor threshold server configuration option in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. cursor threshold オプションは、カーソル キーセットが非同期に生成されるカーソル セット内の行数を指定します。The cursor threshold option specifies the number of rows in the cursor set at which cursor keysets are generated asynchronously. カーソルが結果セットのキーセットを生成するとき、その結果セットに返される行数をクエリ オプティマイザーが予測します。When cursors generate a keyset for a result set, the query optimizer estimates the number of rows that will be returned for that result set. 返される行数がこのしきい値を超えていると予測された場合、カーソルは非同期に生成されます。これにより、ユーザーはカーソルの作成が続行されている間に行を取り出すことができます。If the query optimizer estimates that the number of returned rows is greater than this threshold, the cursor is generated asynchronously, allowing the user to fetch rows from the cursor while the cursor continues to be populated. 返される行数がこのしきい値以下と予測された場合、カーソルは同期をとって生成され、すべての行が返されるまでクエリが待機します。Otherwise, the cursor is generated synchronously, and the query waits until all rows are returned.

このトピックの内容In This Topic

はじめにBefore You Begin

制限事項と制約事項Limitations and Restrictions

  • SQL ServerSQL Server では、キーセット ドリブン カーソルまたは静的 Transact-SQLTransact-SQL カーソルの非同期な作成はサポートされません。does not support generating keyset-driven or static Transact-SQLTransact-SQL cursors asynchronously. Transact-SQLTransact-SQL カーソル操作はバッチで行われます。したがって、 Transact-SQLTransact-SQL カーソルを非同期に生成する必要はありません。cursor operations such as OPEN or FETCH are batched, so there is no need for the asynchronous generation of Transact-SQLTransact-SQL cursors. SQL ServerSQL Server 各カーソル操作におけるクライアントのラウンド トリップのため、待機時間が少ない OPEN が問題になるような非同期キーセット ドリブン カーソルまたは静的 API (アプリケーション プログラミング インターフェイス) サーバー カーソルは、 で引き続きサポートされます。continues to support asynchronous keyset-driven or static application programming interface (API) server cursors where low latency OPEN is a concern, due to client round trips for each cursor operation.

  • キーセットの行数を予測するクエリ オプティマイザーの精度は、カーソル内の各テーブルの統計の新しさによって左右されます。The accuracy of the query optimizer to determine an estimate for the number of rows in a keyset depends on the currency of the statistics for each of the tables in the cursor.


  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL ServerSQL Server プロフェッショナルだけが変更するようにしてください。This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional.

  • cursor threshold を -1 に設定すると、すべてのキーセットが同期して生成されます。これはカーソル セットが小さい場合に役立ちます。If you set cursor threshold to -1, all keysets are generated synchronously, which benefits small cursor sets. cursor threshold を 0 に設定すると、すべてのカーソル キーセットが非同期に生成されます。If you set cursor threshold to 0, all cursor keysets are generated asynchronously. それ以外の値を設定した場合、クエリ オプティマイザーによってカーソル セットの予測行数が比較され、 cursor thresholdに設定した値を超えていれば、キーセットが非同期に生成されます。With other values, the query optimizer compares the number of expected rows in the cursor set and builds the keyset asynchronously if it exceeds the number set in cursor threshold. 小さな結果セットは同期をとって作成する方がよいので、 cursor threshold の値は小さくしすぎないでください。Do not set cursor threshold too low, because small result sets are better built synchronously.



パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. ALTER SETTINGS 権限は、 sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

SQL Server Management Studio の使用Using SQL Server Management Studio

cursor threshold オプションを設定するにはTo configure the cursor threshold option

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。In Object Explorer, right-click a server and select Properties.

  2. [詳細設定] ノードをクリックします。Click the Advanced node.

  3. [その他][カーソルのしきい値] オプションを目的の値に変更します。Under Miscellaneous, change the Cursor Threshold option to the value you want.

Transact-SQL の使用Using Transact-SQL

cursor threshold オプションを設定するにはTo configure the cursor threshold option

  1. データベース エンジンDatabase Engineに接続します。Connect to the データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。From the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute. この例では、 sp_configure を使用して cursor threshold オプションを 0 に設定して、カーソル キーセットを非同期に生成する方法を示します。This example shows how to use sp_configure to set the cursor threshold option to 0 so that cursor keysets are generated asynchronously.

USE AdventureWorks2012 ;  
EXEC sp_configure 'show advanced options', 1 ;  
EXEC sp_configure 'cursor threshold', 0 ;  

詳細については、「 サーバー構成オプション (SQL Server)」を参照してください。For more information, see Server Configuration Options (SQL Server).

補足情報: cursor threshold オプションを構成した後Follow Up: After you configure the cursor threshold option

新しい設定は、サーバーを再起動しなくてもすぐに有効になります。The setting takes effect immediately without restarting the server.

参照See Also

@@CURSOR_ROWS (Transact-SQL) @@CURSOR_ROWS (Transact-SQL)
サーバー構成オプション (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)