適用於:SQL Server
本文說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中設定 locks 伺服器組態選項。 選項locks會設定可用鎖定的最大數目,這會限制 SQL Server 資料庫引擎 用於這些鎖定的記憶體數量。 預設值為 0,允許資料庫引擎根據變更系統需求,動態配置與取消配置鎖定結構。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
建議
此選項是進階選項,只能由經驗豐富的資料庫專業人員變更。
當伺服器以 locks 設為 0 的方式啟動時,鎖定管理員會從資料庫引擎取得足夠的記憶體,供初始集區使用的 2,500 個鎖定結構。 當鎖定集區耗盡時,會為該集區配置更多記憶體。
一般而言,如果鎖定集區所需的記憶體比 資料庫引擎 記憶體集區中可用的記憶體還多,而且有更多可用的計算機記憶體(max server memory (MB)尚未達到閾值),則 資料庫引擎 動態配置記憶體以滿足鎖定的要求。 不過,如果配置該記憶體會導致操作系統層級的分頁(例如,如果另一個應用程式在與 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 伺服器層級權限。
ALTER SETTINGS 權限由 sysadmin 和 serveradmin 固定伺服器角色隱含擁有。
使用 SQL Server Management Studio
在物件總管中,請以滑鼠右鍵按一下伺服器,然後選取 [屬性]。
選取 Advanced 節點。
在 平行處理 下,輸入
locks選項所需的值。locks使用 選項可設定可用鎖定數目上限,這會限制 SQL Server 用於這些鎖定的記憶體數量。
使用 Transact-SQL
連線至資料庫引擎。
在標準列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例示範如何使用 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
如需詳細資訊,請參閱伺服器設定選項。
後續操作:設定鎖定選項後
伺服器必須重新啟動之後,設定才能生效。