适用于: Microsoft Fabric 中的 SQL Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
SQL 数据库
使用此命令在 单个数据库 级别启用多个数据库配置设置。
Note
许多 ALTER DATABASE 操作会使受影响数据库的计划缓存失效,包括数据库选项、排序、兼容性级别、数据库范围配置和文件组属性的变更。 操作清除计划缓存后,后续的查询执行需要重新编译,这可能会影响系统性能。
Important
SQL 数据库引擎的不同版本和平台支持不同的 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 语句启用或禁用默认可恢复选项。 - 在 SQL 数据库功能中启用或禁用智能查询处理。
- 启用或禁用加速计划强制实施。
- 启用或禁用全局临时表的自动删除功能。
- 启用或禁用轻型查询分析基础结构。
- 启用或禁用新的
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 数据库、Microsoft Fabric 中的 SQL 数据库和 Azure SQL 托管实例的语法:
ALTER DATABASE SCOPED CONFIGURATION
{
{ [ FOR SECONDARY ] SET <set_options> }
}
| CLEAR PROCEDURE_CACHE [plan_handle]
| SET < set_options >
[;]
< set_options > ::=
{
ACCELERATED_PLAN_FORCING = { ON | OFF }
| ALLOW_BUILTIN_TVF_IN_ALL_COMPAT_LEVELS = { ON | OFF }
| ALLOW_STALE_VECTOR_INDEX = { ON | OFF }
| ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY = { ON | OFF }
| BATCH_MODE_ADAPTIVE_JOINS = { ON | OFF }
| BATCH_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }
| BATCH_MODE_ON_ROWSTORE = { ON | OFF }
| CE_FEEDBACK = { ON | OFF }
| DEFERRED_COMPILATION_TV = { ON | OFF }
| DOP_FEEDBACK = { ON | OFF }
| ELEVATE_ONLINE = { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }
| ELEVATE_RESUMABLE = { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }
| EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS = { ON | OFF }
| FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION = { ON | OFF }
| FULLTEXT_INDEX_VERSION = <version>
| IDENTITY_CACHE = { ON | OFF }
| INTERLEAVED_EXECUTION_TVF = { ON | OFF }
| ISOLATE_SECURITY_POLICY_CARDINALITY = { ON | OFF }
| GLOBAL_TEMPORARY_TABLE_AUTO_DROP = { ON | OFF }
| LAST_QUERY_PLAN_STATS = { ON | OFF }
| LEDGER_DIGEST_STORAGE_ENDPOINT = { <endpoint URL string> | OFF }
| LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY }
| LIGHTWEIGHT_QUERY_PROFILING = { ON | OFF }
| MAXDOP = { <value> | PRIMARY }
| MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = { ON | OFF }
| MEMORY_GRANT_FEEDBACK_PERSISTENCE = { ON | OFF }
| OPTIMIZE_FOR_AD_HOC_WORKLOADS = { ON | OFF }
| OPTIMIZED_PLAN_FORCING = { ON | OFF }
| OPTIMIZED_SP_EXECUTESQL = { ON | OFF }
| OPTIONAL_PARAMETER_OPTIMIZATION = { ON | OFF }
| PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = { ON | OFF }
| PARAMETER_SNIFFING = { ON | OFF | PRIMARY }
| PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES = <time>
| PREVIEW_FEATURES = { ON | OFF }
| QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY }
| READABLE_SECONDARY_TEMPORARY_STATS_AUTO_CREATE = { ON | OFF | PRIMARY }
| READABLE_SECONDARY_TEMPORARY_STATS_AUTO_UPDATE = { ON | OFF | PRIMARY }
| ROW_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }
| TSQL_SCALAR_UDF_INLINING = { ON | OFF }
| VERBOSE_TRUNCATION_WARNINGS = { ON | OFF }
| XTP_PROCEDURE_EXECUTION_STATISTICS = { ON | OFF }
| XTP_QUERY_EXECUTION_STATISTICS = { ON | OFF }
}
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 托管实例中可以指定查询计划句柄。
SET 选项
ACCELERATED_PLAN_FORCING = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
启用经过优化的查询计划强制实施机制,这适用于所有形式的计划强制实施,例如查询存储强制实施计划、自动优化或 USE PLAN 查询提示。 默认值为 ON。
Note
不建议禁用加速计划强制。
ALLOW_BUILTIN_TVF_IN_ALL_COMPAT_LEVELS = { ON |不对 }
适用于:Microsoft Fabric 中的 Azure SQL 数据库和 SQL 数据库
ALLOW_BUILTIN_TVF_IN_ALL_COMPAT_LEVELS数据库范围的配置目前处于预览阶段。
启用后,无论数据库兼容性如何,都可以使用以下内置的表值函数(TVF):
禁用后,内置的TVF仅会被识别为从特定兼容性级别开始的版本,具体描述见每个功能的文档文章。
ALLOW_STALE_VECTOR_INDEX = { ON |不对 }
适用于:Microsoft Fabric 中的 Azure SQL 数据库和 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';
在 ALLOW_STALE_VECTOR_INDEX = ON插入或更新表中的新数据时,矢量索引不会更新。 要刷新向量索引,必须丢弃并重新创建它。
Note
ALLOW_STALE_VECTOR_INDEX数据库范围配置选项目前在 SQL Server 2025(17.x)中不可用。
ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
如果启用异步统计信息更新,则启用此配置会导致后台请求更新统计信息以等待 Sch-M 低优先级队列上的锁。 此等待可避免在高并发方案中阻止其他会话。 有关详细信息,请参阅 AUTO_UPDATE_STATISTICS_ASYNC。 默认值为 OFF。
BATCH_MODE_ADAPTIVE_JOINS = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用数据库范围内的批处理模式自适应联接,同时仍保持数据库兼容性级别 140 及更高。 默认值为 ON。 批处理模式自适应联接是 SQL Server 2017 (14.x) 中推出的智能查询处理的一个功能。
对于数据库兼容性级别 130 或更低版本,此数据库范围的配置不起作用。
BATCH_MODE_MEMORY_GRANT_FEEDBACK = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用数据库范围内的批处理模式内存授予反馈,同时仍保持数据库兼容性级别 140 及更高。 默认值为 ON。 SQL Server 2017 (14.x) 中引入的批处理模式内存授予反馈是智能查询处理功能套件的一部分。 有关详细信息,请参阅内存授予反馈。
对于数据库兼容性级别 130 或更低版本,此数据库范围的配置不起作用。
BATCH_MODE_ON_ROWSTORE = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
在数据库范围内启用或禁用行存储上的批处理模式,同时仍保持数据库兼容性级别 150 及更高。 默认值为 ON。 行存储上的批处理模式是智能查询处理功能系列中的一个功能。
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
CE_FEEDBACK = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
CE 反馈解决了使用默认 CE(CE120 或更高版本)时由不正确的 CE 模型假设导致的回归问题。 CE 反馈可以选择性地使用不同的模型假设。 需要启用查询存储,并且处于 READ_WRITE 模式。 有关详细信息,请参阅基数估计 (CE) 反馈。 默认为数据库兼容性级别 160 及更高级别的 ON。
DEFERRED_COMPILATION_TV = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用数据库范围内的表变量延迟编译,同时保持数据库兼容性级别 150 或更高版本。 默认值为 ON。 表变量延迟编译是 智能查询处理 功能系列的一部分的功能。
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
DOP_FEEDBACK = { ON |OFF }
适用于:SQL Server 2022(16.x)及更高版本、Azure SQL 数据库、Microsoft Fabric 中的 SQL 数据库、SQL 托管实例和 SQL Server 2025 或 Always-up-to-date更新策略
根据运行时间和等待标识重复查询的并行度低效率。 如果并行度使用率效率低下,DOP 反馈会降低执行查询的 DOP,从配置的任何作都减少 DOP,并验证它是否有帮助。 需要启用查询存储,并且处于 READ_WRITE 模式。 有关详细信息,请参阅 并行度(DOP)反馈。 默认值为 OFF。
ELEVATE_ONLINE = { OFF |WHEN_SUPPORTED |FAIL_UNSUPPORTED }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
允许你选择选项,使引擎自动将支持的操作提升为联机。
此选项仅适用于支持 WITH (ONLINE = <syntax>) 的 DDL 语句。 XML 索引不受影响。
默认值为 OFF,这意味着除非在语句中指定,否则作不会提升为联机作。
sys.database_scoped_configurations 反映 ELEVATE_ONLINE的当前值。 这些选项仅适用于联机支持的作。 通过提交指定了 ONLINE 选项的语句,可替代默认设置。
FAIL_UNSUPPORTED
此值可将所有支持的 DDL 操作提升为 ONLINE。 不支持联机执行的作失败并引发错误。
一般情况下,向表中添加列是一项联机操作。 在某些情况下,例如,添加不可为 null 的列时,无法联机添加列。 在这些情况下,如果 FAIL_UNSUPPORTED 已设置,作将失败。
WHEN_SUPPORTED
此值可提升支持 ONLINE 的操作。 不支持联机的作将脱机运行。
有关详细信息,请参阅 联机索引作指南。
ELEVATE_RESUMABLE = { 关闭 |WHEN_SUPPORTED |FAIL_UNSUPPORTED}
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
允许你选择选项,使引擎自动将支持的操作提升为可恢复。
此选项仅适用于支持 WITH (RESUMABLE = <syntax>) 的 DDL 语句。 XML 索引不受影响。
默认值为 OFF,这意味着除非在语句中指定,否则作不会提升为可恢复。
sys.database_scoped_configurations 反映 ELEVATE_RESUMABLE的当前值。 这些选项只适用于支持可恢复的操作。 通过提交指定了 RESUMABLE 选项的语句,可替代默认设置。
FAIL_UNSUPPORTED
此值将所有支持的 DDL作提升为 RESUMABLE。 不支持可恢复执行的作失败并引发错误。
WHEN_SUPPORTED
此值提升支持 RESUMABLE的作。 不支持可恢复的作不可恢复运行。
有关详细信息,请参阅 联机索引作指南。
EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
控制标量用户定义函数(UDF)的执行统计信息是否显示在 sys.dm_exec_function_stats 系统视图中。 对于标量为 UDF 密集型的一些密集型工作负荷,收集函数执行统计信息可能会导致明显的性能开销。 可以通过将 ON。
FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
使用轻型查询执行统计信息分析或 sys.dm_exec_query_statistics_xml DMV 对长时间运行的查询进行故障排除时, FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION 会导致 SQL Server 生成包含此 ParameterRuntimeValue数据的 Showplan XML 片段。
Important
不要在生产环境中连续启用 FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION 数据库范围的配置选项。 仅出于时间限制的故障排除目的启用它。 此数据库范围的配置选项增加了额外的和可能重要的 CPU 和内存开销,因为 SQL Server 会创建具有运行时参数信息的 Showplan XML 片段,无论 sys.dm_exec_query_statistics_xml 启用 DMV 还是轻型查询执行统计信息配置文件基础结构。
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
IDENTITY_CACHE = { ON |OFF }
适用于:SQL Server 2017 (14.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
在数据库级别启用或禁用标识缓存。 默认值为 ON。 标识缓存可提高 INSERT 具有标识列的表的性能。 若要避免在服务器意外重启或故障转移到辅助服务器时标识列的值存在差距,请禁用该 IDENTITY_CACHE 选项。 此选项类似于现有 跟踪标志 272,但在数据库级别设置。
只能为主要副本设置此选项。 有关详细信息,请参阅标识列。
INTERLEAVED_EXECUTION_TVF = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
在数据库或语句范围内启用或禁用多语句表值函数的交错执行,同时仍保持数据库兼容性级别 140 或更高版本。 默认值为 ON。 交错执行是 Azure SQL 数据库中自适应查询处理的一部分。 有关详细信息,请参阅 智能查询处理。
对于数据库兼容性级别 130 或更低版本,此数据库范围的配置不起作用。
仅在 SQL Server 2017(14.x)中,该选项 INTERLEAVED_EXECUTION_TVF 的名称较旧 DISABLE_INTERLEAVED_EXECUTION_TVF。
ISOLATE_SECURITY_POLICY_CARDINALITY = { ON |OFF}
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
允许您控制 行级安全 (RLS)谓词是否会影响整体用户查询执行计划的基数。 默认值为 OFF。 当 ISOLATE_SECURITY_POLICY_CARDINALITY 开启时,RLS 谓词不会影响执行计划的基数。 例如,假设有一个包含一百万行和一个 RLS 谓词的表,该表将发出查询的特定用户的结果限制为 10 行。 将此数据库范围配置设置为 OFF 时,此谓词的基数估计为 10。 当此数据库范围的配置为 ON 时,查询优化估计为 100 万行。 建议大多数工作负载使用默认值。
GLOBAL_TEMPORARY_TABLE_AUTO_DROP = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
设置 全局临时表的自动删除功能。 默认值为 ON,这意味着当任何会话或任务不使用时,全局临时表会自动删除。 设置为
- 在 Azure SQL 数据库单一数据库和弹性池中,在单个用户数据库中设置此选项。
- 在 SQL Server 和 Azure SQL 托管实例中,在 < a0/> 中
设置此选项。 单个用户数据库中的设置不起作用。
LAST_QUERY_PLAN_STATS = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
允许在 sys.dm_exec_query_plan_stats 中启用或禁用最后一个查询计划统计信息(相当于实际执行计划)的收集。 默认值为 OFF。
LEDGER_DIGEST_STORAGE_ENDPOINT = { <终结点 URL 字符串> |OFF }
适用于:SQL Server 2022(16.x)及以后版本,Azure SQL 数据库
启用或禁用将账本摘要上传到 Azure Blob 存储。 若要启用上传账本摘要,请指定 Azure Blob 存储帐户的终结点。 若要禁用上传账本摘要,请将选项值设置为 OFF。 默认值为 OFF。
LEGACY_CARDINALITY_ESTIMATION = { ON |OFF |PRIMARY }
可用于独立于数据库兼容性级别将查询优化器基数估计模型设置为 SQL Server 2012 或更低版本。 默认值为 OFF,它基于数据库的兼容级别设置查询优化器基数估计模型。 设置为LEGACY_CARDINALITY_ESTIMATION等效于启用ON。
- 若要在查询级别设置此选项,请添加
QUERYTRACEON查询提示。 - 若要使用 Service Pack 1 和更高版本在 SQL Server 2016(13.x)中的查询级别设置此选项,请添加 USE HINT查询提示 ,而不是使用跟踪标志。
PRIMARY
此值仅在辅助数据库位于主数据库时有效,并指定所有辅助数据库上的查询优化器基数估计模型设置是主要数据库设置的值。 如果查询优化器基数估计模型的主要配置发生更改,则辅助数据库上的值会相应地更改。 PRIMARY 是辅助数据库的默认设置。
有关详细信息,请参阅基数估计(SQL Server)。
LIGHTWEIGHT_QUERY_PROFILING = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
允许启用或禁用轻型查询分析基础结构。 轻型查询分析基础结构 (LWP) 比标准分析机制更有效地提供查询性能数据,并且默认启用。 默认值为 ON。
MAXDOP = {<value> |PRIMARY }
<价值>
指定应用于该语句的默认最大并行度 (MAXDOP) 设置。 0 是默认值,指示改为使用服务器配置。 数据库范围的 MAXDOP 覆盖服务器层的 (除非设置为 0),max degree of parallelism会覆盖服务器层的集合。sp_configure 查询提示仍然可以替代数据库作用域内 MAXDOP,以调整需要不同设置的特定查询。 所有这些设置都受工作负载 组的 MAXDOP 限制。
使用 MAXDOP 选项可限制并行计划执行中使用的处理器数。 SQL Server 考虑为查询、索引数据定义语言 (DDL) 操作、并行插入、联机更改列、并行统计信息集合以及静态的和由键集驱动的游标填充实施并行执行计划。
将按任务设置最大并行度 (MAXDOP) 限制。 它不是按请求限制或按查询限制。 这意味着在并行查询执行过程中,单个请求可以生成多个任务,这些任务会分配给 调度器。 有关详细信息,请参阅 线程和任务体系结构指南。
要在实例层面设置此选项,请参见服务器配置:最大并行度。
在 Azure SQL 数据库中,新的单一数据库和弹性池数据库的 MAXDOP 数据库范围的配置默认设置为 8。 有关在 Azure SQL 数据库中以最佳方式配置 MAXDOP 的详细信息和建议,请参阅 在 Azure SQL 数据库中配置 MAXDOP。
- 若要在查询级别设置此选项,请使用
MAXDOP查询提示。 - 若要在服务器级别设置此选项,请使用 最大并行度(MAXDOP)服务器配置选项。
- 若要在工作负荷级别设置此选项,请使用
MAX_DOPResource Governor 工作负荷组配置选项。
PRIMARY
只能为辅助数据库设置辅助数据库,同时在主数据库上,并指示配置是主数据库设置的配置。 如果主数据库的配置更改,辅助数据库上的值也会相应地更改,不需要再显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。
有关详细信息,请参阅 并行度。
MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = { ON |OFF }
适用于:SQL Server 2022(16.x)及更高版本,以及 Azure SQL 数据库
启用或禁用在数据库中启动的所有查询执行的内存授予反馈百分位功能。 默认值为 ON。 有关详细信息,请参阅 Percentile 和持久性模式内存授予反馈。
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
MEMORY_GRANT_FEEDBACK_PERSISTENCE = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用对数据库中启动的所有查询执行启用或禁用内存授予反馈持久性。 默认值为 ON。 有关详细信息,请参阅 Percentile 和持久性模式内存授予反馈。
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
OPTIMIZE_FOR_AD_HOC_WORKLOADS = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
首次编译批处理时,启用或禁用在缓存中存储已编译的计划存根。 默认值为 OFF。 为数据库启用数据库范围配置 OPTIMIZE_FOR_AD_HOC_WORKLOADS 后,首次编译批处理时,数据库会将已编译的计划存根存储在缓存中。 计划存根使用的内存小于完整编译的计划。 如果再次编译或执行批处理,数据库引擎将删除已编译的计划存根,并将其替换为完整的已编译计划。
OPTIMIZED_PLAN_FORCING = { ON |OFF }
适用于:SQL Server 2022(16.x)及以后版本,Azure SQL 数据库
优化计划强制执行减少了重复强制查询的编译开销。 默认值为 ON。 生成查询执行计划后,将存储特定的编译步骤以重复使用作为优化重播脚本。 在查询存储中,优化重播脚本作为压缩的显示计划 XML 的一部分存储在隐藏属性 OptimizationReplay 中。 有关详细信息,请参阅使用查询存储强制执行优化计划。
OPTIMIZED_SP_EXECUTESQL = { ON |OFF }
适用于:SQL Server 2025(17.x)、Azure SQL 数据库以及 Microsoft Fabric 中的 SQL 数据库
启用或禁用编译批处理时 sp_executesql 的编译序列化行为。 默认值为 OFF。 允许批量 sp_executesql 用于序列化编译过程,可以减少编译风暴的影响。 编译风暴是同时编译大量查询,导致性能问题和资源争用的情况。
OPTIMIZED_SP_EXECUTESQL何时ON,首次执行sp_executesql编译并将其编译的计划插入计划缓存中。 其他会话中止等待编译锁,并在计划可用后重复使用该计划。 此行为从编译角度使 sp_executesql 对象(如存储过程和触发器)类似。
OPTIONAL_PARAMETER_OPTIMIZATION = { ON |OFF }
适用于:SQL Server 2025(17.x)、Azure SQL 数据库以及 Microsoft Fabric 中的 SQL 数据库
启用或禁用 可选参数计划优化(OPPO) 功能。 默认值从 ON 数据库兼容性级别 170 开始。
启用后,自适应计划优化会为包含可选参数的查询生成多个执行计划。 这些计划通常以以下形式使用谓词:
@p IS NULL AND @p1 IS NOT NULL@p IS NULL OR @p1 IS NOT NULL
该功能可以根据参数 NULL是否在运行时选择更理想的计划,这可改善可能默认为此类查询模式性能欠佳的查询的性能。
PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = { ON |OFF }
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
参数敏感度计划(PSP)优化解决了参数化查询的单个缓存计划并非针对所有可能的传入参数值的最佳方案。 这种情况发生在非格式数据分布中。 默认值为从数据库兼容性级别 160 开始 ON。 有关详细信息,请参阅参数敏感计划优化。
PARAMETER_SNIFFING = { ON |OFF |PRIMARY }
启用或禁用参数截取。 默认值为 ON。 设置为PARAMETER_SNIFFING等效于启用OFF。
- 若要在查询级别完成此作,请参阅
OPTIMIZE FOR UNKNOWN查询提示。 - 在 SQL Server 2016 (13.x) SP1 及更高版本中,若要在查询级别完成此作,
USE HINT查询提示 也可用。
PRIMARY
此值仅在数据库位于主数据库时对辅助数据库有效。 它指定所有辅助数据库上此设置的值是为主要副本设置的值。 如果主数据库上的配置用于使用 参数探查 更改,则辅助数据库上的值会相应地更改,而无需显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。
有关详细信息PARAMETER_SNIFFING,请参阅“我闻到了参数!
PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES
适用于:SQL Server 2022 (16.x) 及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
该 PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES 选项确定在数据库引擎自动中止索引之前暂停可恢复索引的时间(以分钟为单位)。
- 默认值设置为一天(1,440 分钟)。
- 最短持续时间设置为 1 分钟。
- 最长持续时间为 71,582 分钟。
- 设置为 “
0设置为”时,暂停的作永远不会自动中止。
此选项的当前值显示在 sys.database_scoped_configurations 中。
PREVIEW_FEATURES = { ON |OFF }
适用于:SQL Server 2025 (17.x)、Azure SQL 数据库、Microsoft Fabric 中的 SQL 数据库
注意
不建议在生产环境中使用预览功能。
允许使用预览功能。 若要了解详细信息,请查看 SQL Server 中的预览功能。
默认值为 OFF。
有关如何使用此选项的示例,请参阅 SQL Server 中使用预览功能。
QUERY_OPTIMIZER_HOTFIXES = { ON |OFF |PRIMARY }
适用于:SQL Server 2016(13.x)及以后版本,Azure SQL 数据库,以及 Azure SQL 托管实例
启用或禁用查询优化修补程序,而无论数据库兼容性级别。 默认值为 OFF:禁用在特定版本(RTM 后)的最高可用兼容级别后发布的查询优化修补程序。 设置为QUERY_OPTIMIZER_HOTFIXES等效于启用ON。
- 若要在查询级别设置此选项,请添加
QUERYTRACEON查询提示。 - 若要在 SQL Server 2016(13.x)中的查询级别启用此功能以及 Service Pack 1 及更高版本,请添加 USE HINT 查询提示 ,而不是使用跟踪标志。
使用 QUERYTRACEON 提示启用 SQL Server 7.0 到 SQL Server 2012 (11.x) 版本或查询优化器修补程序的默认查询优化器时,它会在查询提示与数据库范围的配置设置之间创建 OR 条件。 如果启用了任一选项,则应用数据库范围的配置。
PRIMARY
此值仅在数据库位于主数据库时对辅助数据库有效。 它指定所有辅助数据库上此设置的值是为主要副本设置的值。 如果主数据库的配置更改,辅助数据库上的值也会相应地更改,不需要再显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。
有关详细信息 QUERY_OPTIMIZER_HOTFIXES,请参阅 SQL Server 查询优化器修补程序跟踪标志 4199 服务模型。
READABLE_SECONDARY_TEMPORARY_STATS_AUTO_CREATE = { ON |OFF |PRIMARY }
适用于:SQL Server 2025 (17.x) 及更高版本、Azure SQL 数据库、Azure SQL 托管实例AUTD 和 Azure SQL 托管实例2025
启用或禁用为数据库和数据库快照的可读次要副本自动创建 临时统计信息 。
默认值为 ON。
READABLE_SECONDARY_TEMPORARY_STATS_AUTO_UPDATE = { ON |OFF |PRIMARY }
适用于:SQL Server 2025 (17.x) 及更高版本、Azure SQL 数据库、Azure SQL 托管实例AUTD 和 Azure SQL 托管实例2025
启用或禁用数据库的可读次要副本和数据库快照的 临时统计信息 自动更新。
默认值为 ON。
ROW_MODE_MEMORY_GRANT_FEEDBACK = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
在数据库范围内启用或禁用行模式内存授予反馈,同时仍保持数据库兼容性级别 150 或更高版本。 默认值为 ON。 行模式内存授予反馈是 SQL Server 2017(14.x)中引入的 智能查询处理的 一部分。 行模式在 SQL Server 2019 (15.x) 和 Azure SQL 数据库中受支持。 有关内存授予反馈的详细信息,请参阅内存授予反馈。
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
TSQL_SCALAR_UDF_INLINING = { ON |OFF }
适用于:SQL Server 2019(15.x)及以后版本,以及Azure SQL 数据库(功能处于预览阶段)
在数据库范围内启用或禁用 T-SQL 标量 UDF 内联,同时仍保持数据库兼容性级别 150 或更高版本。 默认值为 ON。 T-SQL 标量 UDF 内联属于智能查询处理功能系列的一部分。
Note
对于数据库兼容性级别 140 或更低版本,此数据库范围的配置不起作用。
VERBOSE_TRUNCATION_WARNINGS = { ON |OFF }
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 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 ,并且此数据库范围的配置不起作用。
XTP_PROCEDURE_EXECUTION_STATISTICS = { ON |OFF }
适用范围:Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用对当前数据库的本机编译的 T-SQL 模块在模块级别的执行统计信息收集。 默认值为 OFF。 执行统计信息反映在 sys.dm_exec_procedure_stats 中。
如果该选项为“开”,或通过 sp_xtp_control_proc_exec_stats 启用了统计信息收集,则收集对本机编译的 T-SQL 模块的模块级别执行统计信息。
XTP_QUERY_EXECUTION_STATISTICS = { ON |OFF }
适用范围:Azure SQL 数据库和 Azure SQL 托管实例
启用或禁用对当前数据库的本机编译的 T-SQL 模块语句级别的执行统计信息收集。 默认值为 OFF。 执行统计信息反映在 sys.dm_exec_query_stats 和查询存储中。
如果此选项 ON,或者通过 sp_xtp_control_query_exec_stats启用统计信息收集,则会收集本机编译的 T-SQL 模块的语句级执行统计信息。
有关本机编译 Transact-SQL 模块的性能监视的详细信息,请参阅 “本机编译存储过程的监视性能”。
DW_COMPATIBILITY_LEVEL = { 自动 | 10 | 20 | 30 | 40 | 50 | 9000 }
适用于:仅 Azure Synapse Analytics
将 Transact-SQL 和查询处理行为设置为与指定的数据库引擎版本兼容。 设置后,当查询在该数据库上运行时,它只使用兼容的功能。 在每个兼容性级别,支持各种查询处理增强功能。 每个级别都纳入了上一级别的功能。 首次创建数据库时,其兼容性级别默认设置为 AUTO,这也是建议的设置。 即使在数据库暂停/恢复、备份/还原操作之后,仍保留兼容性级别。 默认值为 AUTO。
| 兼容性级别 | Comments |
|---|---|
AUTO |
Default. Synapse Analytics 引擎会自动更新其值。 它以 0sys.database_scoped_configurations 表示。
AUTO 当前映射到兼容性级别 30 功能。 |
10 |
在引入兼容性级别支持之前,请练习 Transact-SQL 和查询引擎行为。 |
20 |
第一种兼容性级别,包括封闭 Transact-SQL 和查询引擎行为。 此级别支持系统存储过程 sp_describe_undeclared_parameters。 |
30 |
包括新的查询引擎行为。 |
40 |
包括新的查询引擎行为。 |
50 |
该级别支持多列分发。 欲了解更多信息,请参见 CREATE TABLE, ASCREATE TABLE SELECT和 CREATE MATERIAL IZED VIEW AS SELECT。 |
9000 |
预览版兼容性级别。 特定于功能的文档调用在此级别下封闭的预览功能。 此级别还包括最高非9000 级别的能力。 |
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 数据库和 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设置。
地理复制灾难恢复(DR)
可读辅助数据库(AlwaysOn 可用性组、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 ,无法使用此功能导入到下层服务器。
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_SNIFFINGOFF异地复制方案中的主数据库。
ALTER DATABASE SCOPED CONFIGURATION
SET PARAMETER_SNIFFING = OFF;
以下示例设置为PARAMETER_SNIFFINGOFF异地复制方案中的辅助数据库。
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 数据库和 Azure SQL 托管实例
以下示例禁用标识缓存。
ALTER DATABASE SCOPED CONFIGURATION
SET IDENTITY_CACHE = OFF;
H. 设置OPTIMIZE_FOR_AD_HOC_WORKLOADS
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
此示例允许在首次编译批处理时在缓存中存储已编译的计划存根。
ALTER DATABASE SCOPED CONFIGURATION
SET OPTIMIZE_FOR_AD_HOC_WORKLOADS = ON;
I. 设置ELEVATE_ONLINE
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 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 数据库和 Azure SQL 托管实例
本示例将 ELEVATE_RESUMABLE 设置为 WHEN_SUPPORTED。
ALTER DATABASE SCOPED CONFIGURATION
SET ELEVATE_RESUMABLE = WHEN_SUPPORTED;
K. 从计划缓存中清除查询计划
适用于:SQL Server 2019(15.x)及更高版本、Azure SQL 数据库和 Azure SQL 托管实例
此示例从过程缓存中清除特定计划:
ALTER DATABASE SCOPED CONFIGURATION
CLEAR PROCEDURE_CACHE 0x06000500F443610F003B7CD12C02000001000000000000000000000000000000000000000000000000000000;
L. 设置暂停的持续时间
适用范围:Azure SQL 数据库和 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';
在 ALLOW_STALE_VECTOR_INDEX = ON插入或更新表中的新数据时,矢量索引不会更新。 要刷新向量索引,必须丢弃并重新创建它。
此配置选项目前在SQL Server 2025(17.x)中不可用。
相关内容
- sys.database_scoped_configurations
- sys.configurations
- 数据库和文件目录视图 (Transact-SQL)
- 服务器配置选项
- ALTER INDEX (Transact-SQL)
- CREATE INDEX (Transact-SQL)
- Recommendations and guidelines for the "max degree of parallelism" configuration option in SQL Server(适用于 SQL Server 中的“max degree of parallelism”配置选项的建议和指南)
- 联机索引作的工作原理
- 联机执行索引操作
- SQL 数据库中的智能查询处理
- 内存授予反馈
- 基数估计 (CE) 反馈
- 并行度 (DOP) 反馈