共用方式為


伺服器組態:鎖定

適用於:SQL Server

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

重要

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

建議

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

當伺服器從 設定為 0開始locks時,鎖定管理員會從 資料庫引擎 取得足夠的記憶體,以便初始集區 2,500 個鎖定結構。 當鎖定集區耗盡時,會為集區取得更多記憶體。

一般而言,如果鎖定集區所需的記憶體比 資料庫引擎 記憶體集區中可用的記憶體還多,而且有更多可用的計算機記憶體(max server memory尚未達到閾值),則 資料庫引擎 動態配置記憶體以滿足鎖定的要求。 不過,如果配置該記憶體會導致操作系統層級的分頁(例如,如果另一個應用程式在與 SQL Server 實例相同的電腦上執行並使用該記憶體),則不會配置更多的鎖定空間。 動態鎖定集區不會取得配置給 資料庫引擎的 60% 以上的記憶體。 鎖定集區達到 資料庫引擎 實例取得的記憶體的 60%,或計算機上沒有更多記憶體可用之後,進一步要求鎖定會產生錯誤。

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

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

權限

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

使用 SQL Server Management Studio

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

  2. 選取 [進階] 節點。

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

    locks使用 選項可設定可用鎖定數目上限,這會限制 SQL Server 用於這些鎖定的記憶體數量。

使用 Transact-SQL

  1. 連線至資料庫引擎。

  2. 在標準列上,選取 [新增查詢]

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

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'locks', 20000;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

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

待處理:設定鎖定選項之後

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