適用於:SQL Server 2016 (13.x) 及以後版本
Azure SQL Database
AzureSQL Managed Instance
Azure Synapse Analytics
SQL database in Microsoft Fabric
此命令可以在個別資料庫層級設定幾項資料庫設定。
Important
不同版本的 SQL Server 或 Azure 服務支援不同的 DATABASE SCOPED CONFIGURATION 選項。 此頁面描述所有DATABASE SCOPED CONFIGURATION選項。 已指出適用的版本。 請確保你使用的是你所使用的服務版本中可用的語法。
以下設定在 Azure SQL 資料庫、Microsoft Fabric 中的 SQL 資料庫、Azure SQL 管理實例以及 SQL Server 中,皆由參數區塊中每個設定的「套用」欄位所顯示:
- 清除程序快取。
- 根據最適合該特定工作負載的情況,將 MAXDOP 參數設定為主資料庫的建議值 (1,2, ...),併為報告查詢所使用的次要複本資料庫設定不同的值。 如需選擇 MAXDOP 的指引,請檢閱 伺服器組態:平行處理原則的最大程度。
- 將與資料庫無關的查詢最佳化工具基數估計模型設定為相容性層級。
- 在資料庫層級啟用或停用參數探測。
- 在資料庫層級啟用或停用查詢最佳化。
- 在資料庫層級啟用或停用識別快取。
- 允許或不允許在第一次編譯批次時,將已編譯的計劃虛設常式儲存在快取中。
- 啟用或停用原生編譯 Transact-SQL 模組的執行統計資料收集。
- 為支援
ONLINE =語法的 DDL 陳述式啟用或停用預設為線上的選項。 - 為支援
RESUMABLE =語法的 DDL 陳述式啟用或停用預設為可繼續的選項。 - 啟用或停用智慧查詢處理功能。
- 啟用或停用加速強制執行計劃。
- 啟用或停用全域臨時表的自動刪除功能。
- 啟用或停用輕量型查詢分析基礎結構。
- 啟用或停用新的
String or binary data would be truncated錯誤訊息。 - 啟用或停用 sys.dm_exec_query_plan_stats 中最後一個實際執行計畫的集合。
- 指定暫停可恢復索引操作暫停的分鐘數,然後資料庫引擎會自動中止。
- 啟用或停用非同步統計資料更新的低優先順序等候鎖定。
- 啟用或停用將總帳摘要上傳至 Azure Blob 儲存體的作業。
- 設定預設 的全文索引 版本(
1或2)。
此設定僅適用於 Azure Synapse Analytics。
- 設定使用者資料庫相容性層級
Syntax
SQL Server、Azure SQL Database、Azure SQL 受控執行個體的語法:
ALTER DATABASE SCOPED CONFIGURATION
{
{ [ FOR SECONDARY ] SET <set_options> }
}
| CLEAR PROCEDURE_CACHE [plan_handle]
| SET < set_options >
[;]
< set_options > ::=
{
MAXDOP = { <value> | PRIMARY }
| LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY }
| PARAMETER_SNIFFING = { ON | OFF | PRIMARY }
| QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY }
| IDENTITY_CACHE = { ON | OFF }
| INTERLEAVED_EXECUTION_TVF = { ON | OFF }
| BATCH_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }
| BATCH_MODE_ADAPTIVE_JOINS = { ON | OFF }
| TSQL_SCALAR_UDF_INLINING = { ON | OFF }
| ELEVATE_ONLINE = { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }
| ELEVATE_RESUMABLE = { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }
| OPTIMIZE_FOR_AD_HOC_WORKLOADS = { ON | OFF }
| XTP_PROCEDURE_EXECUTION_STATISTICS = { ON | OFF }
| XTP_QUERY_EXECUTION_STATISTICS = { ON | OFF }
| ROW_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }
| MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = { ON | OFF }
| MEMORY_GRANT_FEEDBACK_PERSISTENCE = { ON | OFF }
| BATCH_MODE_ON_ROWSTORE = { ON | OFF }
| DEFERRED_COMPILATION_TV = { ON | OFF }
| ACCELERATED_PLAN_FORCING = { ON | OFF }
| GLOBAL_TEMPORARY_TABLE_AUTO_DROP = { ON | OFF }
| LIGHTWEIGHT_QUERY_PROFILING = { ON | OFF }
| VERBOSE_TRUNCATION_WARNINGS = { ON | OFF }
| LAST_QUERY_PLAN_STATS = { ON | OFF }
| PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES = <time>
| ISOLATE_SECURITY_POLICY_CARDINALITY = { ON | OFF }
| EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS = { ON | OFF }
| ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY = { ON | OFF }
| OPTIMIZED_PLAN_FORCING = { ON | OFF }
| DOP_FEEDBACK = { ON | OFF }
| CE_FEEDBACK = { ON | OFF }
| PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = { ON | OFF }
| LEDGER_DIGEST_STORAGE_ENDPOINT = { <endpoint URL string> | OFF }
| OPTIMIZED_SP_EXECUTESQL = { ON | OFF }
| OPTIONAL_PARAMETER_PLAN_OPTIMIZATION = { ON | OFF }
| ALLOW_STALE_VECTOR_INDEX = { ON | OFF }
| PREVIEW_FEATURES = { ON | OFF }
| FULLTEXT_INDEX_VERSION = <version>
}
Azure Synapse Analytics 的語法:
ALTER DATABASE SCOPED CONFIGURATION
{
SET <set_options>
}
[;]
< set_options > ::=
{
DW_COMPATIBILITY_LEVEL = { AUTO | 10 | 20 | 30 | 40 | 50 | 9000 }
}
Arguments
中學
指定次要資料庫的設定 (所有次要資料庫都必須具有相同的值)。
清除PROCEDURE_CACHE [plan_handle]
清除資料庫的程序 (計劃) 快取,並且可在主要端和次要端上執行。
指定查詢計劃控制代碼來將單一查詢計劃從計畫快取清除。
適用於:SQL Server 2019(15.x)及更新版本、Azure SQL 資料庫及 Azure SQL Managed Instance 可指定查詢計畫句柄。
MAXDOP = {<value> |PRIMARY }
<價值>
指定應該用於陳述式的預設平行處理原則最大程度 (MAXDOP) 設定。 0 是預設值,表示會改用伺服器組態。 資料庫範圍的 MAXDOP 會覆寫(除非設為 0) max degree of parallelism 伺服器層 sp_configure級的 。 查詢提示仍然可以覆寫資料庫範圍的 MAXDOP 來調整需要不同設定的特定查詢。 所有這些設定都受限於 工作負載群組的 MAXDOP 設定。
您可以使用 MAXDOP 選項來限制執行平行計畫所用的處理器數目。 SQL Server 會針對查詢、索引資料定義語言 (DDL) 作業、平行插入、線上改變資料行、平行統計資料收集,以及靜態和索引鍵集驅動資料指標填入,考慮進行平行執行計劃。
平行處理原則最大程度 (MAXDOP) 限制的設定會根據工作。 這不是每個 要求 或每個查詢限制。 這表示在平行查詢執行過程中,單一請求可以產生多個任務,這些任務會被指派給 排程器。 如需詳細資訊,請參閱 線程和工作架構指南。
若要在實例層級設定此選項,請參見 伺服器配置:最大平行度度。
在 Azure SQL Database 中,新的單一和彈性集區資料庫的 MAXDOP 資料庫範圍設定預設為 8。 如需在 Azure SQL Database 中以最佳方式設定 MAXDOP 的詳細資訊和建議,請參閱 在 Azure SQL Database 上設定 MAXDOP。
Tip
若要在查詢層級完成此操作,請使用 MAXDOP查詢提示。
若要在伺服器層級完成此操作,請使用 平行處理原則的最大程度 (MAXDOP)伺服器組態選項。
若要在工作負載層級完成此操作,請使用 MAX_DOPResource Governor 工作負載群組組態選項。
PRIMARY
只能針對次要複本設定,而主資料庫位於 主資料庫,並指出組態是針對主要資料庫所設定的設定。 如果主要端的組態發生變更,次要端上的值將會相應地變更,而無須明確地設定次要端值。 PRIMARY 是次要端的預設設定。
LEGACY_CARDINALITY_ESTIMATION = { ON |OFF |PRIMARY }
可讓您將查詢最佳化工具基數估計模型設定為 SQL Server 2012 和更舊版本,而不根據資料庫的相容性層級。 默認值為 OFF,這會根據資料庫的相容性層級來設定查詢優化器基數估計模型。 設定為LEGACY_CARDINALITY_ESTIMATION相當ON於啟用追蹤旗標 9481。
Tip
若要在查詢層級完成此操作,請新增 QUERYTRACEON查詢提示。
在 SQL Server 2016(13.x)及 Service Pack 1 及以後版本中,若要在查詢層級實現此目標,請新增 USE HINT查詢提示 ,取代追蹤標誌。
PRIMARY
此值只有在主要資料庫位於 主要資料庫時才有效,並指定所有次要資料庫的查詢優化器基數估計模型設定是針對主要複本設定的值。 如果查詢優化器基數估計模型的主要設定變更,次要複本上的值會隨之變更。 PRIMARY 是次要端的預設設定。
PARAMETER_SNIFFING = { ON |OFF |PRIMARY }
啟用或停用參數探查。 預設值為 ON。 設定為PARAMETER_SNIFFING相當OFF於啟用追蹤旗標 4136。
Tip
若要在查詢層級完成這項作業,請參閱OPTIMIZE FOR UNKNOWN查詢提示。
在 SQL Server 2016 (13.x) SP1 和更新版本中,若要在查詢層級完成這項作業,也可以使用 USE HINT查詢提示。
PRIMARY
只有在資料庫位於主要端上時,此值才會在次要端上有效,並且指定所有次要端上此設定的值將採用針對主要端設定的值。 如果使用 參數探查 變更的主要設定,則次要複本上的值會隨之變更,而不需要明確設定次要值。 [PRIMARY] 是次要端的預設設定。
QUERY_OPTIMIZER_HOTFIXES = { ON |OFF |PRIMARY }
啟用或停用查詢最佳化 Hotfix,而不管資料庫的相容性層級為何。 默認值為 OFF,這會停用特定版本推出最高可用相容性層級之後發行的查詢優化 Hotfix(RTM 後)。 將此設定為 ON 相當於啟用 追蹤旗標 4199。
適用於:SQL Server 2016(13.x)及以後版本、Azure SQL 資料庫,以及 Azure SQL 管理實例
Tip
若要在查詢層級完成此操作,請新增 QUERYTRACEON查詢提示。
在 SQL Server 2016(13.x)及 Service Pack 1 及以後版本中,若要在查詢層級實現此目標,請新增 USE HINT 查詢提示 ,取代追蹤標誌。
PRIMARY
只有在資料庫位於主要端上時,此值才會在次要端上有效,並且指定所有次要端上此設定的值將採用針對主要端設定的值。 如果主要端的組態發生變更,次要端上的值將會相應地變更,而無須明確地設定次要端值。 [PRIMARY] 是次要端的預設設定。
IDENTITY_CACHE = { ON |OFF }
適用於:SQL Server 2017 (14.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
在資料庫層級啟用或停用識別快取。 預設值為 ON。 識別快取可用來改善含有識別資料行之資料表上的 INSERT 效能。 若要避免在伺服器意外重新啟動或故障轉移至輔助伺服器的情況下,識別數據行的值有差距,請停用 [IDENTITY_CACHE] 選項。 此選項類似於現有的 追蹤旗標 272,不同之處在於它可以在資料庫層次設定,而不僅僅是在伺服器層次設定。
Note
只能針對 PRIMARY 設定此選項。 如需詳細資訊,請參閱識別資料行。
INTERLEAVED_EXECUTION_TVF = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫或陳述式範圍啟用或停用多重陳述式資料表值函式的交錯執行,同時仍保有 140 (含) 以上的資料庫相容性層級。 預設值為 ON。 交錯執行是 Azure SQL Database 中自適性查詢處理作業的一項功能。 如需詳細資訊,請參閱智慧查詢處理。
Note
針對資料庫相容性層級 130 或更低,這個資料庫範圍設定沒有任何作用。
僅限 SQL Server 2017 (14.x),選項 INTERLEAVED_EXECUTION_TVF 舊稱為 DISABLE_INTERLEAVED_EXECUTION_TVF。
BATCH_MODE_MEMORY_GRANT_FEEDBACK = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫範圍啟用或停用批次模式記憶體授與回饋,同時仍保有 140 (含) 以上的資料庫相容性層級。 預設值為 ON。 批次模式記憶體授與意見反應於 SQL Server 2017 (14.x) 首度推出,是智慧查詢處理套件的其中一項功能。 如需詳細資訊,請參閱記憶體授與意見反應。
Note
針對資料庫相容性層級 130 或更低,這個資料庫範圍設定沒有任何作用。
BATCH_MODE_ADAPTIVE_JOINS = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫範圍啟用或停用批次模式自適性聯結,同時仍保有 140 (含) 以上的資料庫相容性層級。 預設值為 ON。 批次模式自適性聯結於 SQL Server 2017 (14.x) 首度推出,是智慧查詢處理的其中一項功能。
Note
針對資料庫相容性層級 130 或更低,這個資料庫範圍設定沒有任何作用。
TSQL_SCALAR_UDF_INLINING = { ON |OFF }
適用於:SQL Server 2019(15.x)及以後版本,以及 Azure SQL 資料庫(功能為預覽階段)
可讓您在資料庫範圍啟用或停用 T-SQL 純量 UDF 內嵌,同時仍保有 150 (含) 以上的資料庫相容性層級。 預設值為 ON。 T-SQL 純量 UDF 內嵌是智慧查詢處理功能系列的一部分。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
ELEVATE_ONLINE = { OFF |WHEN_SUPPORTED |FAIL_UNSUPPORTED }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您選取選項,讓引擎自動將支援的作業提升至線上。 默認值為 OFF,這表示除非在語句中指定,否則作業不會提升至在線。
sys.database_scoped_configurations 反映 ELEVATE_ONLINE的目前值。 這些選項僅適用於在線支援的作業。
FAIL_UNSUPPORTED
此值會將所有支援的 DLL 作業提升至 ONLINE。 不支援在線執行的作業失敗,並擲回錯誤。
Note
一般情況下,在資料表中加入資料行是線上作業。 在某些情況下,例如,新增不可為 Null 的數據行時,就無法在線新增數據行。 在這些情況下,如果已設定FAIL_UNSUPPORTED,則作業會失敗。
WHEN_SUPPORTED
此值會提升支援 ONLINE 的作業。 不支援在線的作業會脫機執行。
Note
您可以在指定 ONLINE 選項的情形下提交陳述式,進而覆寫預設設定。
ELEVATE_RESUMABLE = { 關 |WHEN_SUPPORTED |FAIL_UNSUPPORTED }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您選取選項,讓引擎自動將支援的作業提升至可繼續。 默認值為 OFF,這表示除非在語句中指定,否則作業不會提升為可繼續。
sys.database_scoped_configurations 反映 ELEVATE_RESUMABLE的目前值。 這些選項僅適用於可繼續支援的作業。
FAIL_UNSUPPORTED
此值會將所有支援的 DLL 作業提升至 RESUMABLE。 不支援繼續執行的作業失敗,並擲回錯誤。
WHEN_SUPPORTED
此值會提升支援 RESUMABLE 的作業。 不支援繼續的作業無法繼續執行。
Note
您可以在指定 RESUMABLE 選項的情形下提交陳述式,進而覆寫預設設定。
OPTIMIZE_FOR_AD_HOC_WORKLOADS = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
允許或不允許在第一次編譯批次時,將已編譯的計劃虛設常式儲存在快取中。 預設值為 OFF。 一旦資料庫範圍組態 OPTIMIZE_FOR_AD_HOC_WORKLOADS 啟用資料庫,編譯的計劃存根會在第一次編譯批次時儲存在快取中。 與完整的已編譯計劃大小相比,計劃虛設常式的記憶體耗用量較少。 如果再次編譯或執行批次,則會移除已編譯的計劃存根,並以完整編譯的計劃取代。
XTP_PROCEDURE_EXECUTION_STATISTICS = { ON |OFF }
適用於:Azure SQL Database 與 Azure SQL 受控執行個體
在目前的資料庫上啟用或停用原生編譯 T-SQL 模組的模組層級執行統計資料收集。 預設值為 OFF。 執行統計資料會反映在 sys.dm_exec_procedure_stats。
如果這個選項是 ON,或已透過 sp_xtp_control_proc_exec_stats 啟用統計資料收集,則會收集原生編譯 T-SQL 模組的模組層級執行統計資料。
XTP_QUERY_EXECUTION_STATISTICS = { ON |OFF }
適用於:Azure SQL Database 與 Azure SQL 受控執行個體
在目前的資料庫上啟用或停用原生編譯 T-SQL 模組的陳述式層級執行統計資料收集。 預設值為 OFF。 執行統計資料會反映在 sys.dm_exec_query_stats 和查詢存放區。
如果此選項為 ON,或透過 sp_xtp_control_query_exec_stats啟用統計數據收集,則會收集原生編譯 T-SQL 模組的語句層級執行統計數據。
如需原生編譯 Transact-SQL 模組效能監視的詳細資訊,請參閱 監視原生編譯預存程式的效能。
ROW_MODE_MEMORY_GRANT_FEEDBACK = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫範圍啟用或停用資料列模式記憶體授與回饋,同時仍保有 150 (含) 以上的資料庫相容性層級。 預設值為 ON。 批次模式記憶體授與意見反應於 SQL Server 2017 (14.x) 首度推出,是智慧查詢處理的其中一項功能。 SQL Server 2019 (15.x) 和 Azure SQL Database 支援資料列模式。 如需記憶體授與意見反應的詳細資訊,請參閱記憶體授與意見反應。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本,以及 Azure SQL Database
可讓您針對源自資料庫的所有查詢執行作業,停用記憶體授與意見反應百分位數。 預設值為 ON。 如需完整資訊,請參閱百分位數和持續性模式記憶體授與意見反應。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
MEMORY_GRANT_FEEDBACK_PERSISTENCE = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您針對源自資料庫的所有查詢執行作業,停用記憶體授與意見反應持續性。 預設值為 ON。 如需完整資訊,請參閱百分位數和持續性模式記憶體授與意見反應。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
BATCH_MODE_ON_ROWSTORE = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫範圍啟用或停用資料列存放區上的批次模式,同時仍保有 150 (含) 以上的資料庫相容性層級。 預設值為 ON。 資料列存放區上的批次模式是智慧查詢處理功能系列的其中一項功能。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
DEFERRED_COMPILATION_TV = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您在資料庫範圍啟用或停用資料表變數延遲編譯,同時仍保有 150 (含) 以上的資料庫相容性層級。 預設值為 ON。 資料表變數延遲編譯是智慧查詢處理功能系列的其中一項功能。
Note
針對資料庫相容性層級 140 (含) 以下,這個資料庫範圍設定沒有任何作用。
ACCELERATED_PLAN_FORCING = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
針對強制執行查詢計劃啟用最佳化機制,適用於所有形式的強制執行計劃,例如查詢存放區強制執行計劃、自動調整或使用計劃查詢提示。 預設值為 ON。
Note
不建議停用加速計劃強制。
GLOBAL_TEMPORARY_TABLE_AUTO_DROP = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
允許設定全域臨時表的自動刪除功能。 默認值為 ON,這表示當任何會話或工作未使用時,會自動卸除全域臨時表。 當設定為 OFF時,全局臨時表只能使用 DROP TABLE 語句明確卸除,或在Database Engine重新啟動時自動卸除。
- 在 Azure SQL Database 單一資料庫和彈性集區中,此選項會在個別的使用者資料庫中設定。
- 在 SQL Server 和 Azure SQL 受控實例中,此選項必須在
tempdb中設定。 個別使用者資料庫中的設定沒有任何作用。
LIGHTWEIGHT_QUERY_PROFILING = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您啟用或停用輕量型查詢分析基礎結構。 輕量型查詢分析基礎結構 (LWP) 提供比標準分析機制更具效率的查詢效能資料,預設會予以啟用。 預設值為 ON。
VERBOSE_TRUNCATION_WARNINGS = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您啟用或停用新的 String or binary data would be truncated 錯誤訊息。 預設值為 ON。 針對這種情況,SQL Server 2019 (15.x) 導入更具體的新錯誤訊息 (2628):
String or binary data would be truncated in table '%.*ls', column '%.*ls'. Truncated value: '%.*ls'.
當設定為資料庫相容性層級 150 下的 ON 時,截斷錯誤會引發新的錯誤訊息 2628,以提供更多內容並簡化疑難解答程式。
當設定為資料庫相容性層級 150 下的 OFF 時,截斷錯誤會引發先前的錯誤訊息 8152。
對於資料庫相容性層次 140 或更低,錯誤訊息 2628 仍然是選擇加入錯誤訊息,需要啟用 追蹤旗標 460 ,且此資料庫範圍的配置沒有作用。
LAST_QUERY_PLAN_STATS = { ON |OFF }
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您啟用或停用 sys.dm_exec_query_plan_stats 中最後一個查詢計劃統計資料 (相當於實際執行計畫) 的集合。 預設值為 OFF。
PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES 選項會決定可繼續索引在被引擎自動中止之前,其暫停的時間 (以分鐘為單位)。
- 預設值設定為 1 天 (1,440 分鐘)
- 最小持續時間設定為 1 分鐘
- 持續時間上限為 71,582 分鐘
- 當設定為 0 時,暫停的作業永遠不會自動中止
此選項目前的值會顯示於 sys.database_scoped_configurations。
ISOLATE_SECURITY_POLICY_CARDINALITY = { ON |OFF}
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
允許你控制 列級安全 (RLS)謂詞是否會影響整體使用者查詢執行計畫的基數。 預設值為 OFF。 當 ISOLATE_SECURITY_POLICY_CARDINALITY 開啟時,RLS 謂詞不會影響執行計畫的基數。 例如,假設某資料表包含 1 百萬個資料列以及一個 RLS 述詞,此述詞會針對發出查詢的特定使用者將結果限制為 10 個資料列。 將此資料庫範圍設定設為 OFF 時,此述詞的基數估計值為 10。 當此資料庫範圍設定為 ON 時,查詢優化估計 1 百萬個數據列。 建議大多數工作負載使用預設值。
DW_COMPATIBILITY_LEVEL = { 自動 | 10 | 20 | 30 | 40 | 50 | 9000 }
適用於:僅 Azure Synapse Analytics
將 Transact-SQL 及查詢處理行為,設定為相容於資料庫引擎的指定版本。 設定之後,當查詢在該資料庫上執行時,只會練習相容的功能。 每個相容性層級支援不同的查詢處理增強功能, 每個層級會吸收前一層級的功能。 首次建立時,資料庫的相容性層級會預設為 AUTO,這是建議使用的設定。 資料庫即使在暫停/繼續、備份/還原作業之後,也會保留該相容性層級。 預設值為 AUTO。
| 相容性等級 | Comments |
|---|---|
AUTO |
Default. Synapse Analytics 引擎會自動更新其值,在 0 中會以 表示。
AUTO 目前對應至相容性層級 30 功能。 |
10 |
導入相容性層級支援之前,先執行 Transact-SQL 和查詢引擎行為。 |
20 |
第 1 層相容性層級,包含受管制的 Transact-SQL 與查詢引擎行為。 此層級支援系統預存程序 sp_describe_undeclared_parameters。 |
30 |
包含新的查詢引擎行為。 |
40 |
包含新的查詢引擎行為。 |
50 |
此層級支援多欄分發。 欲了解更多,請參閱 「建立表格」、「 選擇式建立表格」及 「建立實體化檢視」。 |
9000 |
預覽相容性層級。 此層級下受管制的預覽功能會在說明特定功能的文件中特別介紹。 此層級也包含最高非9000 層級的能力。 |
EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
可讓您控制純量使用者定義函式 (UDF) 的執行統計資料是否顯示於 sys.dm_exec_function_stats 系統檢視中。 對於純量 UDF 繁重的一些密集工作負載,收集函式執行統計數據可能會導致明顯的效能負荷。 將 EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS 範圍組態設為 OFF 即可避免這個問題。 預設值為 ON。
ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
如果啟用異步統計數據更新,啟用此設定會導致背景要求更新統計數據以等候 Sch-M 低優先順序佇列上的鎖定,以避免在高並行情況下封鎖其他會話。 如需詳細資訊,請參閱 AUTO_UPDATE_STATISTICS_ASYNC。 預設值為 OFF。
OPTIMIZED_PLAN_FORCING = { ON |OFF }
適用於:SQL Server 2022(16.x)及更新版本,Azure SQL 資料庫
強制執行最佳化計畫可減少重複強制查詢作業所額外產生的編譯負荷。 預設值為 ON。 產生查詢執行計畫之後,系統會儲存特定的編譯步驟,以最佳化重新執行指令碼的形式重複使用。 最佳化重新執行指令碼會以隱藏 屬性的形式,儲存於OptimizationReplay的壓縮執行程序表 XML 之中。 若要深入了解,請參閱使用查詢資料存放區強制執行最佳化計畫。
DOP_FEEDBACK = { ON |OFF }
適用於:SQL Server 2022(16.x)及更新版本、Azure SQL 資料庫、Azure SQL Managed Instance with SQL Server 2025 或 Always-up-to-date更新政策、Fabric 中的 SQL 資料庫
根據已耗用及等候的時間,識別重複查詢平行處理原則效率低落的問題。 如果系統判斷平行處理原則的使用情形效率不佳,DOP 意見反應就會從任何已設定的 DOP 降低下一次執行查詢作業的 DOP,並驗證是否有效。 需要啟用查詢存放區,且處於 READ_WRITE 模式。 如需詳細資訊,請參閱 平行處理原則程度 (DOP) 意見反應。 預設值為 OFF。
CE_FEEDBACK = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
CE 意見反應能解決使用預設 CE (CE120 或更高版本) 時,不正確的 CE 模型假設所產生的認知迴歸問題,而且可以選擇是否使用不同的模型假設。 需要啟用查詢存放區,且處於 READ_WRITE 模式。 如需詳細資訊,請參閱基數估計 (CE) 意見反應。 在資料庫相容性層級 160 和更新版本中,預設值為 ON。
PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
參數敏感度計劃 (PSP) 優化可解決參數化查詢的單一快取計劃不適合所有可能的傳入參數值的情況。 這種情況涉及非統一資料散發。 預設值是從資料庫相容性層級 160 開始 ON。 如需詳細資訊,請參閱參數敏感度計畫最佳化。
LEDGER_DIGEST_STORAGE_ENDPOINT = { <端點 URL 字串> |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本
啟用或停用將總帳摘要上傳至 Azure Blob 儲存體的功能。 若要啟用總帳摘要上傳功能,請指定 Azure Blob 儲存體帳戶的端點。 若要停用上傳總帳摘要,請將選項值設定為 OFF。 預設值為 OFF。
FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION = { ON |OFF }
適用於:SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
導致 SQL Server 在使用輕量型查詢執行統計資料分析基礎結構,或針對長時間執行的查詢作業疑難排解並執行 sys.dm_exec_query_statistics_xml 時,產生具有 ParameterRuntimeValue 的 Showplan XML 片段。
Important
資料庫 FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION 範圍組態選項並非要持續在生產環境中啟用,但僅供限時疑難解答之用。 使用此資料庫範圍組態選項會導入額外的且可能重要的 CPU 和記憶體額外負荷,因為我們建立具有運行時間參數資訊的 Showplan XML 片段,不論已啟用 sys.dm_exec_query_statistics_xml DMV 或輕量型查詢執行統計數據配置檔基礎結構。
OPTIMIZED_SP_EXECUTESQL = { ON |OFF }
適用於:SQL Server 2025 (17.x)、Azure SQL 資料庫,以及 Microsoft Fabric 中的 SQL 資料庫
啟用或停用編譯批次時 sp_executesql 的編譯串行化行為。 預設值為 OFF。 允許使用 的 sp_executesql 批次序列化編譯過程,可以減少編譯風暴的影響。 編譯風暴是指同時編譯大量查詢,導致效能問題和資源爭用的情況。
當 OPTIMIZED_SP_EXECUTESQLON時,第一次執行sp_executesql會編譯並將其編譯的計劃插入計劃快取中。 其他會話會中止等候編譯鎖定,並在計劃可供使用後重複使用。 這可讓 sp_executesql 像編譯觀點中的預存程式和觸發程式之類的物件。
OPTIONAL_PARAMETER_PLAN_OPTIMIZATION = { ON |OFF }
適用於:SQL Server 2025 (17.x)
啟用或停用 可選參數計畫優化(OPPO) 功能。 預設值為 ON。
啟用時,調適型計劃優化會針對包含選擇性參數的查詢產生多個執行計劃。 這些計劃通常會以下列形式使用述詞來表示:
@p IS NULL AND @p1 IS NOT NULL@p IS NULL OR @p1 IS NOT NULL
此功能可以根據 參數 是否為 NULL,在運行時間選擇更理想的計劃,這可改善查詢的效能,否則可能會預設為這類查詢模式的次佳效能。
預設值是從 ON 資料庫相容性層級 170 開始。
ALLOW_STALE_VECTOR_INDEX = { ON |關掉 }
適用於:Azure SQL 資料庫及 Microsoft Fabric 中的 SQL 資料庫
目前在 Azure SQL 資料庫和 Microsoft Fabric 的 SQL 資料庫中,向量索引會讓資料表變成唯讀。 要讓資料表可寫,請使用 ALLOW_STALE_VECTOR_INDEX 資料庫範圍設定。
ALTER DATABASE SCOPED CONFIGURATION
SET ALLOW_STALE_VECTOR_INDEX = ON;
GO
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'ALLOW_STALE_VECTOR_INDEX';
當資料插入或更新到表格時,向量索引不會被更新。 要刷新向量索引,必須丟棄並重新建立它。
Note
SQL Server 2025(17.x)目前無法提供 ALLOW_STALE_VECTOR_INDEX 資料庫範圍設定選項。
FULLTEXT_INDEX_VERSION
適用於:SQL Server 2025(17.x)及更新版本、Azure SQL 資料庫,以及 Azure SQL 管理實例
設定全文索引版本,用於建立或重建索引。 此配置僅在您發出 CREATE FULLTEXT INDEX 新索引的聲明,或 ALTER FULLTEXT CATALOG ... REBUILD 重新建立目錄中所有索引的聲明時生效。
截至 SQL Server 2025(17.x),可用版本如下:
| 版本 | Comments |
|---|---|
1 |
規範使用來自 SQL Server 2022(16.x)及更早版本的舊有全文過濾器與字斷字元件的新及重建索引,以供未來族群與查詢使用。 由於這些元件已不再包含在 SQL Server 2025(17.x)及之後版本中,必須手動從舊實例複製。 |
2 (預設值) |
規範使用SQL Server 2025(17.x)內建的全文過濾器與字斷字元件的新及重建索引,以供未來族群與查詢使用。 |
該 FULLTEXT_INDEX_VERSION 組態同時控制以下系統儲存程序、檢視與函式報告並使用的全文元件:
- sp_help_fulltext_system_components
- sys.fulltext_languages
- sys.fulltext_document_types
- sys.dm_fts_parser
PREVIEW_FEATURES = { 開 |關閉 }
適用於:SQL Server 2025 (17.x)
允許使用預覽功能。 若要深入瞭解,請檢閱 SQL Server 中的預覽功能。
預設值為 OFF。
如需如何使用此選項的範例,請參閱在 SQL Server 中使用預覽功能。
謹慎
不建議將預覽功能用於生產環境。
Permissions
資料庫上需要 ALTER ANY DATABASE SCOPED CONFIGURATION。 可由擁有資料庫 CONTROL 權限的使用者授與此權限。
Remarks
雖然您可以設定讓次要資料庫擁有與其主要資料庫不同的範圍組態設定,但所有次要資料庫都會使用相同的組態。 無法為個別次要複本設定不同的設定。
執行此陳述式會清除目前資料庫中的程序快取,這意謂著所有查詢都必須重新編譯。
對於三部分名稱查詢,則會接受查詢目前資料庫連接設定,但 SQL 模組(例如程式、函式和觸發程式)的設定是在另一個資料庫內容中編譯,因此會使用其所在的資料庫選項。 同樣地,以異步方式更新統計數據時,會接受統計數據所在的資料庫設定 ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY 。
ALTER_DATABASE_SCOPED_CONFIGURATION 事件會以 DDL 事件的形式新增,可用來引發 DDL 觸發程序,且是 ALTER_DATABASE_EVENTS 觸發程序群組的子觸發程序。
還原或附加指定的資料庫時,資料庫範圍組態設定會延續並保留在資料庫。
從 Azure SQL Database 和 Azure SQL 受控實例中的 SQL Server 2019 (15.x)開始,某些選項名稱已變更:
-
DISABLE_INTERLEAVED_EXECUTION_TVF變更為INTERLEAVED_EXECUTION_TVF -
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK變更為BATCH_MODE_MEMORY_GRANT_FEEDBACK -
DISABLE_BATCH_MODE_ADAPTIVE_JOINS變更為BATCH_MODE_ADAPTIVE_JOINS
檢查資料庫範圍組態選項的狀態
若要檢查資料庫中的組態是否已啟用 (1) 或已停用 (0),您可以查詢 sys.database_scoped_configurations。 例如,若要檢查值是否有 LEGACY_CARDINALITY_ESTIMATION 請使用如下所示的查詢:
USE <user_database>;
SELECT
name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'LEGACY_CARDINALITY_ESTIMATION';
Limitations
MAXDOP
細微的設定可以覆寫全域設定,而資源管理員則可以設定所有其他 MAXDOP 設定的限制。 以下是設定的 MAXDOP 邏輯:
查詢提示會覆寫
sp_configure和資料庫範圍設定。 如果已針對工作負載群組設定資源群組 MAXDOP:如果查詢提示設為零(0),則會被資源管理員設定覆蓋。
如果查詢提示不是零(0),則會被資源管理員設定限制。
資料庫範圍的設定(除非是零)會覆寫設定,
sp_configure除非有查詢提示,且會被資源管理員設定限制。資源總督設定會覆蓋設定。
sp_configure
QUERY_OPTIMIZER_HOTFIXES
使用 QUERYTRACEON 提示來啟用 SQL Server 7.0 到 SQL Server 2012 (11.x) 版本的預設查詢最佳化工具或查詢最佳化工具 Hotfix 時,查詢提示與資料庫範圍組態設定之間會是 OR 條件;也就是說,不論啟用其中哪一個,都會套用資料庫範圍設定選項。
地理複製災難復原(DR)
可讀的次要資料庫(Always On 可用性群組、Azure SQL 資料庫及 Azure SQL 管理實例地理複製資料庫)會透過檢查資料庫狀態來使用次要值。 雖然重編譯不會在故障轉移時發生,且技術上新主節點的查詢是使用次要設定,但主要和次要設定只有在工作負載不同時才會改變。 因此,快取的查詢使用了最佳設定,而新查詢則選擇適合它們的新設定。
DacFx
此功能 ALTER DATABASE SCOPED CONFIGURATION 可在 SQL Server 2016(13.x)及更新版本、Azure SQL 資料庫及 Azure SQL 管理實例中取得。 因為會影響資料庫結構,結構的匯出(無論有沒有資料)無法匯入 SQL Server 2014(12.x)及更早版本。 例如,從使用 SQL 資料庫或 SQL Server 2016(13.x)資料庫匯出到 DACPAC 或 BACPAC 的資料庫,若使用此功能,則無法匯入底層伺服器。
ELEVATE_ONLINE
此選項僅適用於支援 WITH (ONLINE = <syntax>) 的 DDL 陳述式。 XML 索引不會受到影響。
ELEVATE_RESUMABLE
此選項僅適用於支援 WITH (RESUMABLE = <syntax>) 的 DDL 陳述式。 XML 索引不會受到影響。
Metadata
sys.database_scoped_configurations系統檢視提供資料庫中範圍設定的資訊。 資料庫範圍的設定選項只會在伺服器整體預設設定的覆寫中出現 sys.database_scoped_configurations 。
sys.configurations 系統檢視只顯示伺服器範圍的設定。
Examples
這些範例示範如何使用 ALTER DATABASE SCOPED CONFIGURATION。
A. 授予許可權
這個範例會執行 ALTER DATABASE SCOPED CONFIGURATION 所需的權限授與使用者 Joe。
GRANT ALTER ANY DATABASE SCOPED CONFIGURATION TO [Joe];
B. 設定 MAXDOP
此範例會在異地複寫案例中,針對主要資料庫設定 MAXDOP = 1,並針對次要資料庫設定 MAXDOP = 4。
ALTER DATABASE SCOPED CONFIGURATION
SET MAXDOP = 1;
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET MAXDOP = 4;
這個範例將次要資料庫的 MAXDOP 設定為與其在地理複製情境下主要資料庫的設定相同。
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET MAXDOP = PRIMARY;
C. 設定LEGACY_CARDINALITY_ESTIMATION
本範例會將 LEGACY_CARDINALITY_ESTIMATION 設定為異地複寫案例中輔助資料庫的 ON。
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET LEGACY_CARDINALITY_ESTIMATION = ON;
此範例 LEGACY_CARDINALITY_ESTIMATION 設定為次要資料庫,因為在地理複製情境下,該資料庫已在主資料庫上。
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET LEGACY_CARDINALITY_ESTIMATION = PRIMARY;
D. 設定PARAMETER_SNIFFING
本範例會將異地復寫案例中主資料庫的 PARAMETER_SNIFFING 設定為 OFF。
ALTER DATABASE SCOPED CONFIGURATION
SET PARAMETER_SNIFFING = OFF;
本範例會將 PARAMETER_SNIFFING 設定為異地複寫案例中輔助資料庫的 OFF。
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET PARAMETER_SNIFFING = OFF;
此範例 PARAMETER_SNIFFING 設定為次要資料庫,因為在地理複製情境下,該資料庫已在主資料庫上。
ALTER DATABASE SCOPED CONFIGURATION
FOR SECONDARY
SET PARAMETER_SNIFFING = PRIMARY;
E. 設定QUERY_OPTIMIZER_HOTFIXES
將 QUERY_OPTIMIZER_HOTFIXES 設定為異地復寫案例中主資料庫的 ON。
ALTER DATABASE SCOPED CONFIGURATION
SET QUERY_OPTIMIZER_HOTFIXES = ON;
F. 清除程序快取
此範例會清除程序快取 (可能僅適用於主要資料庫)。
ALTER DATABASE SCOPED CONFIGURATION
CLEAR PROCEDURE_CACHE;
G. 設定IDENTITY_CACHE
適用於:SQL Server 2017 (14.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
此範例會停用識別快取。
ALTER DATABASE SCOPED CONFIGURATION
SET IDENTITY_CACHE = OFF;
H. 設定OPTIMIZE_FOR_AD_HOC_WORKLOADS
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
此範例會允許在第一次編譯批次時,將已編譯的計劃虛設常式儲存在快取中。
ALTER DATABASE SCOPED CONFIGURATION
SET OPTIMIZE_FOR_AD_HOC_WORKLOADS = ON;
I. 設定ELEVATE_ONLINE
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
本範例會將 ELEVATE_ONLINE 設定為 FAIL_UNSUPPORTED。
ALTER DATABASE SCOPED CONFIGURATION
SET ELEVATE_ONLINE = FAIL_UNSUPPORTED;
J. 設定ELEVATE_RESUMABLE
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
本範例會將 ELEVATE_RESUMABLE 設定為 WHEN_SUPPORTED。
ALTER DATABASE SCOPED CONFIGURATION
SET ELEVATE_RESUMABLE = WHEN_SUPPORTED;
K. 從計畫快取清除查詢計劃
適用於:SQL Server 2019 (15.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例
此範例會從程式快取清除特定計劃:
ALTER DATABASE SCOPED CONFIGURATION
CLEAR PROCEDURE_CACHE 0x06000500F443610F003B7CD12C02000001000000000000000000000000000000000000000000000000000000;
L. 設定暫停的持續時間
適用於:Azure SQL Database 與 Azure SQL 受控執行個體
此範例會將可繼續索引的暫停持續時間設定為 60 分鐘。
ALTER DATABASE SCOPED CONFIGURATION
SET PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES = 60;
M. 啟用及停用總帳摘要上傳功能
適用於:SQL Server 2022 (16.x) 和更新版本
此範例會啟用將總帳摘要上傳至 Azure 儲存體帳戶的功能。
ALTER DATABASE SCOPED CONFIGURATION
SET LEDGER_DIGEST_STORAGE_ENDPOINT = 'https://mystorage.blob.core.windows.net';
此範例會停用總帳摘要上傳功能。
ALTER DATABASE SCOPED CONFIGURATION
SET LEDGER_DIGEST_STORAGE_ENDPOINT = OFF;
N. 啟用預覽功能
啟用在 預覽中使用功能的功能。
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'PREVIEW_FEATURES';
O. 讓向量索引變得過時
在 Azure SQL 和 Fabric SQL 中,目前的公開預覽狀態下,向量索引會讓資料表變成唯讀。 為了讓資料表可寫,請啟用以下資料庫範圍的設定:
ALTER DATABASE SCOPED CONFIGURATION
SET ALLOW_STALE_VECTOR_INDEX = ON;
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'ALLOW_STALE_VECTOR_INDEX';
當資料插入或更新到表格時,向量索引不會被更新。 要刷新向量索引,必須丟棄並重新建立它。
此設定選項目前在 SQL Server 2025(17.x)中尚未提供。
其他資源
MAXDOP 資源
LEGACY_CARDINALITY_ESTIMATION資源
- 基數估計 (SQL Server)
- Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimator (使用 SQL Server 2014 基數估算程式最佳化您的查詢計劃)