設定 locks 伺服器組態選項
此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 2012 中設定 locks 伺服器組態選項。 locks 選項會設定可用鎖定的最大數目,藉此限制 SQL Server Database Engine 用於鎖定的記憶體數量。 預設值為 0,允許 Database Engine 根據變更系統需求,動態配置與取消配置鎖定結構。
重要事項 |
---|
未來的 Microsoft SQL Server 版本將移除這項功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。 |
本主題內容
開始之前:
建議
安全性
使用下列方法設定 locks 選項:
SQL Server Management Studio
Transact-SQL
待處理:設定 locks 選項之後
開始之前
建議
這個選項是進階選項,只有有經驗的資料庫管理員或通過認證的 SQL Server 技術人員才可變更。
如果伺服器啟動時是將 locks 設為 0,則鎖定管理員會從 Database Engine 取得足夠的記憶體,以供 2,500 個鎖定結構的初始集區使用。 當鎖定集區耗盡時,就會再為集區取得額外的記憶體。
一般而言,如果鎖定集區所需的記憶體多於 Database Engine 記憶體集區可提供的數量,而且還有更多的電腦記憶體可用 (尚未達到 max server memory 臨界值) 的話,Database Engine 會動態配置記憶體,以滿足鎖定要求。 然而,如果配置該記憶體會造成作業系統層級的分頁 (例如,如果另一個應用程式與 SQL Server 執行個體在同一部電腦上執行而且它正在使用該記憶體),就無法再配置鎖定空間。 動態鎖定集區所取得的記憶體不會超過 Database Engine 配置記憶體的 60%。 當鎖定集區達到 Database Engine 執行個體所取得之記憶體的 60%,或電腦上沒有多餘的記憶體可用時,之後的鎖定要求都會產生錯誤。
讓 SQL Server 動態地使用鎖定,是建議的組態。 但是,您可以設定 locks,並覆寫 SQL Server 動態配置鎖定資源的功能。 當 locks 設為 0 以外的數值時,Database Engine 所能配置的鎖定無法超過 locks 中指定的值。 如果 SQL Server 顯示訊息表示已超過可用的鎖定個數,就應增加這個值。 因為每個鎖定都會耗用記憶體 (每個鎖定 96 個位元組),所以增加這個值可能需要增加伺服器專用的記憶體數量。
locks 選項也會影響發生鎖定擴大的時機。 locks 設為 0 時,鎖定擴大會在目前的鎖定結構所用的記憶體達到 Database Engine 記憶體集區的 40% 時發生。 locks 未設為 0 時,鎖定擴大會在鎖定個數達到 locks 指定數值的 40% 時發生。
安全性
權限
依預設,所有使用者都會取得不含參數或只含第一個參數之 sp_configure 的執行權限。 若要執行同時設定了兩個參數的 sp_configure 來變更組態選項或執行 RECONFIGURE 陳述式,使用者必須取得 ALTER SETTINGS 伺服器層級權限。 系統管理員 (sysadmin) 和伺服器管理員 (serveradmin) 固定伺服器角色會隱含地擁有 ALTER SETTINGS 權限。
[回到頁首]
使用 SQL Server Management Studio
若要設定 locks 選項
在 [物件總管] 中,以滑鼠右鍵按一下伺服器,然後選取 [屬性]。
按一下 [進階] 節點。
在 [平行處理原則] 下,輸入所需的 locks 選項值。
使用 locks 選項來設定可用鎖定的最大數目,從而限制 SQL Server 用於鎖定的記憶體數量。
[回到頁首]
使用 Transact-SQL
若要設定 locks 選項
連接到 Database Engine。
在標準列中,按一下 [新增查詢]。
將下列範例複製並貼到查詢視窗中,然後按一下 [執行]。 此範例示範如何使用 sp_configure 設定 locks 選項的值,將可供所有使用者使用的鎖定數目設定為 20000。
Use AdventureWorks2012 ;
GO
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'locks', 20000;
GO
RECONFIGURE;
GO
如需詳細資訊,請參閱<伺服器組態選項>。
[回到頁首]
待處理:設定 locks 選項之後
伺服器必須重新啟動之後,設定才能生效。
[回到頁首]