sp_configure (Transact-SQL)
顯示或變更目前伺服器的全域組態設定。
語法
sp_configure [ [ @configname = ] 'option_name'
[ , [ @configvalue = ] 'value' ] ]
引數
[ @configname= ] 'option_name'
這是組態選項的名稱。option_name 是 varchar(35),預設值是 NULL。SQL Server Database Engine 會識別任何屬於組態名稱一部分的唯一字串。若未指定,就會傳回完整的選項清單。如需有關可用組態選項及其設定的資訊,請參閱<設定伺服器組態選項>。
[ @configvalue= ] 'value'
這是新的組態設定。value 是 int,預設值是 NULL。最大值會隨著個別選項而不同。若要查看每個選項的最大值,請參閱 sys.configurations 目錄檢視的 maximum 資料行。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
如果執行時並未設定參數,sp_configure 會傳回含有五個資料行的結果集,且會如下表所示,依照字母的遞增順序來排列選項。
config_value 和 run_value 值不會自動相等。在利用 sp_configure 來更新組態設定之後,系統管理員必須利用 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE 來更新執行中的組態值。如需詳細資訊,請參閱<備註>一節。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
name |
nvarchar(35) |
組態選項的名稱。 |
minimum |
int |
組態選項的最小值。 |
maximum |
int |
組態選項的最大值。 |
config_value |
int |
利用 sp_configure 來設定的組態選項值 (sys.configurations.value 中的值)。如需有關這些選項的詳細資訊,請參閱<設定伺服器組態選項>和<sys.configurations (Transact-SQL)>。 |
run_value |
int |
組態選項目前在執行中的值 (sys.configurations.value_in_use 中的值)。 如需詳細資訊,請參閱<sys.configurations (Transact-SQL)>。 |
備註
請利用 sp_configure 來顯示或變更伺服器層級的設定。若要變更資料庫層級的設定,請使用 ALTER DATABASE。若要變更只影響目前使用者工作階段的設定,請使用 SET 陳述式。
更新執行中的組態值
當您指定新的 value 給某個 option 時,結果集會在 config_value 資料行中顯示這個值。開始時,這個值會有別於 run_value 資料行中的值,會顯示目前在執行中的組態值。若要更新 run_value 資料行的執行組態值,系統管理員必須執行 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE。
RECONFIGURE 和 RECONFIGURE WITH OVERRIDE 都會使用每個組態選項。不過,基本 RECONFIGURE 陳述式會拒絕在合理範圍之外或可能造成選項衝突的任何選項值。例如,如果 recovery interval 值超出 60 分鐘,或 affinity mask 值與 affinity I/O mask 值重疊,RECONFIGURE 就會產生錯誤。相對地,RECONFIGURE WITH OVERRIDE 會接受任何資料類型正確的選項值,且會強迫利用指定的值來重設組態。
警告 |
---|
不恰當的選項值可能會對伺服器執行個體的組態產生負面的影響。當使用 RECONFIGURE WITH OVERRIDE 時,請特別小心。 |
RECONFIGURE 陳述式會動態更新某些選項;其他選項則需要伺服器停止再重新啟動。例如,Database Engine 會動態更新 min server memory 和 max server memory 這兩個伺服器記憶體選項;因此,您不需要重新啟動伺服器,就可以改變它們。相對地,重設 fill factor 選項執行中的值,則需要重新啟動 Database Engine。
在執行組態選項的 RECONFIGURE 之後,您可以執行 sp_configure'option_name' 來了解這個選項是否已動態更新。動態更新的選項,其 run_value 和 config_value 資料行的值應該會相符。您也可以查看 sys.configurations 目錄檢視的 is_dynamic 資料行來了解哪些選項是動態選項。
[!附註]
如果指定的 value 對選項而言太高,run_value 資料行會反映出 Database Engine 已預設為動態記憶體並放棄使用無效設定的事實。
如需詳細資訊,請參閱<RECONFIGURE (Transact-SQL)>。
進階選項
部分組態選項 (如 affinity mask 和 recovery interval) 指定為進階選項。依預設,這些選項無法檢視和變更。若要能夠檢視和變更它們,請將 ShowAdvancedOptions 組態選項設為 1。
如需有關組態選項及其設定的詳細資訊,請參閱<設定伺服器組態選項>。
權限
依預設,所有使用者都會取得不含參數或只含第一個參數之 sp_configure 的執行權限。若要執行同時設定了兩個參數的 sp_configure 來變更組態選項或執行 RECONFIGURE 陳述式,您必須取得 ALTER SETTINGS 伺服器層級權限。系統管理員 (sysadmin) 和伺服器管理員 (serveradmin) 固定伺服器角色會隱含地擁有 ALTER SETTINGS 權限。
範例
A. 列出進階組態選項
下列範例會顯示如何設定和列出所有組態選項。首先將 show advanced option 設為 1 來顯示進階組態選項。變更好這個選項之後,執行不含任何參數的 sp_configure 會顯示所有組態選項。
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
訊息如下:「組態選項 'show advanced options' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。」
執行 RECONFIGURE 和顯示所有組態選項:
RECONFIGURE;
EXEC sp_configure;
B. 變更組態選項
下列範例將系統 recovery interval 設為 3 分鐘。
USE master;
GO
EXEC sp_configure 'recovery interval', '3';
RECONFIGURE WITH OVERRIDE;