設定 locks (伺服器組態選項)

適用於:SQL Server

本主題說明如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中設定 locks 伺服器設定選項。 locks 選項會設定可用鎖定的最大數目,藉此限制 SQL Server 資料庫引擎用於鎖定的記憶體數量。 預設值為 0,允許資料庫引擎根據變更系統需求,動態配置與取消配置鎖定結構。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

本主題內容

開始之前

建議

  • 此選項是進階選項,只有具經驗的資料庫管理員或通過認證的 SQL Server 專業人員才可變更。

  • 如果伺服器啟動時是將 locks 設為 0,則鎖定管理員會從資料庫引擎取得足夠的記憶體,以供 2,500 個鎖定結構的初始集區使用。 當鎖定集區耗盡時,就會再為集區取得額外的記憶體。

    一般而言,如果鎖定集區所需的記憶體多於資料庫引擎記憶體集區可提供的數量,而且還有更多的電腦記憶體可用 (尚未達到 max server memory 臨界值) 的話,資料庫引擎會動態配置記憶體,以滿足鎖定要求。 然而,如果配置該記憶體會造成作業系統層級的分頁 (例如,如果另一個應用程式與 SQL Server 執行個體在同一部電腦上執行而且它正在使用該記憶體),就無法再配置鎖定空間。 動態鎖定集區所取得的記憶體不會超過資料庫引擎配置記憶體的 60%。 當鎖定集區達到資料庫引擎執行個體所取得之記憶體的 60%,或電腦上沒有多餘的記憶體可用時,之後的鎖定要求都會產生錯誤。

    讓 SQL Server 動態地使用鎖定,是建議的設定。 但是,您可以設定 locks ,並覆寫 SQL Server 動態配置鎖定資源的功能。 當 locks 設為 0 以外的數值時,資料庫引擎 所能配置的鎖定無法超過 locks 中指定的值。 如果 SQL Server 顯示訊息表示已超過可用的鎖定個數,就應增加這個值。 因為每個鎖定都會耗用記憶體 (每個鎖定 96 個位元組),所以增加這個值可能需要增加伺服器專用的記憶體數量。

  • locks 選項也會影響發生鎖定擴大的時機。 locks 設為 0 時,鎖定擴大會在目前的鎖定結構所用的記憶體達到資料庫引擎記憶體集區的 40% 時發生。 locks 未設為 0 時,鎖定擴大會在鎖定個數達到 locks指定數值的 40% 時發生。

安全性

權限

不含參數或只含第一個參數之 sp_configure 上的執行權限預設會授與所有使用者。 以同時設定兩個參數的 sp_configure 來變更組態選項或執行 RECONFIGURE 陳述式時,使用者必須取得 ALTER SETTINGS 伺服器層級權限。 系統管理員 (sysadmin)serveradmin 固定伺服器角色會隱含 ALTER SETTINGS 權限。

使用 SQL Server Management Studio

若要設定 locks 選項

  1. 在物件總管中,請以滑鼠右鍵按一下伺服器,然後選取 [屬性]。

  2. 按一下 [進階] 節點。

  3. [平行處理原則] 下,輸入所需的 locks 選項值。

    使用 locks 選項來設定可用鎖定的最大數目,從而限制 SQL Server 用於鎖定的記憶體數量。

使用 TRANSACT-SQL

若要設定 locks 選項

  1. 連線至資料庫引擎。

  2. 在標準列中,按一下 [新增查詢]

  3. 複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。 此範例示範如何使用 sp_configure 設定 locks 選項的值,將可供所有使用者使用的鎖定數目設定為 20000

USE AdventureWorks2022;  
GO  
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'locks', 20000;  
GO  
RECONFIGURE;  
GO  

如需詳細資訊,請參閱伺服器設定選項 (SQL Server)

待處理:設定 locks 選項之後

伺服器必須重新啟動之後,設定才能生效。

另請參閱

RECONFIGURE (Transact-SQL)
伺服器組態選項 (SQL Server)
sp_configure (Transact-SQL)