伺服器組態選項 (SQL Server)

適用於:SQL Server

您可以使用 SQL Server Management Studio 或 sp_configure 系統預存程序,透過組態選項來管理及最佳化 SQL Server 資源。 最常使用的伺服器組態選項可以透過 SQL Server Management Studio 來使用;而所有組態選項都可以透過 sp_configure 來存取。 在設定這些選項前,請仔細考慮這些選項對系統所造成的效果。 如需詳細資訊,請參閱檢視或變更伺服器屬性 (SQL Server)

重要

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

設定選項的類別

如果您沒有看到組態變更的效果,則可能不會加以安裝。 請檢查組態選項的 run_value 是否已變更。

在設定選項並發出 RECONFIGURE (或在某些情況下,發出 RECONFIGURE WITH OVERRIDE) 陳述式之後,組態選項會立即生效。 重新設定特定選項會使得計畫快取的計畫無效,以致編譯新計畫。 如需詳細資訊,請參閱 DBCC FREEPROCCACHE (Transact-SQL)

您可以使用 sys.configurations 目錄檢視來判斷 config_value (value 資料行) 和 run_value (value_in_use 資料行),以及組態選項是否需要資料庫引擎重新啟動 (is_dynamic 資料行)。

如果 SQL Server 需要重新啟動,選項一開始只會在 value 資料行中顯示變更的值。 重新啟動之後,新值將同時出現在 value 資料行及 value_in_use 資料行中。

有些選項需要重新啟動伺服器,新的組態值才能生效。 如果在重新啟動伺服器之前就設定新值並執行 sp_configure,新值會出現在 sys.configurations 目錄檢視的 value 資料行中,但不會出現在 value_in_use 資料行中。 當您重新啟動伺服器時,新的值就會出現在 value_in_use 資料行中。

注意

sp_configure 結果集中的 config_value 相當於 sys.configurations 目錄檢視的 value 資料行,而 run_value 相當於 value_in_use 資料行。

自我設定的選項是指 SQL Server 會根據系統需要而自行調整的選項。 在大多數情況下,都不需以手動方式來設定這些值。 範例包括 [最大背景工作執行緒] 選項與 [使用者連線] 選項。

下列查詢可用來判斷是否有任何已設定的值尚未安裝:

SELECT *
FROM sys.configurations
WHERE [value] <> [value_in_use];

如果值是您所做組態選項的變更,但 value_in_use 不同,則 RECONFIGURE 命令未執行或失敗,或是資料庫引擎必須重新啟動。

有兩個組態選項,其中 valuevalue_in_use 可能不相同,這是預期的行為:

  • max server memory (MB) - 0 的預設設定值在 value_in_use 資料行中會顯示為 2147483647

  • min server memory (MB) - 0 的預設設定值在 value_in_use 資料行中可能會顯示為 8 (32 位元系統上),或顯示為 16 (64 位元系統上)。 在某些情況下,如果 value_in_use 顯示為 0,則 true value_in_use8 (32 位元) 或 16 (64 位元)。

is_dynamic 資料行可用來判斷組態選項是否需要重新啟動。 is_dynamic 資料行中的 1 值表示,當 RECONFIGURE 命令執行時,新值會立即生效。 在某些情況下,資料庫引擎可能不會立即評估新的值,但會在其正常執行過程中執行。 is_dynamic 資料行中的 0 值表示在資料庫引擎重新啟動之前,變更的組態值將不會生效,即使已執行 RECONFIGURE 命令也一樣。

針對非動態的組態選項,無法判斷是否已執行 RECONFIGURE 命令以套用組態變更。 重新啟動 SQL Server 以套用組態變更之前,請執行 RECONFIGURE 命令,以確保下次重新啟動 SQL Server 時,所有組態變更都會生效。

設定選項

下表列出所有可用的組態選項、可能的設定範圍以及預設值。 組態選項會加上字母標示,如下所示:

  • A = 進階選項,只能由有經驗的資料庫管理員或通過認證的 SQL Server 專業人員變更,而且必須將 show advanced options 設定為 1

  • RR = 需要重新啟動資料庫引擎的選項。

  • RP = 需要重新啟動 PolyBase 引擎的選項。

  • SC = 自我設定的選項。

組態選項 最小值 最大值 預設
access check cache bucket count (A) 0 16384 0
access check cache quota (A) 0 2147483647 0
ad hoc distributed queries (A) 0 1 0
ADR cleaner retry timeout (分鐘)

適用於:SQL Server 2019 (15.x) 和更新版本。
0 32767 120
ADR Preallocation Factor

適用於:SQL Server 2019 (15.x) 和更新版本。
0 32767 4
affinity I/O mask (A、RR) -2147483648 2147483647 0
affinity mask (A) -2147483648 2147483647 0
affinity64 I/O mask (A,只能用於 64 位元版本的 SQL Server) -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。
允許 polybase 匯出

