設定伺服器組態選項
您可以使用 SQL Server Management Studio 或 sp_configure 系統預存程序,透過組態選項來管理及最佳化 SQL Server 資源。最常用的伺服器組態選項可以透過 SQL Server Management Studio 來使用,而所有組態選項都可以透過 sp_configure 來存取。在設定這些選項前,請仔細考慮這些選項對系統所造成的效果。
重要事項 |
---|
只有有經驗的資料庫管理員或通過認證的 SQL Server 技術人員,才可變更進階選項。 |
使用 sp_configure 系統預存程序
使用 sp_configure 時,您必須在設定組態選項之後,執行 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE。RECONFIGURE WITH OVERRIDE 陳述式通常是保留給應該非常小心使用的組態選項。但是 RECONFIGURE WITH OVERRIDE 對所有組態選項都有效,所以它可以取代 RECONFIGURE。
[!附註]
RECONFIGURE 會在交易中執行。如果任何重新設定作業失敗,所有重新設定作業都不會生效。
可以利用下列陳述式來判斷每個選項的值。
SELECT * FROM sys.configurations
ORDER BY name ;
GO
下列範例將示範如何使用 sp_configure,將 fill factor 選項從預設設定變更為 100 的值。
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'fill factor', 100;
GO
RECONFIGURE;
GO
設定選項的範疇
設定選項的生效方式可能是其中之一:
在設定選項並發出 RECONFIGURE 陳述式 (在某些情況下是 RECONFIGURE WITH OVERRIDE) 後立即生效。
- 或 -
執行上述動作並重新啟動 SQL Server 執行個體後。
若要設定進階選項,您必須先執行 sp_configure 並將 'show advanced options' 選項設定為 1,然後執行 RECONFIGURE,如下列範例所示。
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'cursor threshold', 0;
GO
RECONFIGURE;
GO
系統就會立即重新設定 cursor threshold 選項。cursor threshold 的新值將出現在組態選項的 value_in_use 資料行及 value 資料行中。
需要重新啟動 SQL Server 的選項最初只會在 value 資料行中顯示變更後的值。重新啟動之後,新值將同時出現在 value 資料行及 value_in_use 資料行。
有些選項需要重新啟動伺服器,新的組態值才能生效。如果在重新啟動伺服器之前就設定新值並執行 sp_configure,新值會出現在組態選項的 value 資料行,但不會出現在 value_in_use 資料行。重新啟動伺服器之後,新的值就會出現在 value_in_use 資料行。
自我設定的選項是指 SQL Server 會根據系統需要而自行調整的選項。在大多數情況下,都不需以手動方式來設定這些值。範例包括 min server memory 和 max server memory 選項以及 user connections 選項。
組態選項表
下表列出所有可用的組態選項、可能的設定範圍以及預設值。組態選項會加上字母標示,如下所示:
A= 進階選項,只能由有經驗的資料庫管理員或通過認證的 SQL Server 技術人員來變更,而且必須將 show advanced options 選項設定為 1。
RR = 需要重新啟動 Database Engine 的選項。
SC = 自我設定的選項。
組態選項
最小值
最大值
預設值
0
16384
0
0
2147483647
0
0
1
0
affinity I/O mask (A、RR)
-2147483648
2147483647
0
affinity64 I/O mask (A,只能在 64 位元版本的 SQL Server 上使用)
-2147483648
2147483647
0
affinity mask (A)
-2147483648
2147483647
0
affinity64 mask (A, RR),只能在 64 位元版本的 SQL Server 上使用
-2147483648
2147483647
0
Agent XPs (A)
0
1
0
(SQL Server Agent 啟動時將變成 1。如果在安裝期間將 SQL Server Agent 設定為自動啟動,則預設值為 0)。
allow updates (已經過時,請勿使用。否則會在重新設定期間導致錯誤)。
0
1
0
awe enabled (A、RR)
0
1
0
0
1
0
0
86400
0
c2 audit mode (A、RR)
0
1
0
0
1
0
0
1
0
0
32767
5
0
1
0
cursor threshold (A)
-1
2147483647
-1
0
1
0
0
2147483647
1033
0
9999
0
0
1
1
0
1
0
0
1
0
0
2
0
fill factor (A、RR)
0
100
0
ft crawl bandwidth (max),請參閱 ft crawl bandwidth (A)
0
32767
100
ft crawl bandwidth (min),請參閱 ft crawl bandwidth (A)
0
32767
0
ft notify bandwidth (max),請參閱 ft notify bandwidth (A)
0
32767
100
ft notify bandwidth (min),請參閱 ft notify bandwidth (A)
0
32767
0
index create memory (A、SC)
704
2147483647
0
0
2
0
lightweight pooling (A、RR)
0
1
0
locks (A、RR、SC)
5000
2147483647
0
0
64
0
0
256
4
max server memory (A、SC)
16
2147483647
2147483647
0
2147483647
65536
max worker threads (A、RR)
128
32767
(1024 是 32 位元 SQL Server 的最大建議值,64 位元 SQL Server 則為 2048。)
0
零表示自動設定 max worker threads 的數目,而這個數目是根據處理器數目,透過用於 32 位元 SQL Server 的公式 (256+(<processors> -4) * 8) 來決定,而 64 位元 SQL Server 則為該數目的兩倍。
media retention (A、RR)
0
365
0
512
2147483647
1024
min server memory (A、SC)
0
2147483647
0
0
1
1
512
32767
4096
0
1
0
open objects (A、RR,已經過時)
0
2147483647
0
0
1
0
PH_timeout (A)
1
3600
60
precompute rank (A)
0
1
0
priority boost (A、RR)
0
1
0
0
2147483647
0
query wait (A)
-1
2147483647
-1
recovery interval (A、SC)
0
32767
0
remote access (RR)
0
1
1
0
1
0
0
2147483647
20
0
1
0
0
2147483647
600
0
1
0
scan for startup procs (A、RR)
0
1
0
0
1
1
set working set size (A、RR,已經過時)
0
1
0
0
1
0
SMO and DMO XPs (A)
0
1
1
SQL Mail XPs (A)
0
1
0
transform 非搜尋字 (A)
0
1
0
1753
9999
2049
user connections (A、RR、SC)
0
32767
0
User Instance Timeout (A,只出現在 SQL Server 2008 Express 中)。
5
65535
60
user instances enabled (A,只出現在 SQL Server 2008 Express 中)。
0
1
0
0
32767
0
xp_cmdshell (A)
0
1
0