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

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 または を使用して、 SQL Server 2017SQL Server 2017SQL Server Management StudioSQL Server Management Studio locks Transact-SQLTransact-SQLサーバー構成オプションを構成する方法について説明します。This topic describes how to configure the locks server configuration option in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. locks オプションは、使用できるロックの最大数を設定することによって、 SQL Server データベース エンジンSQL Server Database Engine がそのために使用するメモリの量を制限します。The locks option sets the maximum number of available locks, thereby limiting the amount of memory the SQL Server データベース エンジンSQL Server Database Engine uses for them. 既定値は 0 です。0 の場合、 データベース エンジンDatabase Engine はシステム要件の変更に基づいてロック構造を動的に割り当てたり、割り当てを解除したりできます。The default setting is 0, which allows the データベース エンジンDatabase Engine to allocate and deallocate lock structures dynamically, based on changing system requirements.


この機能は、Microsoft SQL Server の将来のバージョンで削除されます。This feature will be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.

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

はじめにBefore You Begin


  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された 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.

  • locks を 0 に設定してサーバーを起動すると、ロック マネージャーは 2,500 個のロック構造の初期プール用に データベース エンジンDatabase Engine から十分なメモリを取得します。When the server is started with locks set to 0, the lock manager acquires sufficient memory from the データベース エンジンDatabase Engine for an initial pool of 2,500 lock structures. ロック プールがなくなると、プール用のメモリが追加取得されます。As the lock pool is exhausted, additional memory is acquired for the pool.

    通常、 データベース エンジンDatabase Engine のメモリ プールから取得できるメモリよりも多くのメモリがロック プールに必要であり、より多くのコンピューター メモリが使用できる ( max server memory のしきい値に達していない) 場合、 データベース エンジンDatabase Engine はメモリを動的に割り当ててロック要求に応じます。Generally, if more memory is required for the lock pool than is available in the データベース エンジンDatabase Engine memory pool, and more computer memory is available (the max server memory threshold has not been reached), the データベース エンジンDatabase Engine allocates memory dynamically to satisfy the request for locks. ただし、そのメモリを割り当てることによって、オペレーティング システム レベルでページングが発生する場合、たとえば、別のアプリケーションが SQL ServerSQL Server のインスタンスと同じコンピューター上で実行されていて、そのメモリを使用している場合は、ロック用に割り当てを増やすことはできません。However, if allocating that memory would cause paging at the operating system level (for example, if another application is running on the same computer as an instance of SQL ServerSQL Server and using that memory), more lock space is not allocated. 動的なロック プールは、 データベース エンジンDatabase Engineに割り当てられたメモリのうち最大 60% まで取得できます。The dynamic lock pool does not acquire more than 60 percent of the memory allocated to the データベース エンジンDatabase Engine. ロック プールが データベース エンジンDatabase Engineのインスタンスによって取得されたメモリの 60% に達した場合、またはコンピューターで使用できるメモリがなくなった場合、さらにロック要求があるとエラーが発生します。After the lock pool has reached 60 percent of the memory acquired by an instance of the データベース エンジンDatabase Engine, or no more memory is available on the computer, further requests for locks generate an error.

    SQL ServerSQL Server が動的にロックを割り当てるように構成することをお勧めします。Allowing SQL ServerSQL Server to use locks dynamically is the recommended configuration. ただし、locks を設定し、ロック リソースを動的に割り当てる SQL ServerSQL Server の機能をオーバーライドすることができます。However, you can set locks and override the ability of SQL ServerSQL Server to allocate lock resources dynamically. locks が 0 以外の値に設定されている場合、 データベース エンジンDatabase Enginelocksに指定された値よりも多くのロックを割り当てることができません。When locks is set to a value other than 0, the データベース エンジンDatabase Engine cannot allocate more locks than the value specified in locks. SQL ServerSQL Server に使用可能なロック数を超えたことを示すメッセージが表示された場合は、この値を大きくします。Increase this value if SQL ServerSQL Server displays a message that you have exceeded the number of available locks. 各ロックはそれぞれ 96 バイトのメモリを消費するため、この値を大きくした場合、状況によってはサーバー専用のメモリも増やす必要があります。Because each lock consumes memory (96 bytes per lock), increasing this value can require increasing the amount of memory dedicated to the server.

  • locks オプションも、ロックのエスカレートがいつ行われるかに影響を与えます。The locks option also affects when lock escalation occurs. locks を 0 に設定すると、現在のロック構造で使用されるメモリが データベース エンジンDatabase Engine のメモリ プールの 40% に達したときに、ロックのエスカレートが行われます。When locks is set to 0, lock escalation occurs when the memory used by the current lock structures reaches 40 percent of the データベース エンジンDatabase Engine memory pool. locks が 0 に設定されていない場合は、ロック数が locksに指定された値の 40% に達したときに、ロックのエスカレートが行われます。When locks is not set to 0, lock escalation occurs when the number of locks reaches 40 percent of the value specified for locks.



パラメーターなしで、または最初のパラメーターだけを指定して 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

locks オプションを構成するにはTo configure the locks option

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

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

  3. [並列処理] で、 locks オプションの目的の値を入力します。Under Parallelism, type the desired value for the locks option.

    locks オプションは、使用可能なロックの最大数を設定して、 SQL ServerSQL Server によってロックに使用されるメモリの量を制限するために使用します。Use the locks option to set the maximum number of available locks, thereby limiting the amount of memory SQL ServerSQL Server uses for them.

Transact-SQL の使用Using Transact-SQL

locks オプションを構成するにはTo configure the locks 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 を使用して locks オプションの値を設定する方法を示します。使用できるロックの数をユーザー全体で 20000に設定します。This example shows how to use sp_configure to set the value of the locks option to set the number of locks available for all users to 20000.

Use AdventureWorks2012 ;  
sp_configure 'show advanced options', 1;  
sp_configure 'locks', 20000;  

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

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

設定を有効にするには、サーバーを再起動する必要があります。The server must be restarted before the setting can take effect.

参照See Also

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