適用於:SQL Server 2016 (13.x) 和更新版本。
0 1 0
允許更新 (已淘汰。請勿使用。會在重新設定期間造成錯誤。) 0 1 0
停用自動軟體 NUMA 0 1 0
備份總和檢查碼預設 0 1 0
backup compression default 0 1 - SQL Server 2022 (16.x) 之前的版本

2 - SQL Server 2022 (16.x) 及更新版本
0
備份壓縮演算法 (A)

適用於:SQL Server 2022 (16.x) 和更新版本。
0 1 0
已封鎖的處理序臨界值 (A) 5 86400 0
c2 audit mode (A、RR) 0 1 0
clr enabled 0 1 0
CLR 嚴格安全性 (A)

適用於:SQL Server 2017 (14.x) 和更新版本。
0 1 0
資料行加密記憶體保護區類型 (A、RR) 0 2 0
common criteria compliance enabled (A、RR) 0 1 0
自主資料庫驗證 0 1 0
平行處理原則的成本臨界值 (A) 0 32767 5
cross db ownership chaining 0 1 0
資料指標臨界值 (A) -1 2147483647 -1
Database Mail XPs (A) 0 1 0
預設全文檢索語言 (A) 0 2147483647 1033
default language 0 9999 0
預設追蹤已啟用 (A) 0 1 1
不允許來自觸發程序的結果 (A) 0 1 0
EKM provider enabled 0 1 0
啟用外部指令碼 (SC) (RR)

適用於:SQL Server 2016 (13.x) 和更新版本。
0 1 0
檔案資料流存取層級 0 2 0
fill factor (A、RR) 0 100 0
全文檢索耙梳頻寬 (最大) (A) 0 32767 100
全文檢索耙梳頻寬 (最小) (A) 0 32767 0
全文檢索通知頻寬 (最大) (A) 0 32767 100
全文檢索通知頻寬 (最小) (A) 0 32767 0
已啟用硬體卸載 (A)

適用於:SQL Server 2022 (16.x) 和更新版本。
0 1 0
Hadoop 連線能力 (RP)

適用於:SQL Server 2016 (13.x) 和更新版本。
0 7 0
in-doubt xact resolution (A) 0 2 0
index create memory (A、SC) 704 2147483647 0
lightweight pooling (A、RR) 0 1 0
locks (A、RR、SC) 5000 2147483647 0
max degree of parallelism (A) 0 32767 0
max full-text crawl range (A) 0 256 4
max server memory (A、SC) 16 2147483647 2147483647
max text repl size 0 2147483647 65536
max worker threads (A) 128 32767

1024 是 32 位元 SQL Server 的最大建議值,而 64 位元 SQL Server 則為 2048。

注意:SQL Server 2014 (12.x) 是最後一個可在 32 位作業系統上使用的版本。
0

零表示根據邏輯處理器數目來自動設定最大背景工作執行緒數目,透過用於 32 位元 SQL Server 的公式 (256 + (<邏輯處理器> - 4) * 8) 來決定,而 64 位元 SQL Server 則為 (512 + (<邏輯處理器> - 4) * 8)。

注意:SQL Server 2014 (12.x) 是最後一個可在 32 位作業系統上使用的版本。
media retention (A、RR) 0 365 0
min memory per query (A) 512 2147483647 1024
min server memory (A、SC) 0 2147483647 0
巢狀觸發程序 0 1 1
network packet size (A) 512 32767 4096
Ole Automation Procedures (A) 0 1 0
open objects (A、RR,已過時) 0 2147483647 0
optimize for ad hoc workloads (A) 0 1 0
PH_timeout (A) 1 3600 60
啟用 Polybase (RR)

適用於:SQL Server 2019 (15.x) 和更新版本。
0 1 0
Polybase 網路加密 0 1 1
precompute rank (A) 0 1 0
priority boost (A、RR) 0 1 0
query governor cost limit (A) 0 2147483647 0
query wait (A) -1 2147483647 -1
復原間隔 (分鐘) (A、SC) 0 32767 0
remote access (RR) 0 1 1
remote admin connections 0 1 0
遠端資料封存 0 1 0
remote login timeout 0 2147483647 10
remote proc trans 0 1 0
remote query timeout 0 2147483647 600
Replication XPs Option (A) 0 1 0
scan for startup procs (A、RR) 0 1 0
server trigger recursion 0 1 1
set working set size (A、RR,已過時) 0 1 0
show advanced options 0 1 0
SMO and DMO XPs (A) 0 1 1
隱藏復原模式錯誤 (A)

適用於:Azure SQL 受控執行個體。
0 1 0
經記憶體最佳化的 TempDB 中繼資料 (A)

適用於:SQL Server 2019 (15.x) 和更新版本。
0 1 0
transform noise words (A) 0 1 0
two digit year cutoff (A) 1753 9999 2049
user connections (A、RR、SC) 0 32767 0
user options 0 32767 0
xp_cmdshell (A) 0 1 0

另請參閱